@getyoti/react-face-capture 0.2.0 → 0.5.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/CHANGELOG.md +55 -0
- package/README.md +79 -11
- package/index.js +1 -1
- package/package.json +4 -6
- package/vanilla/assets/face-capture/tiny_face_detector_model-shard1 +0 -0
- package/vanilla/assets/face-capture/tiny_face_detector_model-weights_manifest.json +197 -0
- package/vanilla/index.css +1 -0
- package/vanilla/index.js +3 -0
- package/vanilla/index.js.LICENSE.txt +34 -0
- package/vanilla/index.js.map +1 -0
package/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see index.js.LICENSE.txt */
|
|
2
|
-
module.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=53)}([function(t,e,n){"use strict";(function(t,r,o,i){n.d(e,"a",(function(){return dt})),n.d(e,"b",(function(){return xt})),n.d(e,"c",(function(){return Ls})),n.d(e,"d",(function(){return Ku})),n.d(e,"e",(function(){return Ss})),n.d(e,"f",(function(){return _h})),n.d(e,"g",(function(){return qa})),n.d(e,"h",(function(){return gn})),n.d(e,"i",(function(){return Iu})),n.d(e,"j",(function(){return Ou})),n.d(e,"k",(function(){return zs})),n.d(e,"l",(function(){return Ya})),n.d(e,"m",(function(){return zn})),n.d(e,"n",(function(){return pn})),n.d(e,"o",(function(){return hl})),n.d(e,"p",(function(){return wh})),n.d(e,"q",(function(){return Pu})),n.d(e,"r",(function(){return uc})),n.d(e,"s",(function(){return qu})),n.d(e,"t",(function(){return Qs})),n.d(e,"u",(function(){return ns})),n.d(e,"v",(function(){return qn})),n.d(e,"w",(function(){return gc})),n.d(e,"x",(function(){return er})),n.d(e,"y",(function(){return an})),n.d(e,"z",(function(){return Nu})),n.d(e,"A",(function(){return as})),n.d(e,"B",(function(){return Ju})),n.d(e,"C",(function(){return tc})),n.d(e,"D",(function(){return _r})),n.d(e,"E",(function(){return or})),n.d(e,"F",(function(){return ou})),n.d(e,"G",(function(){return rn})),n.d(e,"H",(function(){return sn})),n.d(e,"I",(function(){return un})),n.d(e,"J",(function(){return cn})),n.d(e,"K",(function(){return ln})),n.d(e,"L",(function(){return Pe})),n.d(e,"M",(function(){return ir})),n.d(e,"N",(function(){return xc})),n.d(e,"O",(function(){return sr})),n.d(e,"P",(function(){return fn}));var a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function s(t,e){function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function u(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function s(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){t.done?o(t.value):new n((function(e){e(t.value)})).then(a,s)}u((r=r.apply(t,e||[])).next())}))}function c(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}var l=function(){function t(t){this.global=t,this.flags={},this.flagRegistry={},this.urlFlags={},this.populateURLFlags()}return t.prototype.setPlatform=function(t,e){this.platform,this.platformName=t,this.platform=e},t.prototype.registerFlag=function(t,e,n){if(this.flagRegistry[t]={evaluationFn:e,setHook:n},null!=this.urlFlags[t]){var r=this.urlFlags[t];this.set(t,r)}},t.prototype.get=function(t){return t in this.flags||(this.flags[t]=this.evaluateFlag(t)),this.flags[t]},t.prototype.getNumber=function(t){return this.get(t)},t.prototype.getBool=function(t){return this.get(t)},t.prototype.getFlags=function(){return this.flags},Object.defineProperty(t.prototype,"features",{get:function(){return this.flags},enumerable:!0,configurable:!0}),t.prototype.set=function(t,e){if(null==this.flagRegistry[t])throw new Error("Cannot set flag "+t+" as it has not been registered.");this.flags[t]=e,null!=this.flagRegistry[t].setHook&&this.flagRegistry[t].setHook(e)},t.prototype.evaluateFlag=function(t){if(null==this.flagRegistry[t])throw new Error("Cannot evaluate flag '"+t+"': no evaluation function found.");return this.flagRegistry[t].evaluationFn()},t.prototype.setFlags=function(t){this.flags=Object.assign({},t)},t.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},t.prototype.populateURLFlags=function(){var t=this;if(void 0!==this.global&&void 0!==this.global.location&&void 0!==this.global.location.search){var e,n,r=(e=this.global.location.search,n={},e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return function(t,e,n){t[decodeURIComponent(e)]=decodeURIComponent(n||"")}(n,e[0],e[1]),e.join("=")})),n);"tfjsflags"in r&&r.tfjsflags.split(",").forEach((function(e){var n=e.split(":"),r=n[0],o=n[1];t.urlFlags[r]=function(t,e){if("true"===(e=e.toLowerCase())||"false"===e)return"true"===e;if(""+ +e===e)return+e;throw new Error("Could not parse value flag value "+e+" for flag "+t+".")}(r,o)}))}},t}();function h(){return f}var f=null,p=new Map;function d(t,e){var n=g(t,e);return p.get(n)}function v(t){for(var e=p.entries(),n=[];;){var r=e.next(),o=r.done,i=r.value;if(o)break;var a=i[0],s=i[1];a.split("_")[0]===t&&n.push(s)}return n}function m(t){var e=t.kernelName,n=t.backendName,r=g(e,n);if(p.has(r))throw new Error("The kernel '"+e+"' for backend '"+n+"' is already registered");p.set(r,t)}function g(t,e){return e+"_"+t}function y(t){for(var e=t.length,n=0,r=0;e>0;)r=Math.random()*e|0,n=t[--e],t[e]=t[r],t[r]=n}function b(t,e,n){return Math.max(t,Math.min(e,n))}function x(t){return t%2==0?t:t+1}function w(t){for(var e=0,n=0;n<t.length;n++)e+=t[n];return e}function E(t,e){if(!t)throw new Error("string"==typeof e?e:e())}function C(t,e,n){void 0===n&&(n=""),E(k(t,e),(function(){return n+" Shapes "+t+" and "+e+" must match"}))}function _(t){E(null!=t,(function(){return"The input to the tensor constructor must be a non-null value."}))}function R(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=!1),null==e&&(e=[]),Array.isArray(t)||j(t)&&!n)for(var r=0;r<t.length;++r)R(t[r],e,n);else e.push(t);return e}function I(t){if(0===t.length)return 1;for(var e=t[0],n=1;n<t.length;n++)e*=t[n];return e}function k(t,e){if(t===e)return!0;if(null==t||null==e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function S(t){return t%1==0}function A(t){if(null!=Math.tanh)return Math.tanh(t);if(t===1/0)return 1;if(t===-1/0)return-1;var e=Math.exp(2*t);return(e-1)/(e+1)}function O(t){var e=Math.ceil(Math.sqrt(t));return[e,Math.ceil(t/e)]}function D(t,e){return e<=t.length?t:t+" ".repeat(e-t.length)}function T(t,e,n){return void 0===e&&(e=function(t){return 0}),new Promise((function(r,o){var i=0,a=function(){if(t())r();else{var s=e(++i);null!=n&&i>=n?o():setTimeout(a,s)}};a()}))}function N(t,e){for(var n=1,r=-1,o=0;o<t.length;++o)if(t[o]>=0)n*=t[o];else if(-1===t[o]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+o);r=o}else if(t[o]<0)throw Error("Shapes can not be < 0. Found "+t[o]+" at dim "+o);if(-1===r){if(e>0&&e!==n)throw Error("Size("+e+") must match the product of shape "+t);return t}if(0===n)throw Error("Cannot infer the missing size in ["+t+"] when there are 0 elements");if(e%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+e+" / "+n);var i=t.slice();return i[r]=e/n,i}function F(t,e){var n=e.length;return E((t=null==t?e.map((function(t,e){return e})):[].concat(t)).every((function(t){return t>=-n&&t<n})),(function(){return"All values in axis param must be in range [-"+n+", "+n+") but got axis "+t})),E(t.every((function(t){return S(t)})),(function(){return"All values in axis param must be integers but got axis "+t})),t.map((function(t){return t<0?n+t:t}))}function M(t,e){for(var n=[],r=[],o=null!=e&&Array.isArray(e)&&0===e.length,i=null==e||o?null:F(e,t).sort(),a=0,s=0;s<t.length;++s){if(null!=i){if(i[a]===s&&1!==t[s])throw new Error("Can't squeeze axis "+s+" since its dim '"+t[s]+"' is not 1");(null==i[a]||i[a]>s)&&1===t[s]&&(n.push(t[s]),r.push(s)),i[a]<=s&&a++}1!==t[s]&&(n.push(t[s]),r.push(s))}return{newShape:n,keptDims:r}}function P(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else{if("bool"!==t)throw new Error("Unknown data type "+t);n=new Uint8Array(e)}return n}function B(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else if("bool"===t)n=new Uint8Array(e);else{if("string"!==t)throw new Error("Unknown data type "+t);n=new Array(e)}return n}function L(t,e){for(var n=0;n<t.length;n++){var r=t[n];if(isNaN(r)||!isFinite(r))throw Error("A tensor of type "+e+" being uploaded contains "+r+".")}}function W(t){return"bool"===t||"complex64"===t||"float32"===t||"int32"===t||"string"===t}function U(t,e){return!("complex64"===e||"float32"===e&&"complex64"!==t||"int32"===e&&"float32"!==t&&"complex64"!==t||"bool"===e&&"bool"===t)}function j(t){return t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array}function z(t){if("float32"===t||"int32"===t)return 4;if("complex64"===t)return 8;if("bool"===t)return 1;throw new Error("Unknown dtype "+t)}function V(t){if(null==t)return 0;var e=0;return t.forEach((function(t){return e+=t.length})),e}function G(t){return"string"==typeof t||t instanceof String}function H(t){return"boolean"==typeof t}function q(t){return"number"==typeof t}function K(t){return Array.isArray(t)?K(t[0]):t instanceof Float32Array?"float32":t instanceof Int32Array||t instanceof Uint8Array?"int32":q(t)?"float32":G(t)?"string":H(t)?"bool":"float32"}function X(t){return!!(t&&t.constructor&&t.call&&t.apply)}function $(t,e){for(var n=e;n<t;++n)if(t%n==0)return n;return t}function Y(t){var e=t.length;if(e<2)return[];var n=new Array(e-1);n[e-2]=t[e-1];for(var r=e-3;r>=0;--r)n[r]=n[r+1]*t[r+1];return n}function J(t,e,n){if("string"===e)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(t)&&(t=R(t)),n&&L(t,e),function(t,e){return t instanceof Float32Array&&"float32"===e||t instanceof Int32Array&&"int32"===e||t instanceof Uint8Array&&"bool"===e}(t,e))return t;if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e){for(var r=new Uint8Array(t.length),o=0;o<r.length;++o)0!==Math.round(t[o])&&(r[o]=1);return r}throw new Error("Unknown data type "+e)}function Q(t,e){if(0===t.length)return e[0];var n=t.reduce((function(t,e){return t*e}));if(0===n)return[];if(n!==e.length)throw new Error("["+t+"] does not match the input size.");return function t(e,n,r){var o=new Array;if(1===n.length)for(var i=n[0],a=0;a<i;a++)o[a]=r[e+a];else{i=n[0];var s=n.slice(1),u=s.reduce((function(t,e){return t*e}));for(a=0;a<i;a++)o[a]=t(e+a*u,s,r)}return o}(0,t,e)}function Z(t,e){for(var n=tt(t,e),r=0;r<n.length;r++)n[r]=1;return n}function tt(t,e){if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e)return new Uint8Array(t);throw new Error("Unknown data type "+e)}function et(){return h().platform.now()}function nt(t){t.forEach((function(e){E(Number.isInteger(e)&&e>=0,(function(){return"Tensor must have a shape comprised of positive integers but got shape ["+t+"]."}))}))}function rt(t,e){return void 0===e&&(e="utf-8"),e=e||"utf-8",h().platform.encode(t,e)}function ot(t,e){return void 0===e&&(e="utf-8"),e=e||"utf-8",h().platform.decode(t,e)}Object.freeze({shuffle:y,clamp:b,nearestLargerEven:x,sum:w,randUniform:function(t,e){var n=Math.random();return e*n+(1-n)*t},distSquared:function(t,e){for(var n=0,r=0;r<t.length;r++){var o=Number(t[r])-Number(e[r]);n+=o*o}return n},assert:E,assertShapesMatch:C,assertNonNull:_,flatten:R,sizeFromShape:I,isScalarShape:function(t){return 0===t.length},arraysEqual:k,isInt:S,tanh:A,sizeToSquarishShape:O,createShuffledIndices:function(t){for(var e=new Uint32Array(t),n=0;n<t;++n)e[n]=n;return y(e),e},rightPad:D,repeatedTry:T,inferFromImplicitShape:N,parseAxisParam:F,squeezeShape:M,getTypedArrayFromDType:P,getArrayFromDType:B,checkConversionForErrors:L,isValidDtype:W,hasEncodingLoss:U,isTypedArray:j,bytesPerElement:z,bytesFromStringArray:V,isString:G,isBoolean:H,isNumber:q,inferDtype:K,isFunction:X,nearestDivisor:$,computeStrides:Y,toTypedArray:J,toNestedArray:Q,makeOnesTypedArray:Z,makeZerosTypedArray:tt,now:et,assertNonNegativeIntegerDimensions:nt,fetch:function(t,e){return h().platform.fetch(t,e)},encodeString:rt,decodeString:ot});var it=function(){function t(t,e){this.backendTimer=t,this.logger=e,null==e&&(this.logger=new at)}return t.prototype.profileKernel=function(t,e,n){var r,o=this,i=this.backendTimer.time((function(){r=n()}));return r.forEach((function(n){n.data().then((function(r){!function(t,e,n){if("float32"!==e)return!1;for(var r=0;r<t.length;r++){var o=t[r];if(isNaN(o)||!isFinite(o))return!0}}(r,n.dtype),i.then((function(i){var a="";null!=i.getExtraProfileInfo&&(a=i.getExtraProfileInfo()),o.logger.logKernelProfile(t,n,r,i.kernelMs,e,a)}))}))})),r},t}(),at=function(){function t(){}return t.prototype.logKernelProfile=function(t,e,n,r,o,i){D(r+"ms",9),D(t,25),e.rank,e.size,D(e.shape.toString(),14);for(var a in o){var s=o[a].shape,u=s.length;a+": "+u+"D "+(u>0?s:"")+" "}},t}();function st(t,e,n){return D(Array.isArray(t)?parseFloat(t[0].toFixed(7))+" + "+parseFloat(t[1].toFixed(7))+"j":G(t)?"'"+t+"'":"bool"===n?ut(t):parseFloat(t.toFixed(7)).toString(),e)}function ut(t){return 0===t?"false":"true"}function ct(t){for(var e=[],n=0;n<t.length;n+=2)e.push([t[n],t[n+1]]);return e}var lt=function(){function t(t,e,n){var r=this;if(this.dtype=e,this.shape=t.slice(),this.size=I(t),null!=n){var o=n.length;E(o===this.size,(function(){return"Length of values '"+o+"' does not match the size inferred by the shape '"+r.size+"'."}))}if("complex64"===e)throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||B(e,this.size),this.strides=Y(t)}return t.prototype.set=function(t){for(var e=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];0===n.length&&(n=[0]),E(n.length===this.rank,(function(){return"The number of provided coordinates ("+n.length+") must match the rank ("+e.rank+")"}));var o=this.locToIndex(n);this.values[o]=t},t.prototype.get=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];0===t.length&&(t=[0]);for(var n=0,r=0,o=t;r<o.length;r++){var i=o[r];if(i<0||i>=this.shape[n]){var a="Requested out of range element at "+t+". Buffer shape="+this.shape;throw new Error(a)}n++}for(var s=t[t.length-1],u=0;u<t.length-1;++u)s+=this.strides[u]*t[u];return this.values[s]},t.prototype.locToIndex=function(t){if(0===this.rank)return 0;if(1===this.rank)return t[0];for(var e=t[t.length-1],n=0;n<t.length-1;++n)e+=this.strides[n]*t[n];return e},t.prototype.indexToLoc=function(t){if(0===this.rank)return[];if(1===this.rank)return[t];for(var e=new Array(this.shape.length),n=0;n<e.length-1;++n)e[n]=Math.floor(t/this.strides[n]),t-=e[n]*this.strides[n];return e[e.length-1]=t,e},Object.defineProperty(t.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.toTensor=function(){return ht().makeTensor(this.values,this.shape,this.dtype)},t}(),ht=null,ft=null,pt=null,dt=function(){function t(t,e,n,r){this.kept=!1,this.isDisposedInternal=!1,this.shape=t.slice(),this.dtype=e||"float32",this.size=I(t),this.strides=Y(t),this.dataId=n,this.id=r,this.rankType=this.rank<5?this.rank.toString():"higher"}return t.prototype.flatten=function(){return this.throwIfDisposed(),this.as1D()},t.prototype.asScalar=function(){return this.throwIfDisposed(),E(1===this.size,(function(){return"The array must have only 1 element."})),this.reshape([])},t.prototype.as1D=function(){return this.throwIfDisposed(),this.reshape([this.size])},t.prototype.as2D=function(t,e){return this.throwIfDisposed(),this.reshape([t,e])},t.prototype.as3D=function(t,e,n){return this.throwIfDisposed(),this.reshape([t,e,n])},t.prototype.as4D=function(t,e,n,r){return this.throwIfDisposed(),this.reshape([t,e,n,r])},t.prototype.as5D=function(t,e,n,r,o){return this.throwIfDisposed(),this.reshape([t,e,n,r,o])},t.prototype.asType=function(t){return this.throwIfDisposed(),ft.cast(this,t)},Object.defineProperty(t.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.buffer=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,ft.buffer(this.shape,this.dtype,t)]}}))}))},t.prototype.bufferSync=function(){return ft.buffer(this.shape,this.dtype,this.dataSync())},t.prototype.array=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,Q(this.shape,t)]}}))}))},t.prototype.arraySync=function(){return Q(this.shape,this.dataSync())},t.prototype.data=function(){return u(this,void 0,void 0,(function(){var t,e;return c(this,(function(n){switch(n.label){case 0:return this.throwIfDisposed(),t=ht().read(this.dataId),"string"!==this.dtype?[3,2]:[4,t];case 1:e=n.sent();try{return[2,e.map((function(t){return ot(t)}))]}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}n.label=2;case 2:return[2,t]}}))}))},t.prototype.dataSync=function(){this.throwIfDisposed();var t=ht().readSync(this.dataId);if("string"===this.dtype)try{return t.map((function(t){return ot(t)}))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return t},t.prototype.bytes=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return this.throwIfDisposed(),[4,ht().read(this.dataId)];case 1:return t=e.sent(),"string"===this.dtype?[2,t]:[2,new Uint8Array(t.buffer)]}}))}))},t.prototype.dispose=function(){this.isDisposed||(ht().disposeTensor(this),this.isDisposedInternal=!0)},Object.defineProperty(t.prototype,"isDisposed",{get:function(){return this.isDisposedInternal},enumerable:!0,configurable:!0}),t.prototype.throwIfDisposed=function(){if(this.isDisposed)throw new Error("Tensor is disposed.")},t.prototype.toFloat=function(){return this.asType("float32")},t.prototype.toInt=function(){return this.asType("int32")},t.prototype.toBool=function(){return this.asType("bool")},t.prototype.print=function(t){return void 0===t&&(t=!1),ft.print(this,t)},t.prototype.reshape=function(t){return this.throwIfDisposed(),ft.reshape(this,t)},t.prototype.reshapeAs=function(t){return this.throwIfDisposed(),this.reshape(t.shape)},t.prototype.expandDims=function(t){return void 0===t&&(t=0),ft.expandDims(this,t)},t.prototype.cumsum=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=!1),void 0===n&&(n=!1),ft.cumsum(this,t,e,n)},t.prototype.squeeze=function(t){return this.throwIfDisposed(),ft.squeeze(this,t)},t.prototype.clone=function(){return this.throwIfDisposed(),ft.clone(this)},t.prototype.oneHot=function(t,e,n){return this.throwIfDisposed(),ft.oneHot(this,t,e,n)},t.prototype.toString=function(t){return void 0===t&&(t=!1),function(t,e,n,r){var o=Y(e),i=function(t,e,n,r){var o=I(e),i=r[r.length-1],a=new Array(i).fill(0),s=e.length,u="complex64"===n?ct(t):t;if(s>1)for(var c=0;c<o/i;c++)for(var l=c*i,h=0;h<i;h++)a[h]=Math.max(a[h],st(u[l+h],0,n).length);return a}(t,e,n,o),a=e.length,s=function t(e,n,r,o,i,a){void 0===a&&(a=!0);var s="complex64"===r?2:1,u=n[0],c=n.length;if(0===c)return"complex64"===r?[st(ct(e)[0],0,r)]:"bool"===r?[ut(e[0])]:[e[0].toString()];if(1===c){if(u>20){var l=3*s,h=Array.from(e.slice(0,l)),f=Array.from(e.slice((u-3)*s,u*s));return"complex64"===r&&(h=ct(h),f=ct(f)),["["+h.map((function(t,e){return st(t,i[e],r)})).join(", ")+", ..., "+f.map((function(t,e){return st(t,i[u-3+e],r)})).join(", ")+"]"]}return["["+("complex64"===r?ct(e):Array.from(e)).map((function(t,e){return st(t,i[e],r)})).join(", ")+"]"]}var p=n.slice(1),d=o.slice(1),v=o[0]*s,m=[];if(u>20){for(var g=0;g<3;g++){var y=(b=g*v)+v;m.push.apply(m,t(e.slice(b,y),p,r,d,i,!1))}m.push("...");for(g=u-3;g<u;g++){y=(b=g*v)+v;m.push.apply(m,t(e.slice(b,y),p,r,d,i,g===u-1))}}else for(g=0;g<u;g++){var b;y=(b=g*v)+v;m.push.apply(m,t(e.slice(b,y),p,r,d,i,g===u-1))}var x=2===c?",":"";m[0]="["+m[0]+x;for(g=1;g<m.length-1;g++)m[g]=" "+m[g]+x;var w=",\n";for(g=2;g<c;g++)w+="\n";return m[m.length-1]=" "+m[m.length-1]+"]"+(a?"":w),m}(t,e,n,o,i),u=["Tensor"];return r&&(u.push(" dtype: "+n),u.push(" rank: "+a),u.push(" shape: ["+e+"]"),u.push(" values:")),u.push(s.map((function(t){return" "+t})).join("\n")),u.join("\n")}(this.dataSync(),this.shape,this.dtype,t)},t.prototype.tile=function(t){return this.throwIfDisposed(),ft.tile(this,t)},t.prototype.gather=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),ft.gather(this,t,e)},t.prototype.matMul=function(t,e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.throwIfDisposed(),ft.matMul(this,t,e,n)},t.prototype.dot=function(t){return this.throwIfDisposed(),ft.dot(this,t)},t.prototype.norm=function(t,e,n){return void 0===t&&(t="euclidean"),void 0===e&&(e=null),void 0===n&&(n=!1),this.throwIfDisposed(),ft.norm(this,t,e,n)},t.prototype.slice=function(t,e){return this.throwIfDisposed(),ft.slice(this,t,e)},t.prototype.reverse=function(t){return this.throwIfDisposed(),ft.reverse(this,t)},t.prototype.concat=function(e,n){return void 0===n&&(n=0),this.throwIfDisposed(),e instanceof t&&(e=[e]),ft.concat([this].concat(e),n)},t.prototype.split=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),ft.split(this,t,e)},t.prototype.stack=function(t,e){return void 0===e&&(e=0),ft.stack([this,t],e)},t.prototype.unstack=function(t){return void 0===t&&(t=0),ft.unstack(this,t)},t.prototype.pad=function(t,e){return void 0===e&&(e=0),ft.pad(this,t,e)},t.prototype.batchNormalization=function(t,e,n,r,o){return void 0===n&&(n=.001),pt("tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon"),this.batchNorm(t,e,o,r,n)},t.prototype.batchNorm=function(t,e,n,r,o){return void 0===o&&(o=.001),this.throwIfDisposed(),ft.batchNorm(this,t,e,n,r,o)},t.prototype.all=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ft.all(this,t,e)},t.prototype.any=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ft.any(this,t,e)},t.prototype.logSumExp=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ft.logSumExp(this,t,e)},t.prototype.sum=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ft.sum(this,t,e)},t.prototype.prod=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ft.prod(this,t,e)},t.prototype.mean=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ft.mean(this,t,e)},t.prototype.min=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ft.min(this,t,e)},t.prototype.max=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ft.max(this,t,e)},t.prototype.argMin=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),ft.argMin(this,t)},t.prototype.argMax=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),ft.argMax(this,t)},t.prototype.cast=function(t){return this.throwIfDisposed(),ft.cast(this,t)},t.prototype.add=function(t){return this.throwIfDisposed(),ft.add(this,t)},t.prototype.addStrict=function(t){return this.throwIfDisposed(),ft.addStrict(this,t)},t.prototype.atan2=function(t){return this.throwIfDisposed(),ft.atan2(this,t)},t.prototype.sub=function(t){return this.throwIfDisposed(),ft.sub(this,t)},t.prototype.subStrict=function(t){return this.throwIfDisposed(),ft.subStrict(this,t)},t.prototype.pow=function(t){return this.throwIfDisposed(),ft.pow(this,t)},t.prototype.powStrict=function(t){return this.throwIfDisposed(),ft.powStrict(this,t)},t.prototype.mul=function(t){return this.throwIfDisposed(),ft.mul(this,t)},t.prototype.mulStrict=function(t){return this.throwIfDisposed(),ft.mulStrict(this,t)},t.prototype.div=function(t){return this.throwIfDisposed(),ft.div(this,t)},t.prototype.divNoNan=function(t){return this.throwIfDisposed(),ft.divNoNan(this,t)},t.prototype.floorDiv=function(t){return this.throwIfDisposed(),ft.floorDiv(this,t)},t.prototype.divStrict=function(t){return this.throwIfDisposed(),ft.divStrict(this,t)},t.prototype.minimum=function(t){return this.throwIfDisposed(),ft.minimum(this,t)},t.prototype.minimumStrict=function(t){return this.throwIfDisposed(),ft.minimumStrict(this,t)},t.prototype.maximum=function(t){return this.throwIfDisposed(),ft.maximum(this,t)},t.prototype.maximumStrict=function(t){return this.throwIfDisposed(),ft.maximumStrict(this,t)},t.prototype.mod=function(t){return this.throwIfDisposed(),ft.mod(this,t)},t.prototype.modStrict=function(t){return this.throwIfDisposed(),ft.modStrict(this,t)},t.prototype.squaredDifference=function(t){return this.throwIfDisposed(),ft.squaredDifference(this,t)},t.prototype.squaredDifferenceStrict=function(t){return this.throwIfDisposed(),ft.squaredDifferenceStrict(this,t)},t.prototype.transpose=function(t){return this.throwIfDisposed(),ft.transpose(this,t)},t.prototype.notEqual=function(t){return this.throwIfDisposed(),ft.notEqual(this,t)},t.prototype.notEqualStrict=function(t){return this.throwIfDisposed(),ft.notEqualStrict(this,t)},t.prototype.less=function(t){return this.throwIfDisposed(),ft.less(this,t)},t.prototype.lessStrict=function(t){return this.throwIfDisposed(),ft.lessStrict(this,t)},t.prototype.equal=function(t){return this.throwIfDisposed(),ft.equal(this,t)},t.prototype.equalStrict=function(t){return this.throwIfDisposed(),ft.equalStrict(this,t)},t.prototype.lessEqual=function(t){return this.throwIfDisposed(),ft.lessEqual(this,t)},t.prototype.lessEqualStrict=function(t){return this.throwIfDisposed(),ft.lessEqualStrict(this,t)},t.prototype.greater=function(t){return this.throwIfDisposed(),ft.greater(this,t)},t.prototype.greaterStrict=function(t){return this.throwIfDisposed(),ft.greaterStrict(this,t)},t.prototype.greaterEqual=function(t){return this.throwIfDisposed(),ft.greaterEqual(this,t)},t.prototype.greaterEqualStrict=function(t){return this.throwIfDisposed(),ft.greaterEqualStrict(this,t)},t.prototype.logicalAnd=function(t){return this.throwIfDisposed(),ft.logicalAnd(this,t)},t.prototype.logicalOr=function(t){return this.throwIfDisposed(),ft.logicalOr(this,t)},t.prototype.logicalNot=function(){return this.throwIfDisposed(),ft.logicalNot(this)},t.prototype.logicalXor=function(t){return this.throwIfDisposed(),ft.logicalXor(this,t)},t.prototype.where=function(t,e){return this.throwIfDisposed(),ft.where(t,this,e)},t.prototype.neg=function(){return this.throwIfDisposed(),ft.neg(this)},t.prototype.ceil=function(){return this.throwIfDisposed(),ft.ceil(this)},t.prototype.floor=function(){return this.throwIfDisposed(),ft.floor(this)},t.prototype.sign=function(){return this.throwIfDisposed(),ft.sign(this)},t.prototype.isNaN=function(){return this.throwIfDisposed(),ft.isNaN(this)},t.prototype.isInf=function(){return this.throwIfDisposed(),ft.isInf(this)},t.prototype.isFinite=function(){return this.throwIfDisposed(),ft.isFinite(this)},t.prototype.exp=function(){return this.throwIfDisposed(),ft.exp(this)},t.prototype.expm1=function(){return this.throwIfDisposed(),ft.expm1(this)},t.prototype.log=function(){return this.throwIfDisposed(),ft.log(this)},t.prototype.log1p=function(){return this.throwIfDisposed(),ft.log1p(this)},t.prototype.sqrt=function(){return this.throwIfDisposed(),ft.sqrt(this)},t.prototype.rsqrt=function(){return this.throwIfDisposed(),ft.rsqrt(this)},t.prototype.square=function(){return this.throwIfDisposed(),ft.square(this)},t.prototype.reciprocal=function(){return this.throwIfDisposed(),ft.reciprocal(this)},t.prototype.abs=function(){return this.throwIfDisposed(),ft.abs(this)},t.prototype.clipByValue=function(t,e){return this.throwIfDisposed(),ft.clipByValue(this,t,e)},t.prototype.relu=function(){return this.throwIfDisposed(),ft.relu(this)},t.prototype.relu6=function(){return this.throwIfDisposed(),ft.relu6(this)},t.prototype.elu=function(){return this.throwIfDisposed(),ft.elu(this)},t.prototype.selu=function(){return this.throwIfDisposed(),ft.selu(this)},t.prototype.leakyRelu=function(t){return void 0===t&&(t=.2),this.throwIfDisposed(),ft.leakyRelu(this,t)},t.prototype.prelu=function(t){return this.throwIfDisposed(),ft.prelu(this,t)},t.prototype.sigmoid=function(){return this.throwIfDisposed(),ft.sigmoid(this)},t.prototype.logSigmoid=function(){return this.throwIfDisposed(),ft.logSigmoid(this)},t.prototype.softplus=function(){return this.throwIfDisposed(),ft.softplus(this)},t.prototype.zerosLike=function(){return this.throwIfDisposed(),ft.zerosLike(this)},t.prototype.onesLike=function(){return this.throwIfDisposed(),ft.onesLike(this)},t.prototype.sin=function(){return this.throwIfDisposed(),ft.sin(this)},t.prototype.cos=function(){return this.throwIfDisposed(),ft.cos(this)},t.prototype.tan=function(){return this.throwIfDisposed(),ft.tan(this)},t.prototype.asin=function(){return this.throwIfDisposed(),ft.asin(this)},t.prototype.acos=function(){return this.throwIfDisposed(),ft.acos(this)},t.prototype.atan=function(){return this.throwIfDisposed(),ft.atan(this)},t.prototype.sinh=function(){return this.throwIfDisposed(),ft.sinh(this)},t.prototype.cosh=function(){return this.throwIfDisposed(),ft.cosh(this)},t.prototype.tanh=function(){return this.throwIfDisposed(),ft.tanh(this)},t.prototype.asinh=function(){return this.throwIfDisposed(),ft.asinh(this)},t.prototype.acosh=function(){return this.throwIfDisposed(),ft.acosh(this)},t.prototype.atanh=function(){return this.throwIfDisposed(),ft.atanh(this)},t.prototype.erf=function(){return this.throwIfDisposed(),ft.erf(this)},t.prototype.round=function(){return this.throwIfDisposed(),ft.round(this)},t.prototype.step=function(t){return void 0===t&&(t=0),this.throwIfDisposed(),ft.step(this,t)},t.prototype.softmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),ft.softmax(this,t)},t.prototype.logSoftmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),ft.logSoftmax(this,t)},t.prototype.resizeBilinear=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),ft.image.resizeBilinear(this,t,e)},t.prototype.resizeNearestNeighbor=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),ft.image.resizeNearestNeighbor(this,t,e)},t.prototype.conv1d=function(t,e,n,r,o,i){return void 0===r&&(r="NWC"),void 0===o&&(o=1),this.throwIfDisposed(),ft.conv1d(this,t,e,n,r,o,i)},t.prototype.conv2d=function(t,e,n,r,o,i){return void 0===r&&(r="NHWC"),void 0===o&&(o=[1,1]),this.throwIfDisposed(),ft.conv2d(this,t,e,n,r,o,i)},t.prototype.conv2dTranspose=function(t,e,n,r,o){return this.throwIfDisposed(),ft.conv2dTranspose(this,t,e,n,r,o)},t.prototype.depthwiseConv2D=function(t,e,n,r,o,i){return void 0===r&&(r="NHWC"),void 0===o&&(o=[1,1]),this.throwIfDisposed(),ft.depthwiseConv2d(this,t,e,n,r,o,i)},t.prototype.separableConv2d=function(t,e,n,r,o,i){return void 0===o&&(o=[1,1]),void 0===i&&(i="NHWC"),this.throwIfDisposed(),ft.separableConv2d(this,t,e,n,r,o,i)},t.prototype.avgPool=function(t,e,n,r){return this.throwIfDisposed(),ft.avgPool(this,t,e,n,r)},t.prototype.maxPool=function(t,e,n,r){return this.throwIfDisposed(),ft.maxPool(this,t,e,n,r)},t.prototype.localResponseNormalization=function(t,e,n,r){return void 0===t&&(t=5),void 0===e&&(e=1),void 0===n&&(n=1),void 0===r&&(r=.5),ft.localResponseNormalization(this,t,e,n,r)},t.prototype.pool=function(t,e,n,r,o){return this.throwIfDisposed(),ft.pool(this,t,e,n,r,o)},t.prototype.variable=function(t,e,n){return void 0===t&&(t=!0),this.throwIfDisposed(),ht().makeVariable(this,t,e,n)},t.prototype.unsortedSegmentSum=function(t,e){return this.throwIfDisposed(),ft.unsortedSegmentSum(this,t,e)},t.prototype.batchToSpaceND=function(t,e){return this.throwIfDisposed(),ft.batchToSpaceND(this,t,e)},t.prototype.spaceToBatchND=function(t,e){return this.throwIfDisposed(),ft.spaceToBatchND(this,t,e)},t.prototype.topk=function(t,e){return void 0===t&&(t=1),void 0===e&&(e=!0),this.throwIfDisposed(),ft.topk(this,t,e)},t.prototype.stridedSlice=function(t,e,n,r,o,i,a,s){return void 0===r&&(r=0),void 0===o&&(o=0),void 0===i&&(i=0),void 0===a&&(a=0),void 0===s&&(s=0),this.throwIfDisposed(),ft.stridedSlice(this,t,e,n,r,o,i,a,s)},t.prototype.depthToSpace=function(t,e){return this.throwIfDisposed(),ft.depthToSpace(this,t,e)},t.prototype.fft=function(){return this.throwIfDisposed(),ft.spectral.fft(this)},t.prototype.ifft=function(){return this.throwIfDisposed(),ft.spectral.ifft(this)},t.prototype.rfft=function(){return this.throwIfDisposed(),ft.spectral.rfft(this)},t.prototype.irfft=function(){return this.throwIfDisposed(),ft.spectral.irfft(this)},t}();Object.defineProperty(dt,Symbol.hasInstance,{value:function(t){return!!t&&null!=t.dataId&&null!=t.shape&&null!=t.dtype}});var vt,mt,gt,yt,bt,xt=function(t){function e(e,n,r,o){var i=t.call(this,e.shape,e.dtype,e.dataId,o)||this;return i.trainable=n,i.name=r,i}return s(e,t),e.prototype.assign=function(t){if(t.dtype!==this.dtype)throw new Error("dtype of the new value ("+t.dtype+") and previous value ("+this.dtype+") must match");if(!k(t.shape,this.shape))throw new Error("shape of the new value ("+t.shape+") and previous value ("+this.shape+") must match");ht().disposeTensor(this),this.dataId=t.dataId,ht().incRef(this,null)},e.prototype.dispose=function(){ht().disposeVariable(this),this.isDisposedInternal=!0},e}(dt);Object.defineProperty(xt,Symbol.hasInstance,{value:function(t){return t instanceof dt&&null!=t.assign&&t.assign instanceof Function}}),function(t){t.R0="R0",t.R1="R1",t.R2="R2",t.R3="R3",t.R4="R4",t.R5="R5",t.R6="R6"}(vt||(vt={})),function(t){t.float32="float32",t.int32="int32",t.bool="int32",t.complex64="complex64"}(mt||(mt={})),function(t){t.float32="float32",t.int32="int32",t.bool="bool",t.complex64="complex64"}(gt||(gt={})),function(t){t.float32="float32",t.int32="float32",t.bool="float32",t.complex64="complex64"}(yt||(yt={})),function(t){t.float32="complex64",t.int32="complex64",t.bool="complex64",t.complex64="complex64"}(bt||(bt={}));var wt={float32:yt,int32:mt,bool:gt,complex64:bt};function Et(t,e){if("string"===t||"string"===e){if("string"===t&&"string"===e)return"string";throw new Error("Can not upcast "+t+" with "+e)}return wt[t][e]}function Ct(t){return Et(t,"int32")}function _t(t,e){if(t.dtype===e.dtype)return[t,e];var n=Et(t.dtype,e.dtype);return[t.cast(n),e.cast(n)]}function Rt(t,e){E(t.dtype===e.dtype,(function(){return"The dtypes of the first("+t.dtype+") and second("+e.dtype+") input must match"}))}function It(t){var e=[];return function t(e,n,r){if(null!=e)if(e instanceof dt)n.push(e);else if(o=e,Array.isArray(o)||"object"==typeof o){var o,i=e;for(var a in i){var s=i[a];r.has(s)||(r.add(s),t(s,n,r))}}}(t,e,new Set),e}Object.freeze({makeTypesMatch:_t,assertTypesMatch:Rt,isTensorInList:function(t,e){for(var n=0;n<e.length;n++)if(e[n].id===t.id)return!0;return!1},getTensorsInContainer:It});var kt,St=function(){function t(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}return t.prototype.dispose=function(){for(var t in this.registeredVariables)this.registeredVariables[t].dispose()},t}(),At=function(){function t(t){this.ENV=t,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new St}return t.prototype.ready=function(){return u(this,void 0,void 0,(function(){var t,e,n;return c(this,(function(r){switch(r.label){case 0:if(null!=this.pendingBackendInit)return[2,this.pendingBackendInit.then((function(){}))];if(null!=this.backendInstance)return[2];t=this.getSortedBackends(),e=0,r.label=1;case 1:return e<t.length?(n=t[e],[4,this.initializeBackend(n).success]):[3,5];case 2:return r.sent()?[4,this.setBackend(n)]:[3,4];case 3:return r.sent(),[2];case 4:return e++,[3,1];case 5:throw new Error("Could not initialize any backends, all backend initializations failed.")}}))}))},Object.defineProperty(t.prototype,"backend",{get:function(){if(null!=this.pendingBackendInit)throw new Error("Backend '"+this.backendName+"' has not yet been initialized. Make sure to await tf.ready() before calling other methods");if(null==this.backendInstance){var t=this.initializeBackendsAndReturnBest(),e=t.name;if(t.asyncInit)throw new Error("The highest priority backend '"+e+"' has not yet been initialized. Make sure to await tf.ready() before calling other methods");this.setBackend(e)}return this.backendInstance},enumerable:!0,configurable:!0}),t.prototype.backendNames=function(){return Object.keys(this.registryFactory)},t.prototype.findBackend=function(t){if(!(t in this.registry)){if(!(t in this.registryFactory))return null;if(this.initializeBackend(t).asyncInit)return null}return this.registry[t]},t.prototype.findBackendFactory=function(t){return t in this.registryFactory?this.registryFactory[t].factory:null},t.prototype.registerBackend=function(t,e,n){return void 0===n&&(n=1),!(t in this.registryFactory)&&(this.registryFactory[t]={factory:e,priority:n},!0)},t.prototype.setBackend=function(t){return u(this,void 0,void 0,(function(){var e,n,r;return c(this,(function(o){switch(o.label){case 0:if(null==this.registryFactory[t])throw new Error("Backend name '"+t+"' not found in registry");return this.backendName=t,null!=this.registry[t]?[3,4]:(this.backendInstance=null,e=this.initializeBackend(t),n=e.success,e.asyncInit?[4,n]:[3,2]);case 1:return r=o.sent(),[3,3];case 2:r=n,o.label=3;case 3:if(!r)return[2,!1];o.label=4;case 4:return this.backendInstance=this.registry[t],this.setupRegisteredKernels(),this.profiler=new it(this.backendInstance),[2,!0]}}))}))},t.prototype.setupRegisteredKernels=function(){var t=this;v(this.backendName).forEach((function(e){null!=e.setupFunc&&e.setupFunc(t.backendInstance)}))},t.prototype.disposeRegisteredKernels=function(t){var e=this;v(t).forEach((function(n){null!=n.disposeFunc&&n.disposeFunc(e.registry[t])}))},t.prototype.initializeBackend=function(t){var e=this,n=this.registryFactory[t];if(null==n)throw new Error("Cannot initialize backend "+t+", no registration found.");try{var r=n.factory();if(Promise.resolve(r)===r){var o=++this.pendingBackendInitId,i=r.then((function(n){return!(o<e.pendingBackendInitId||(e.registry[t]=n,e.pendingBackendInit=null,0))})).catch((function(t){return!(o<e.pendingBackendInitId||(e.pendingBackendInit=null,1))}));return this.pendingBackendInit=i,{success:i,asyncInit:!0}}return this.registry[t]=r,{success:!0,asyncInit:!1}}catch(e){return{success:!1,asyncInit:!1}}},t.prototype.removeBackend=function(t){if(!(t in this.registryFactory))throw new Error(t+" backend not found in registry");this.backendName===t&&null!=this.pendingBackendInit&&this.pendingBackendInitId++,t in this.registry&&(this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t]),delete this.registryFactory[t],this.backendName===t&&(this.pendingBackendInit=null,this.backendName=null,this.backendInstance=null)},t.prototype.getSortedBackends=function(){var t=this;if(0===Object.keys(this.registryFactory).length)throw new Error("No backend found in registry.");return Object.keys(this.registryFactory).sort((function(e,n){return t.registryFactory[n].priority-t.registryFactory[e].priority}))},t.prototype.initializeBackendsAndReturnBest=function(){for(var t=this.getSortedBackends(),e=0;e<t.length;e++){var n=t[e],r=this.initializeBackend(n),o=r.success,i=r.asyncInit;if(i||o)return{name:n,asyncInit:i}}throw new Error("Could not initialize any backends, all backend initializations failed.")},t.prototype.moveData=function(t,e){var n=this.state.tensorInfo.get(e),r=n.backend,o=this.readSync(e);r.disposeData(e),n.backend=t,t.move(e,o,n.shape,n.dtype),this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack[this.state.numDataMovesStack.length-1]++},t.prototype.tidy=function(t,e){var n,r=this,o=null;if(null==e){if("function"!=typeof t)throw new Error("Please provide a function to tidy()");e=t}else{if("string"!=typeof t&&!(t instanceof String))throw new Error("When calling with two arguments, the first argument to tidy() must be a string");if("function"!=typeof e)throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function");o=t}return this.scopedRun((function(){return r.startScope(o)}),(function(){return r.endScope(n)}),(function(){return n=e()}))},t.prototype.scopedRun=function(t,e,n){t();try{var r=n();return e(),r}catch(t){throw e(),t}},t.prototype.nextTensorId=function(){return t.nextTensorId++},t.prototype.nextVariableId=function(){return t.nextVariableId++},t.prototype.clone=function(t){var e=this.makeTensorFromDataId(t.dataId,t.shape,t.dtype),n={x:t};return this.addTapeNode(this.state.activeScope.name,n,[e],(function(t){return{x:function(){return t.toFloat()}}}),[]),e},t.prototype.runKernel=function(t,e,n,r,o){return this.runKernelFunc(null,e,null,t,n,r,o)},t.prototype.shouldCheckForMemLeaks=function(){return this.ENV.getBool("IS_TEST")},t.prototype.checkKernelForMemLeak=function(t,e,n){var r=this.backend.numDataIds(),o=0;n.forEach((function(t){o+="complex64"===t.dtype?3:1}));var i=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],a=r-e-o-i;if(a>0)throw new Error("Backend '"+this.backendName+"' has an internal memory leak ("+a+" data ids) after running '"+t+"'")},t.prototype.runKernelFunc=function(t,e,n,r,o,i,a){var s,u=this;void 0===i&&(i=[]),void 0===a&&(a=[]);var c,l=[],h=this.isTapeOn(),f=null!=this.state.activeScope?this.state.activeScope.name:"",p=function(t){h&&(l=t.map((function(t){return u.keep(u.clone(t))})))},v=this.state.numBytes,m=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);var g,y=d(r,this.backendName);return c=null!=y?function(){var t=u.backend.numDataIds();g=y.kernelFunc({inputs:e,attrs:o,backend:u.backend});var n=Array.isArray(g)?g:[g];u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(f,t,n);var r=n.map((function(t){var e=t.dataId,n=t.shape,r=t.dtype;return u.makeTensorFromDataId(e,n,r)})),s=r.filter((function(t,e){return a[e]}));return p(i.slice().concat(s)),r}:function(){var e=u.backend.numDataIds();g=u.tidy((function(){return t(u.backend,p)}));var n=Array.isArray(g)?g:[g];return u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(f,e,n),n},this.scopedRun((function(){return u.state.kernelDepth++}),(function(){return u.state.kernelDepth--}),(function(){s=u.ENV.getBool("DEBUG")?u.profiler.profileKernel(f,e,(function(){return c()})):c()})),h&&this.addTapeNode(f,e,s,n,l),this.state.profiling&&this.state.activeProfile.kernels.push({name:f,bytesAdded:this.state.numBytes-v,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-m,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(e).map((function(t){return e[t].shape})),outputShapes:s.map((function(t){return t.shape}))}),Array.isArray(g)?s:s[0]},t.prototype.makeTensor=function(t,e,n,r){if(null==t)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;var o=t;"string"===n&&G(t[0])&&(o=t.map((function(t){return rt(t)})));var i=r.write(o,e,n),a=new dt(e,n,i,this.nextTensorId());if(this.incRef(a,r),"string"===n){var s=this.state.tensorInfo.get(i),u=V(o);this.state.numBytes+=u-s.bytes,s.bytes=u}return a},t.prototype.makeTensorFromDataId=function(t,e,n,r){var o=new dt(e,n=n||"float32",t,this.nextTensorId());return this.incRef(o,r),o},t.prototype.makeVariable=function(t,e,n,r){void 0===e&&(e=!0),n=n||this.nextVariableId().toString(),null!=r&&r!==t.dtype&&(t=t.asType(r));var o=new xt(t,e,n,this.nextTensorId());if(null!=this.state.registeredVariables[o.name])throw new Error("Variable with name "+o.name+" was already registered");return this.state.registeredVariables[o.name]=o,this.incRef(o,this.backend),o},t.prototype.incRef=function(t,e){var n=this.state.tensorInfo.has(t.dataId)?this.state.tensorInfo.get(t.dataId).refCount:0;if(this.state.numTensors++,"string"===t.dtype&&this.state.numStringTensors++,0===n){this.state.numDataBuffers++;var r=0;"complex64"!==t.dtype&&"string"!==t.dtype&&(r=t.size*z(t.dtype)),this.state.tensorInfo.set(t.dataId,{backend:e||this.backend,dtype:t.dtype,shape:t.shape,bytes:r,refCount:0}),this.state.numBytes+=r}this.state.tensorInfo.get(t.dataId).refCount++,t instanceof xt||this.track(t)},t.prototype.disposeTensor=function(t){if(this.state.tensorInfo.has(t.dataId)){this.state.numTensors--,"string"===t.dtype&&this.state.numStringTensors--;var e=this.state.tensorInfo.get(t.dataId);e.refCount<=1?("complex64"!==t.dtype&&(this.state.numBytes-=e.bytes),this.state.numDataBuffers--,e.backend.disposeData(t.dataId),this.state.tensorInfo.delete(t.dataId)):this.state.tensorInfo.get(t.dataId).refCount--}},t.prototype.disposeVariables=function(){for(var t in this.state.registeredVariables){var e=this.state.registeredVariables[t];this.disposeVariable(e)}},t.prototype.disposeVariable=function(t){this.disposeTensor(t),null!=this.state.registeredVariables[t.name]&&delete this.state.registeredVariables[t.name]},t.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.state.numTensors,t.numDataBuffers=this.state.numDataBuffers,t.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(t.unreliable=!0,null==t.reasons&&(t.reasons=[]),t.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),t},t.prototype.profile=function(t){return u(this,void 0,void 0,(function(){var e,n;return c(this,(function(r){return this.state.profiling=!0,e=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],this.state.activeProfile.result=t(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map((function(t){return t.totalBytesSnapshot}))),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-n,[2,this.state.activeProfile]}))}))},t.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},t.prototype.addTapeNode=function(t,e,n,r,o){var i=this,a={id:this.state.nextTapeNodeId++,name:t,inputs:e,outputs:n,saved:o};null!=r&&(a.gradient=function(t){return t=t.map((function(t,e){if(null==t){var r=n[e],o=tt(r.size,r.dtype);return i.makeTensor(o,r.shape,r.dtype)}return t})),r(t.length>1?t:t[0],o)}),this.state.activeTape.push(a)},t.prototype.keep=function(t){return t.kept=!0,t},t.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++},t.prototype.endTape=function(){this.state.gradientDepth--},t.prototype.startScope=function(t){var e={track:[],name:"unnamed scope",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e},t.prototype.endScope=function(t){for(var e=this,n=It(t),r=new Set(n.map((function(t){return t.id}))),o=0;o<this.state.activeScope.track.length;o++){var i=this.state.activeScope.track[o];i.kept||r.has(i.id)||i.dispose()}var a=this.state.scopeStack.pop();this.state.activeScope=0===this.state.scopeStack.length?null:this.state.scopeStack[this.state.scopeStack.length-1],n.forEach((function(t){t.kept||t.scopeId!==a.id||e.track(t)}))},t.prototype.gradients=function(t,e,n,r){var o=this;if(void 0===r&&(r=!1),E(e.length>0,(function(){return"gradients() received an empty list of xs."})),null!=n&&"float32"!==n.dtype)throw new Error("dy must have 'float32' dtype, but has '"+n.dtype+"'");var i=this.scopedRun((function(){return o.startTape()}),(function(){return o.endTape()}),(function(){return o.tidy("forward",t)}));E(i instanceof dt,(function(){return"The result y returned by f() must be a tensor."}));var a=function(t,e,n){for(var r={},o={},i=0;i<e.length;i++)r[e[i].id]=!0;for(i=0;i<t.length;i++){var a=(d=t[i]).inputs;for(var s in a){for(var u=a[s],c=!1,l=0;l<e.length;l++)if(r[u.id]){d.outputs.forEach((function(t){return r[t.id]=!0})),c=!0,o[d.id]=!0;break}if(c)break}}var h={};h[n.id]=!0;var f={};for(i=t.length-1;i>=0;i--)for(a=(d=t[i]).inputs,l=0;l<d.outputs.length;l++)if(h[d.outputs[l].id]){for(var s in a)h[a[s].id]=!0,f[d.id]=!0;break}var p=[];for(i=0;i<t.length;i++){var d;if(o[(d=t[i]).id]&&f[d.id]){var v={};for(var s in d.inputs){var m=d.inputs[s];r[m.id]&&(v[s]=m)}var g=Object.assign({},d);g.inputs=v,g.outputs=d.outputs,p.push(g)}}return p}(this.state.activeTape,e,i);if(!r&&0===a.length&&e.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",(function(){var t,r,s={};s[i.id]=null==n?(r=Z(I(t=i.shape),"float32"),Ot.makeTensor(r,t,"float32")):n,function(t,e,n){for(var r=function(r){var o=e[r],i=[];if(o.outputs.forEach((function(e){var n=t[e.id];null!=n?i.push(n):i.push(null)})),null==o.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+o.name+".");var a=o.gradient(i),s=function(e){if(!(e in a))throw new Error("Cannot backprop through input "+e+". Available gradients found: "+Object.keys(a)+".");var r=n((function(){return a[e]()}));if("float32"!==r.dtype)throw new Error("Error in gradient for op "+o.name+". The gradient of input "+e+" must have 'float32' dtype, but has '"+r.dtype+"'");var i=o.inputs[e];if(!k(r.shape,i.shape))throw new Error("Error in gradient for op "+o.name+". The gradient of input '"+e+"' has shape '"+r.shape+"', which does not match the shape of the input '"+i.shape+"'");if(null==t[i.id])t[i.id]=r;else{var s=t[i.id];t[i.id]=s.add(r),s.dispose()}};for(var u in o.inputs)s(u)},o=e.length-1;o>=0;o--)r(o)}(s,a,(function(t){return o.tidy(t)}));var u=e.map((function(t){return s[t.id]}));return 0===o.state.gradientDepth&&(o.state.activeTape.forEach((function(t){for(var e=0,n=t.saved;e<n.length;e++)n[e].dispose()})),o.state.activeTape=null),{value:i,grads:u}}))},t.prototype.customGrad=function(t){var e=this;return E(X(t),(function(){return"The f passed in customGrad(f) must be a function."})),function(){for(var n,r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];E(r.every((function(t){return t instanceof dt})),(function(){return"The args passed in customGrad(f)(x1, x2,...) must all be tensors"}));var i={};return r.forEach((function(t,e){i[e]=t})),e.runKernelFunc((function(e,o){return E((n=t.apply(void 0,r.concat([o]))).value instanceof dt,(function(){return"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"})),E(X(n.gradFunc),(function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."})),n.value}),i,(function(t,e){var o=n.gradFunc(t,e),i=Array.isArray(o)?o:[o];E(i.length===r.length,(function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."})),E(i.every((function(t){return t instanceof dt})),(function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."}));var a={};return i.forEach((function(t,e){a[e]=function(){return t}})),a}))}},t.prototype.readSync=function(t){return this.state.tensorInfo.get(t).backend.readSync(t)},t.prototype.read=function(t){return this.state.tensorInfo.get(t).backend.read(t)},t.prototype.time=function(t){return u(this,void 0,void 0,(function(){var e,n;return c(this,(function(r){switch(r.label){case 0:return e=et(),[4,this.backend.time(t)];case 1:return(n=r.sent()).wallMs=et()-e,[2,n]}}))}))},t.prototype.track=function(t){return null!=this.state.activeScope&&(t.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(t)),t},Object.defineProperty(t.prototype,"registeredVariables",{get:function(){return this.state.registeredVariables},enumerable:!0,configurable:!0}),t.prototype.reset=function(){for(var t in this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new St,this.registry)this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null},t.nextTensorId=0,t.nextVariableId=0,t}(),Ot=function(){var e=function(){if(null==kt){var e=void 0;if("undefined"!=typeof window)e=window;else if(void 0!==t)e=t;else if(void 0!==r)e=r;else{if("undefined"==typeof self)throw new Error("Could not find a global object");e=self}kt=e}return kt}();if(null==e._tfengine){var n=new l(e);e._tfengine=new At(n)}return function(t){f=t}(e._tfengine.ENV),ht=function(){return e._tfengine},e._tfengine}();function Dt(){return"undefined"!=typeof window&&null!=window.document||"undefined"!=typeof WorkerGlobalScope}var Tt=h();Tt.registerFlag("DEBUG",(function(){return!1}),(function(t){})),Tt.registerFlag("IS_BROWSER",(function(){return Dt()})),Tt.registerFlag("IS_NODE",(function(){return void 0!==r&&void 0!==r.versions&&void 0!==r.versions.node})),Tt.registerFlag("IS_CHROME",(function(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)})),Tt.registerFlag("PROD",(function(){return!1})),Tt.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",(function(){return Tt.getBool("DEBUG")})),Tt.registerFlag("DEPRECATION_WARNINGS_ENABLED",(function(){return!0})),Tt.registerFlag("IS_TEST",(function(){return!1}));var Nt,Ft,Mt,Pt={},Bt={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function Lt(t,e){Pt[t]=e}function Wt(t){t in Pt||(Pt[t]=function(t){if(1!==t&&2!==t)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");var e=function(t){if("undefined"!=typeof OffscreenCanvas&&2===t)return new OffscreenCanvas(300,150);if("undefined"!=typeof document)return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}(t);return e.addEventListener("webglcontextlost",(function(e){e.preventDefault(),delete Pt[t]}),!1),1===t?e.getContext("webgl",Bt)||e.getContext("experimental-webgl",Bt):e.getContext("webgl2",Bt)}(t));var e=Pt[t];return e.isContextLost()?(delete Pt[t],Wt(t)):(e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.BLEND),e.disable(e.DITHER),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_COVERAGE),e.enable(e.SCISSOR_TEST),e.enable(e.CULL_FACE),e.cullFace(e.BACK),Pt[t])}function Ut(t,e){return[e,t]}function jt(t){var e=I(t);return O(Math.ceil(e/4))}function zt(t,e){return[Math.max(1,Math.ceil(e/2)),Math.max(1,Math.ceil(t/2))]}function Vt(t,e){var n,r,o,i,a,s,u,c,l,f=t;return 2===h().getNumber("WEBGL_VERSION")?(n=f.R32F,r=f.R16F,o=f.RGBA16F,i=f.RGBA32F,a=f.RED,s=4,u=1,c=f.HALF_FLOAT,l=f.FLOAT):(n=t.RGBA,r=t.RGBA,o=t.RGBA,i=f.RGBA,a=t.RGBA,s=4,u=4,c=null!=e?e.HALF_FLOAT_OES:null,l=t.FLOAT),{internalFormatFloat:n,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:o,internalFormatPackedFloat:i,textureFormatFloat:a,downloadTextureFormat:t.RGBA,downloadUnpackNumChannels:s,defaultNumChannels:u,textureTypeHalfFloat:c,textureTypeFloat:l}}function Gt(t,e,n){var r=n();return e&&function(t){var e=t.getError();if(e!==t.NO_ERROR)throw new Error("WebGL Error: "+qt(t,e))}(t),r}!function(t){t[t.DENSE=0]="DENSE",t[t.SHARED_BATCH=1]="SHARED_BATCH"}(Nt||(Nt={})),function(t){t[t.RENDER=0]="RENDER",t[t.UPLOAD=1]="UPLOAD",t[t.PIXELS=2]="PIXELS",t[t.DOWNLOAD=3]="DOWNLOAD"}(Ft||(Ft={})),function(t){t[t.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",t[t.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",t[t.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",t[t.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",t[t.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"}(Mt||(Mt={}));function Ht(t){return!!(h().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||0===t||5.96e-8<Math.abs(t)&&Math.abs(t)<65504)}function qt(t,e){switch(e){case t.NO_ERROR:return"NO_ERROR";case t.INVALID_ENUM:return"INVALID_ENUM";case t.INVALID_VALUE:return"INVALID_VALUE";case t.INVALID_OPERATION:return"INVALID_OPERATION";case t.INVALID_FRAMEBUFFER_OPERATION:return"INVALID_FRAMEBUFFER_OPERATION";case t.OUT_OF_MEMORY:return"OUT_OF_MEMORY";case t.CONTEXT_LOST_WEBGL:return"CONTEXT_LOST_WEBGL";default:return"Unknown error code "+e}}function Kt(t,e,n){return me(t,e,(function(){return t.getExtension(n)}),'Extension "'+n+'" not supported on this browser.')}function Xt(t,e,n){var r=me(t,e,(function(){return t.createShader(t.VERTEX_SHADER)}),"Unable to create vertex WebGLShader.");if(Gt(t,e,(function(){return t.shaderSource(r,n)})),Gt(t,e,(function(){return t.compileShader(r)})),!1===t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Failed to compile vertex shader.");return r}function $t(t,e,n){var r=me(t,e,(function(){return t.createShader(t.FRAGMENT_SHADER)}),"Unable to create fragment WebGLShader.");if(Gt(t,e,(function(){return t.shaderSource(r,n)})),Gt(t,e,(function(){return t.compileShader(r)})),!1===t.getShaderParameter(r,t.COMPILE_STATUS))throw function(t,e){var n=Qt.exec(e);if(null!=n){for(var r=+n[1],o=t.split("\n"),i=o.length.toString().length+2,a=o.map((function(t,e){return D((e+1).toString(),i)+t})),s=0,u=0;u<a.length;u++)s=Math.max(a[u].length,s);a.slice(0,r-1),a.slice(r-1,r),a.slice(r)}}(n,t.getShaderInfoLog(r)),new Error("Failed to compile fragment shader.");return r}var Yt,Jt,Qt=/ERROR: [0-9]+:([0-9]+):/g;function Zt(t,e){return me(t,e,(function(){return t.createProgram()}),"Unable to create WebGLProgram.")}function te(t,e,n){if(Gt(t,e,(function(){return t.linkProgram(n)})),!1===t.getProgramParameter(n,t.LINK_STATUS))throw new Error("Failed to link vertex and fragment shaders.")}function ee(t,e,n){if(Gt(t,e,(function(){return t.validateProgram(n)})),!1===t.getProgramParameter(n,t.VALIDATE_STATUS))throw new Error("Shader program validation failed.")}function ne(t,e,n){var r=me(t,e,(function(){return t.createBuffer()}),"Unable to create WebGLBuffer");return Gt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,r)})),Gt(t,e,(function(){return t.bufferData(t.ARRAY_BUFFER,n,t.STATIC_DRAW)})),r}function re(t,e,n){var r=me(t,e,(function(){return t.createBuffer()}),"Unable to create WebGLBuffer");return Gt(t,e,(function(){return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,r)})),Gt(t,e,(function(){return t.bufferData(t.ELEMENT_ARRAY_BUFFER,n,t.STATIC_DRAW)})),r}function oe(t,e){return me(t,e,(function(){return t.createTexture()}),"Unable to create WebGLTexture.")}function ie(t,e){var n=h().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(t<=0||e<=0){var r="["+t+"x"+e+"]";throw new Error("Requested texture size "+r+" is invalid.")}if(t>n||e>n)throw r="["+t+"x"+e+"]",new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU ["+n+"x"+n+"].")}function ae(t,e){return me(t,e,(function(){return t.createFramebuffer()}),"Unable to create WebGLFramebuffer.")}function se(t,e,n,r,o,i,a,s){var u=t.getAttribLocation(n,r);return-1!==u&&(Gt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,o)})),Gt(t,e,(function(){return t.vertexAttribPointer(u,i,t.FLOAT,!1,a,s)})),Gt(t,e,(function(){return t.enableVertexAttribArray(u)})),!0)}function ue(t,e,n,r){ge(t,r),Gt(t,e,(function(){return t.activeTexture(t.TEXTURE0+r)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)}))}function ce(t,e,n,r){return me(t,e,(function(){return t.getUniformLocation(n,r)}),'uniform "'+r+'" not present in program.')}function le(t,e,n){return t.getUniformLocation(e,n)}function he(t,e,n,r,o,i){Gt(t,e,(function(){return ue(t,e,r,i)})),Gt(t,e,(function(){return t.uniform1i(o,i)}))}function fe(t,e,n,r){Gt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,r)})),Gt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0)}))}function pe(t,e,n){Gt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,n)})),Gt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,null,0)}))}function de(t){var e=t.checkFramebufferStatus(t.FRAMEBUFFER);if(e!==t.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+ve(t,e))}function ve(t,e){switch(e){case t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case t.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+e}}function me(t,e,n,r){var o=Gt(t,e,(function(){return n()}));if(null==o)throw new Error(r);return o}function ge(t,e){var n=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=e+t.TEXTURE0;if(r<t.TEXTURE0||r>n)throw new Error("textureUnit must be in [gl.TEXTURE0, gl.TEXTURE"+n+"].")}function ye(t,e){return void 0===e&&(e=2),I(t.slice(0,t.length-e))}function be(t){if(0===t.length)throw Error("Cannot get rows and columns of an empty shape array.");return[t.length>1?t[t.length-2]:1,t[t.length-1]]}function xe(t){var e=[1,1,1];return 0===t.length||1===t.length&&1===t[0]||(e=[ye(t)].concat(be(t))),e}function we(t,e){var n;void 0===e&&(e=!1);var r=h().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e&&(r*=2,1===(t=t.map((function(e,n){return n>=t.length-2?x(t[n]):t[n]}))).length&&(t=[2,t[0]])),2!==t.length){var o=M(t);t=o.newShape}var i=I(t);if(t.length<=1&&i<=r)return[1,i];if(2===t.length&&t[0]<=r&&t[1]<=r)return t;if(3===t.length&&t[0]*t[1]<=r&&t[2]<=r)return[t[0]*t[1],t[2]];if(3===t.length&&t[0]<=r&&t[1]*t[2]<=r)return[t[0],t[1]*t[2]];if(4===t.length&&t[0]*t[1]*t[2]<=r&&t[3]<=r)return[t[0]*t[1]*t[2],t[3]];if(4===t.length&&t[0]<=r&&t[1]*t[2]*t[3]<=r)return[t[0],t[1]*t[2]*t[3]];if(e){var a=ye(t),s=2,u=2;return t.length&&(s=(n=be(t))[0],u=n[1]),O(i=a*(s/2)*(u/2)).map((function(t){return 2*t}))}return O(i)}function Ee(t){return t%2==0}function Ce(t,e){if(k(t=t.slice(-2),e=e.slice(-2)))return!0;if(!t.length||!e.length)return!0;if(0===t[0]||0===t[1]||0===e[0]||0===e[1])return!0;if(t.length!==e.length){var n=t.slice(-1)[0],r=e.slice(-1)[0];if(n===r)return!0;if(Ee(n)&&Ee(r)&&(1===t[0]||1===e[0]))return!0}return t[1]===e[1]&&Ee(t[0])&&Ee(e[0])}function _e(t){if(null==Yt){var e=Wt(t);Yt=e.getParameter(e.MAX_TEXTURE_SIZE)}return Yt}function Re(t){if(null==Jt){var e=Wt(t);Jt=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,Jt)}function Ie(t){if(0===t)return 0;var e=Wt(t);return ke(e,"EXT_disjoint_timer_query_webgl2")&&2===t?2:ke(e,"EXT_disjoint_timer_query")?1:0}function ke(t,e){return null!=t.getExtension(e)}function Se(t){try{if(null!=Wt(t))return!0}catch(t){return!1}return!1}function Ae(t){if(0===t)return!1;var e=Wt(t);if(1===t){if(!ke(e,"OES_texture_float"))return!1}else if(!ke(e,"EXT_color_buffer_float"))return!1;return De(e)}function Oe(t){if(0===t)return!1;var e=Wt(t);if(1!==t){if(ke(e,"EXT_color_buffer_float"))return De(e);if(ke(e,"EXT_color_buffer_half_float")){var n=e.getExtension("EXT_color_buffer_half_float");return function(t,e){var n=Vt(t,e),r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r),t.texImage2D(t.TEXTURE_2D,0,n.internalFormatHalfFloat,1,1,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);var o=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,o),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);var i=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(r),t.deleteFramebuffer(o),i}(e,n)}return!1}return!!ke(e,"OES_texture_float")&&!!ke(e,"WEBGL_color_buffer_float")&&De(e)}function De(t){var e=Vt(t),n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.texImage2D(t.TEXTURE_2D,0,e.internalFormatFloat,1,1,0,e.textureFormatFloat,e.textureTypeFloat,null);var r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0);var o=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(n),t.deleteFramebuffer(r),o}function Te(t){return 2===t&&null!=Wt(t).fenceSync}var Ne=Object.freeze({callAndCheck:Gt,canBeRepresented:Ht,getWebGLErrorMessage:qt,getExtensionOrThrow:Kt,createVertexShader:Xt,createFragmentShader:$t,createProgram:Zt,linkProgram:te,validateProgram:ee,createStaticVertexBuffer:ne,createStaticIndexBuffer:re,getNumChannels:function(){return 2===h().getNumber("WEBGL_VERSION")?1:4},createTexture:oe,validateTextureSize:ie,createFramebuffer:ae,bindVertexBufferToProgramAttribute:se,bindTextureUnit:ue,unbindTextureUnit:function(t,e,n){ge(t,n),Gt(t,e,(function(){return t.activeTexture(t.TEXTURE0+n)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))},getProgramUniformLocationOrThrow:ce,getProgramUniformLocation:le,bindTextureToProgramUniformSampler:he,bindCanvasToFramebuffer:function(t,e){Gt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,null)})),Gt(t,e,(function(){return t.viewport(0,0,t.canvas.width,t.canvas.height)})),Gt(t,e,(function(){return t.scissor(0,0,t.canvas.width,t.canvas.height)}))},bindColorTextureToFramebuffer:fe,unbindColorTextureFromFramebuffer:pe,validateFramebuffer:de,getFramebufferErrorMessage:ve,getBatchDim:ye,getRowsCols:be,getShapeAs3D:xe,getTextureShapeFromLogicalShape:we,isReshapeFree:Ce,getWebGLMaxTextureSize:_e,resetMaxTextureSize:function(){Yt=null},resetMaxTexturesInShader:function(){Jt=null},getMaxTexturesInShader:Re,getWebGLDisjointQueryTimerVersion:Ie,hasExtension:ke,isWebGLVersionEnabled:Se,isCapableOfRenderingToFloatTexture:Ae,isDownloadFloatTextureEnabled:Oe,isWebGLFenceEnabled:Te}),Fe=h();function Me(t){h().getBool("DEPRECATION_WARNINGS_ENABLED")}function Pe(t,e){return Ot.tidy(t,e)}function Be(t){It(t).forEach((function(t){return t.dispose()}))}function Le(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];h().getBool("IS_TEST")}function We(t,e){var n=t;if(j(t))return"string"===e?[]:[t.length];if(!Array.isArray(t))return[];for(var r=[];Array.isArray(n)||j(n)&&"string"!==e;)r.push(n.length),n=n[0];return Array.isArray(t)&&h().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&function t(e,n,r){if(r=r||[],Array.isArray(e)||j(e)){E(n.length>0,(function(){return"Element arr["+r.join("][")+"] should be a primitive, but is an array of "+e.length+" elements"})),E(e.length===n[0],(function(){return"Element arr["+r.join("][")+"] should have "+n[0]+" elements, but has "+e.length+" elements"}));for(var o=n.slice(1),i=0;i<e.length;++i)t(e[i],o,r.concat(i))}else E(0===n.length,(function(){return"Element arr["+r.join("][")+"] is a primitive, but should be an array/TypedArray of "+n[0]+" elements"}))}(t,r,[]),r}function Ue(t,e,n,r){if(null!=t&&("numeric"!==t&&t!==e||"numeric"===t&&"string"===e))throw new Error("Argument '"+n+"' passed to '"+r+"' must be "+t+" tensor, but got "+e+" tensor")}function je(t,e,n,r){if(void 0===r&&(r="numeric"),t instanceof dt)return Ue(r,t.dtype,e,n),t;var o=K(t);if("string"!==o&&["bool","int32","float32"].indexOf(r)>=0&&(o=r),Ue(r,o,e,n),null==t||!j(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t){var i=null==t?"null":t.constructor.name;throw new Error("Argument '"+e+"' passed to '"+n+"' must be a Tensor or TensorLike, but got '"+i+"'")}var a=We(t,o);j(t)||Array.isArray(t)||(t=[t]);var s="string"!==o?J(t,o,h().getBool("DEBUG")):R(t,[],!0);return Ot.makeTensor(s,a,o)}function ze(t,e,n,r){if(void 0===r&&(r="numeric"),!Array.isArray(t))throw new Error("Argument "+e+" passed to "+n+" must be a `Tensor[]` or `TensorLike[]`");return t.map((function(t,r){return je(t,e+"["+r+"]",n)}),r)}function Ve(t,e){for(var n=0;n<t.length;++n)if(t[t.length-n-1]!==e-1-n)return!1;return!0}function Ge(t,e,n){for(var r=t.length+e.length,o=[],i=0,a=0,s=0;s<r;s++)-1===n.indexOf(s)?o.push(t[i++]):o.push(e[a++]);return o}function He(t,e){for(var n=[],r=t.length,o=0;o<r;o++)-1===e.indexOf(o)&&n.push(t[o]);return[n,e.map((function(e){return t[e]}))]}function qe(t,e){return Ge(t,e.map((function(t){return 1})),e)}function Ke(t,e,n){E(Ve(e,n),(function(){return t+" supports only inner-most axes for now. Got axes "+e+" and rank-"+n+" input."}))}function Xe(t,e){if(Ve(t,e))return null;for(var n=[],r=0;r<e;++r)-1===t.indexOf(r)&&n.push(r);return t.forEach((function(t){return n.push(t)})),n}function $e(t){return t.map((function(t,e){return[e,t]})).sort((function(t,e){return t[1]-e[1]})).map((function(t){return t[0]}))}function Ye(t,e){for(var n=[],r=e-t;r<e;++r)n.push(r);return n}function Je(t,e){var n=t[0].length;t.forEach((function(t,e){E(t.length===n,(function(){return"Error in concat"+n+"D: rank of tensors["+e+"] must be the same as the rank of the rest ("+n+")"}))})),E(e>=0&&e<n,(function(){return"Error in concat"+n+"D: axis must be between 0 and "+(n-1)+"."}));var r=t[0];t.forEach((function(t,o){for(var i=0;i<n;i++)E(i===e||t[i]===r[i],(function(){return"Error in concat"+n+"D: Shape of tensors["+o+"] ("+t+") does not match the shape of the rest ("+r+") along the non-concatenated axis "+o+"."}))}))}function Qe(t,e){for(var n=t[0].slice(),r=1;r<t.length;r++)n[e]+=t[r][e];return n}function Ze(t){var e=Object.keys(t);if(1!==e.length)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+e.length+" keys.");var n=e[0],r=t[n];n.endsWith("_")&&(n=n.substring(0,n.length-1));var o=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];Ot.startScope(n);try{var o=r.apply(void 0,t);return Ot.endScope(o),o}catch(t){throw Ot.endScope(null),t}};return Object.defineProperty(o,"name",{value:n,configurable:!0}),o}Fe.registerFlag("HAS_WEBGL",(function(){return Fe.getNumber("WEBGL_VERSION")>0})),Fe.registerFlag("WEBGL_VERSION",(function(){return Se(2)?2:Se(1)?1:0})),Fe.registerFlag("WEBGL_BUFFER_SUPPORTED",(function(){return 2===Fe.get("WEBGL_VERSION")})),Fe.registerFlag("WEBGL_CPU_FORWARD",(function(){return!0})),Fe.registerFlag("WEBGL_FORCE_F16_TEXTURES",(function(){return!1})),Fe.registerFlag("WEBGL_PACK",(function(){return Fe.getBool("HAS_WEBGL")})),Fe.registerFlag("WEBGL_PACK_NORMALIZATION",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_CLIP",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_DEPTHWISECONV",(function(){return!1})),Fe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_REDUCE",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_LAZILY_UNPACK",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_CONV_IM2COL",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",(function(){return _e(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",(function(){return Re(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",(function(){var t=Fe.getNumber("WEBGL_VERSION");return 0===t?0:Ie(t)})),Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",(function(){return Fe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&(t=navigator.userAgent||navigator.vendor||window.opera,!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))));var t})),Fe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",(function(){return Ae(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",(function(){return!Fe.getBool("WEBGL_FORCE_F16_TEXTURES")&&Fe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")})),Fe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",(function(){return Oe(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_FENCE_API_ENABLED",(function(){return Te(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",(function(){return Fe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0})),pt=Me;var tn=Ze({complex_:function(t,e){var n=je(t,"real","complex"),r=je(e,"imag","complex");return C(n.shape,r.shape,"real and imag shapes, "+n.shape+" and "+r.shape+", must match in call to tf.complex()."),Ot.runKernelFunc((function(t){return t.complex(n,r)}),{$real:n,$imag:r})}}),en=Ze({real_:function(t){var e=je(t,"input","real");return Ot.runKernelFunc((function(t){return t.real(e)}),{$input:e})}}),nn=Ze({imag_:function(t){var e=je(t,"input","imag");return Ot.runKernelFunc((function(t){return t.imag(e)}),{$input:e})}});function rn(t,e,n){return on(t,e,We(t,n),n)}function on(t,e,n,r){if(null==r&&(r=K(t)),"complex64"===r)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!j(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t)throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(null!=e){nt(e);var o=I(e),i=I(n);E(o===i,(function(){return"Based on the provided shape, ["+e+"], the tensor should have "+o+" values but has "+i}));for(var a=0;a<n.length;++a){var s=n[a],u=a!==n.length-1||s!==I(e.slice(a));E(n[a]===e[a]||!u,(function(){return"Error creating a new Tensor. Inferred shape ("+n+") does not match the provided shape ("+e+"). "}))}}return j(t)||Array.isArray(t)||(t=[t]),e=e||n,t="string"!==r?J(t,r,h().getBool("DEBUG")):R(t,[],!0),Ot.makeTensor(t,e,r)}function an(t,e){if((j(t)&&"string"!==e||Array.isArray(t))&&"complex64"!==e)throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if("string"===e&&j(t)&&!(t instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return on(t,[],[],e)}function sn(t,e){_(t);var n=We(t,e);if(1!==n.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return on(t,null,n,e)}function un(t,e,n){if(_(t),null!=e&&2!==e.length)throw new Error("tensor2d() requires shape to have two numbers");var r=We(t,n);if(2!==r.length&&1!==r.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return on(t,e,r,n)}function cn(t,e,n){if(_(t),null!=e&&3!==e.length)throw new Error("tensor3d() requires shape to have three numbers");var r=We(t,n);if(3!==r.length&&1!==r.length)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return on(t,e,r,n)}function ln(t,e,n){if(_(t),null!=e&&4!==e.length)throw new Error("tensor4d() requires shape to have four numbers");var r=We(t,n);if(4!==r.length&&1!==r.length)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return on(t,e,r,n)}function hn(t,e){if(void 0===e&&(e="float32"),"complex64"===e){var n=hn(t,"float32"),r=fn(t,"float32");return tn(n,r)}var o=Z(I(t),e);return Ot.makeTensor(o,t,e)}function fn(t,e){if(void 0===e&&(e="float32"),"complex64"===e){var n=fn(t,"float32"),r=fn(t,"float32");return tn(n,r)}var o=tt(I(t),e);return Ot.makeTensor(o,t,e)}function pn(t,e,n){return Ot.runKernelFunc((function(r){return r.fill(t,e,n)}),{})}function dn(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r="float32"),0===n)throw new Error("Cannot have a step of zero");if(t===e||t<e&&n<0||e<t&&n>1)return fn([0],r);var o=tt(Math.abs(Math.ceil((e-t)/n)),r);e<t&&1===n&&(n=-1),o[0]=t;for(var i=1;i<o.length;i++)o[i]=o[i-1]+n;return sn(o,r)}var vn=Ze({onesLike_:function(t){var e=je(t,"x","onesLike");if("complex64"===e.dtype){var n=vn(en(e)),r=mn(nn(e));return tn(n,r)}return Ot.runKernelFunc((function(t){return t.onesLike(e)}),{$x:e},(function(t,e){return{$x:function(){return mn(t)}}}))}}),mn=Ze({zerosLike_:function(t){var e=je(t,"x","zerosLike");return Ot.runKernelFunc((function(t){return t.zerosLike(e)}),{$x:e},(function(t,e){return{$x:function(){return mn(t)}}}))}}),gn=Ze({concat_:function(t,e){void 0===e&&(e=0),E(t.length>=1,(function(){return"Pass at least one tensor to concat"}));var n=ze(t,"tensors","concat");"complex64"===n[0].dtype&&n.forEach((function(t){if("complex64"!==t.dtype)throw new Error("Cannot concatenate complex64 tensors with a tensor\n with dtype "+t.dtype+". ")})),e=F(e,n[0].shape)[0];var r=Qe(n.map((function(t){return t.shape})),e);if(0===I(r))return rn([],r);if(1===(n=n.filter((function(t){return t.size>0}))).length)return n[0];var o=n.map((function(t){return t.shape}));Je(o,e);var i=n,a={axis:e};return Ot.runKernelFunc((function(t){return t.concat(n,e)}),i,(function(t){var n=o.map((function(t){return t[e]}));return En(t,n,e).map((function(t){return function(){return t}}))}),"Concat",a)}}),yn=Ze({concat1d_:function(t){return gn(t,0)}}),bn=Ze({concat2d_:function(t,e){return gn(t,e)}}),xn=Ze({concat3d_:function(t,e){return gn(t,e)}}),wn=Ze({concat4d_:function(t,e){return gn(t,e)}}),En=Ze({split_:function(t,e,n){void 0===n&&(n=0);var r,o=je(t,"x","split");return n=F(n,o.shape)[0],"number"==typeof e?(E(o.shape[n]%e==0,(function(){return"Number of splits must evenly divide the axis."})),r=new Array(e).fill(o.shape[n]/e)):(E(o.shape[n]===e.reduce((function(t,e){return t+e})),(function(){return"The sum of sizes must match the size of the axis dimension."})),r=e),Ot.runKernelFunc((function(t){return t.split(o,r,n)}),{$x:o},(function(t){return{$x:function(){return gn(t,n)}}}))}});function Cn(t,e){return t(e={exports:{}},e.exports),e.exports}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t||"undefined"!=typeof self&&self;var _n=Cn((function(t){!function(t,e,n){function r(t){var e,n=this,r=(e=4022871197,function(t){t=t.toString();for(var n=0;n<t.length;n++){var r=.02519603282416938*(e+=t.charCodeAt(n));r-=e=r>>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e)}return 2.3283064365386963e-10*(e>>>0)});n.next=function(){var t=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=t-(n.c=0|t)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(t),n.s0<0&&(n.s0+=1),n.s1-=r(t),n.s1<0&&(n.s1+=1),n.s2-=r(t),n.s2<0&&(n.s2+=1),r=null}function o(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function i(t,e){var n=new r(t),i=e&&e.state,a=n.next;return a.int32=function(){return 4294967296*n.next()|0},a.double=function(){return a()+11102230246251565e-32*(2097152*a()|0)},a.quick=a,i&&("object"==typeof i&&o(i,n),a.state=function(){return o(n,{})}),a}e&&e.exports?e.exports=i:this.alea=i}(0,t)})),Rn=Cn((function(t){!function(t,e,n){function r(t){var e=this,n="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e}function i(t,e){var n=new r(t),i=e&&e.state,a=function(){return(n.next()>>>0)/4294967296};return a.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},a.int32=n.next,a.quick=a,i&&("object"==typeof i&&o(i,n),a.state=function(){return o(n,{})}),a}e&&e.exports?e.exports=i:this.xor128=i}(0,t)})),In=Cn((function(t){!function(t,e,n){function r(t){var e=this,n="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,e.v=0,t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),r==n.length&&(e.d=e.x<<10^e.x>>>4),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function i(t,e){var n=new r(t),i=e&&e.state,a=function(){return(n.next()>>>0)/4294967296};return a.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},a.int32=n.next,a.quick=a,i&&("object"==typeof i&&o(i,n),a.state=function(){return o(n,{})}),a}e&&e.exports?e.exports=i:this.xorwow=i}(0,t)})),kn=Cn((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.x,o=e.i;return t=r[o],n=(t^=t>>>7)^t<<24,n^=(t=r[o+1&7])^t>>>10,n^=(t=r[o+3&7])^t>>>3,n^=(t=r[o+4&7])^t<<7,t=r[o+7&7],n^=(t^=t<<13)^t<<9,r[o]=n,e.i=o+1&7,n},function(t,e){var n,r=[];if(e===(0|e))r[0]=e;else for(e=""+e,n=0;n<e.length;++n)r[7&n]=r[7&n]<<15^e.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&0===r[n];++n);for(8==n?r[7]=-1:r[n],t.x=r,t.i=0,n=256;n>0;--n)t.next()}(e,t)}function o(t,e){return e.x=t.x.slice(),e.i=t.i,e}function i(t,e){null==t&&(t=+new Date);var n=new r(t),i=e&&e.state,a=function(){return(n.next()>>>0)/4294967296};return a.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},a.int32=n.next,a.quick=a,i&&(i.x&&o(i,n),a.state=function(){return o(n,{})}),a}e&&e.exports?e.exports=i:this.xorshift7=i}(0,t)})),Sn=Cn((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.w,o=e.X,i=e.i;return e.w=r=r+1640531527|0,n=o[i+34&127],t=o[i=i+1&127],n^=n<<13,t^=t<<17,n^=n>>>15,t^=t>>>12,n=o[i]=n^t,e.i=i,n+(r^r>>>16)|0},function(t,e){var n,r,o,i,a,s=[],u=128;for(e===(0|e)?(r=e,e=null):(e+="\0",r=0,u=Math.max(u,e.length)),o=0,i=-32;i<u;++i)e&&(r^=e.charCodeAt((i+32)%e.length)),0===i&&(a=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,i>=0&&(a=a+1640531527|0,o=0==(n=s[127&i]^=r+a)?o+1:0);for(o>=128&&(s[127&(e&&e.length||0)]=-1),o=127,i=512;i>0;--i)r=s[o+34&127],n=s[o=o+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[o]=r^n;t.w=a,t.X=s,t.i=o}(e,t)}function o(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function i(t,e){null==t&&(t=+new Date);var n=new r(t),i=e&&e.state,a=function(){return(n.next()>>>0)/4294967296};return a.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},a.int32=n.next,a.quick=a,i&&(i.X&&o(i,n),a.state=function(){return o(n,{})}),a}e&&e.exports?e.exports=i:this.xor4096=i}(0,t)})),An=Cn((function(t){!function(t,e,n){function r(t){var e=this,n="";e.next=function(){var t=e.b,n=e.c,r=e.d,o=e.a;return t=t<<25^t>>>7^n,n=n-r|0,r=r<<24^r>>>8^o,o=o-t|0,e.b=t=t<<20^t>>>12^n,e.c=n=n-r|0,e.d=r<<16^n>>>16^o,e.a=o-t|0},e.a=0,e.b=0,e.c=-1640531527,e.d=1367130551,t===Math.floor(t)?(e.a=t/4294967296|0,e.b=0|t):n+=t;for(var r=0;r<n.length+20;r++)e.b^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.a=t.a,e.b=t.b,e.c=t.c,e.d=t.d,e}function i(t,e){var n=new r(t),i=e&&e.state,a=function(){return(n.next()>>>0)/4294967296};return a.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},a.int32=n.next,a.quick=a,i&&("object"==typeof i&&o(i,n),a.state=function(){return o(n,{})}),a}e&&e.exports?e.exports=i:this.tychei=i}(0,t)})),On=Cn((function(t){!function(e,r){var o,i=this,a=256,s="random",u=r.pow(a,6),c=r.pow(2,52),l=2*c,h=255;function f(t,n,h){var f=[],g=v(function t(e,n){var r,o=[],i=typeof e;if(n&&"object"==i)for(r in e)try{o.push(t(e[r],n-1))}catch(t){}return o.length?o:"string"==i?e:e+"\0"}((n=1==n?{entropy:!0}:n||{}).entropy?[t,m(e)]:null==t?function(){try{var t;return o&&(t=o.randomBytes)?t=t(a):(t=new Uint8Array(a),(i.crypto||i.msCrypto).getRandomValues(t)),m(t)}catch(t){var n=i.navigator,r=n&&n.plugins;return[+new Date,i,r,i.screen,m(e)]}}():t,3),f),y=new p(f),b=function(){for(var t=y.g(6),e=u,n=0;t<c;)t=(t+n)*a,e*=a,n=y.g(1);for(;t>=l;)t/=2,e/=2,n>>>=1;return(t+n)/e};return b.int32=function(){return 0|y.g(4)},b.quick=function(){return y.g(4)/4294967296},b.double=b,v(m(y.S),e),(n.pass||h||function(t,e,n,o){return o&&(o.S&&d(o,y),t.state=function(){return d(y,{})}),n?(r[s]=t,e):t})(b,g,"global"in n?n.global:this==r,n.state)}function p(t){var e,n=t.length,r=this,o=0,i=r.i=r.j=0,s=r.S=[];for(n||(t=[n++]);o<a;)s[o]=o++;for(o=0;o<a;o++)s[o]=s[i=h&i+t[o%n]+(e=s[o])],s[i]=e;(r.g=function(t){for(var e,n=0,o=r.i,i=r.j,s=r.S;t--;)e=s[o=h&o+1],n=n*a+s[h&(s[o]=s[i=h&i+e])+(s[i]=e)];return r.i=o,r.j=i,n})(a)}function d(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function v(t,e){for(var n,r=t+"",o=0;o<r.length;)e[h&o]=h&(n^=19*e[h&o])+r.charCodeAt(o++);return m(e)}function m(t){return String.fromCharCode.apply(0,t)}if(r.seedrandom=f,v(r.random(),e),t.exports){t.exports=f;try{o=n(46)}catch(t){}}}([],Math)}));On.alea=_n,On.xor128=Rn,On.xorwow=In,On.xorshift7=kn,On.xor4096=Sn,On.tychei=An;var Dn=On.alea,Tn=function(){function t(t,e,n,r,o){this.mean=t,this.stdDev=e,this.dtype=n,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);var i=o||Math.random();this.random=Dn(i.toString())}return t.prototype.nextValue=function(){if(!isNaN(this.nextVal)){var t=this.nextVal;return this.nextVal=NaN,t}for(var e,n,r=!1;!r;){var o=void 0,i=void 0,a=void 0;do{a=(o=2*this.random()-1)*o+(i=2*this.random()-1)*i}while(a>=1||0===a);var s=Math.sqrt(-2*Math.log(a)/a);e=this.mean+this.stdDev*o*s,n=this.mean+this.stdDev*i*s,this.truncated&&!this.isValidTruncated(e)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(e)},t.prototype.convertValue=function(t){return null==this.dtype||"float32"===this.dtype?t:Math.round(t)},t.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},t}(),Nn=function(){function t(t,e,n,r){this.alpha=t,this.beta=1/e,this.dtype=n;var o=r||Math.random();this.randu=Dn(o.toString()),this.randn=new Tn(0,1,n,!1,this.randu()),this.d=t<1?t+2/3:t-1/3,this.c=1/Math.sqrt(9*this.d)}return t.prototype.nextValue=function(){for(var t,e,n,r,o,i;;){do{r=this.randn.nextValue(),i=1+this.c*r}while(i<=0);if(i*=i*i,e=1-.331*(t=r*r)*t,n=.5*t+this.d*(1-i+Math.log(i)),(o=this.randu())<e||Math.log(o)<n)break}return i=1/this.beta*this.d*i,this.alpha<1&&(i*=Math.pow(this.randu(),1/this.alpha)),this.convertValue(i)},t.prototype.convertValue=function(t){return"float32"===this.dtype?t:Math.round(t)},t}(),Fn=function(){function t(t,e,n,r){var o=this;if(void 0===t&&(t=0),void 0===e&&(e=1),this.canReturnFloat=function(){return null==o.dtype||"float32"===o.dtype},this.min=t,this.range=e-t,this.dtype=n,null==r&&(r=Math.random()),"number"==typeof r&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error("The difference between "+t+" - "+e+" <= 1 and dtype is not float");this.random=Dn(r)}return t.prototype.convertValue=function(t){return this.canReturnFloat()?t:Math.round(t)},t.prototype.nextValue=function(){return this.convertValue(this.min+this.range*this.random())},t}();function Mn(t,e,n){return void 0===e&&(e="float32"),e=e||"float32",nt(t),new lt(t,e,n)}var Pn=Ze({batchToSpaceND_:function(t,e,n){var r=je(t,"x","batchToSpaceND"),o=e.reduce((function(t,e){return t*e}));return E(r.rank>=1+e.length,(function(){return"input rank is "+r.rank+" but should be > than blockShape.length "+e.length})),E(n.length===e.length,(function(){return"crops.length is "+n.length+" but should be equal to blockShape.length "+e.length})),E(r.shape[0]%o==0,(function(){return"input tensor batch is "+r.shape[0]+" but is not divisible by the product of the elements of blockShape "+e.join(" * ")+" === "+o})),Ot.runKernelFunc((function(t){return t.batchToSpaceND(r,e,n)}),{$x:r},(function(t){return{$x:function(){return t.spaceToBatchND(e,n)}}}))}}),Bn=Ze({broadcastTo_:function(t,e){var n=je(t,"broadcastTo","x"),r=n.shape;if(e.some((function(t){return!(t>0)||t%1!=0})))throw new Error("broadcastTo(): Invalid broadcast shape ["+e+"].");if(e.length<n.rank)throw new Error("broadcastTo(): shape.length="+e.length+" < input.rank="+n.rank+".");if(e.length>n.rank){for(var o=n.shape.slice();o.length<e.length;)o.unshift(1);n=n.reshape(o)}for(var i=Array.from(e),a=e.length-1;a>=0;a--)if(n.shape[a]===e[a])i[a]=1;else if(1!==n.shape[a])throw new Error("broadcastTo(): ["+r+"] cannot be broadcast to ["+e+"].");var s=i.map((function(t,e){return t>1?e:-1})).filter((function(t){return t>=0}));return 0===s.length?n.clone():Ot.runKernelFunc((function(t){return t.tile(n,i)}),{input:n},(function(t){return{input:function(){return t.sum(s,!0)}}}))}}),Ln=Ze({cast_:function(t,e){var n=je(t,"x","cast");if(!W(e))throw new Error("Failed to cast to unknown dtype "+e);if("string"===e&&"string"!==n.dtype||"string"!==e&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");var r={dtype:e};return Ot.runKernelFunc((function(t){return t.cast(n,e)}),{x:n},(function(t){return{x:function(){return t.clone()}}}),"Cast",r)}}),Wn=Ze({clone_:function(t){var e=je(t,"x","clone",null);return Ot.runKernelFunc((function(){return Ot.makeTensorFromDataId(e.dataId,e.shape,e.dtype)}),{$x:e},(function(t){return{$x:function(){return t.toFloat()}}}))}}),Un=Ze({cumsum_:function(t,e,n,r){void 0===e&&(e=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var o=je(t,"x","cumsum"),i=Xe([e|=0],o.rank),a=o;null!=i&&(a=o.transpose(i));var s=Ye(1,o.rank)[0],u=Ot.runKernelFunc((function(t){return t.cumsum(a,s,n,r)}),{permutedX:a},(function(t){return{permutedX:function(){return t.cumsum(e,n,!r)}}}));return null!=i&&(u=u.transpose(i)),u}}),jn=Ze({depthToSpace_:function(t,e,n){void 0===n&&(n="NHWC");var r=je(t,"x","depthToSpace"),o="NHWC"===n?r.shape[1]:r.shape[2],i="NHWC"===n?r.shape[2]:r.shape[3],a="NHWC"===n?r.shape[3]:r.shape[1];return E(o*e>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n "+o+" and "+e+" for depthToSpace with input shape\n "+r.shape})),E(i*e>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n "+i+" and "+e+" for depthToSpace with input shape\n "+r.shape})),E(a%(e*e)==0,(function(){return"Dimension size must be evenly divisible by "+e*e+" but is "+a+" for depthToSpace with input shape "+r.shape})),Ot.runKernelFunc((function(t){return t.depthToSpace(r,e,n)}),{$x:r})}}),zn=Ze({expandDims_:function(t,e){void 0===e&&(e=0);var n=je(t,"x","expandDims",null);E(e<=n.rank,(function(){return"Axis must be <= rank of the tensor"}));var r=n.shape.slice();return e<0&&(E(-(n.rank+1)<=e,(function(){return"Axis must be in the interval ["+-(n.rank+1)+", "+n.rank+"]"})),e=n.rank+e+1),r.splice(e,0,1),er(n,r)}}),Vn=Ze({eye_:function(t,e,n,r){void 0===r&&(r="float32"),null==e&&(e=t);for(var o=Mn([t,e],r),i=t<=e?t:e,a=0;a<i;++a)o.set(1,a,a);var s=o.toTensor().as2D(t,e);if(null==n)return s;if(1===n.length)return ir(zn(s,0),[n[0],1,1]);if(2===n.length)return ir(zn(zn(s,0),0),[n[0],n[1],1,1]);if(3===n.length)return ir(zn(zn(zn(s,0),0),0),[n[0],n[1],n[2],1,1]);throw new Error("eye() currently supports only 1D and 2D batchShapes, but received "+n.length+"D.")}}),Gn=Ze({multinomial_:function(t,e,n,r){void 0===r&&(r=!1);var o=je(t,"logits","multinomial"),i=o.size,a=o.rank;if(i<2)throw new Error("Error in multinomial: you need at least 2 outcomes, but got "+i+".");if(a>2)throw new Error("Rank of probabilities must be 1 or 2, but is "+a);n=n||Math.random();var s=1===a?o.as2D(1,-1):o,u=Ot.runKernelFunc((function(t){return t.multinomial(s,r,e,n)}),{logits2D:s});return 1===a?u.as1D():u}}),Hn=Ze({oneHot_:function(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r=0),e<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+e);var o=je(t,"indices","oneHot","int32"),i=o.shape.concat([e]);return o=o.flatten(),Ot.runKernelFunc((function(t){return t.oneHot(o,e,n,r)}),{$indices:o},(function(t){return{$indices:function(){return fn(o.shape,"float32")}}})).reshape(i)}}),qn=Ze({pad_:function(t,e,n){void 0===n&&(n=0);var r=je(t,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var o={paddings:e,constantValue:n};return Ot.runKernelFunc((function(t){return t.pad(r,e,n)}),{x:r},(function(t){var n=e.map((function(t){return t[0]}));return{x:function(){return t.slice(n,r.shape)}}}),"PadV2",o)}}),Kn=Ze({pad1d_:function(t,e,n){return void 0===n&&(n=0),E(2===e.length,(function(){return"Invalid number of paddings. Must be length of 2."})),qn(t,[e],n)}}),Xn=Ze({pad2d_:function(t,e,n){return void 0===n&&(n=0),E(2===e.length&&2===e[0].length&&2===e[1].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),qn(t,e,n)}}),$n=Ze({pad3d_:function(t,e,n){return void 0===n&&(n=0),E(3===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),qn(t,e,n)}}),Yn=Ze({pad4d_:function(t,e,n){return void 0===n&&(n=0),E(4===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length&&2===e[3].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),qn(t,e,n)}}),Jn=Ze({rand_:function(t,e,n){var r=I(t),o=null;if(null==n||"float32"===n)o=new Float32Array(r);else if("int32"===n)o=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type "+n);o=new Uint8Array(r)}for(var i=0;i<r;i++)o[i]=e();return Ot.makeTensor(o,t,n)}}),Qn=Ze({randomNormal_:function(t,e,n,r,o){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&"bool"===r)throw new Error("Unsupported data type "+r);for(var i=new Tn(e,n,r,!1,o),a=Mn(t,r),s=0;s<a.values.length;s++)a.values[s]=i.nextValue();return a.toTensor()}}),Zn=Ze({randomGamma_:function(t,e,n,r,o){if(void 0===n&&(n=1),void 0===r&&(r="float32"),null==n&&(n=1),null==r&&(r="float32"),"float32"!==r&&"int32"!==r)throw new Error("Unsupported data type "+r);for(var i=new Nn(e,n,r,o),a=Mn(t,r),s=0;s<a.values.length;s++)a.values[s]=i.nextValue();return a.toTensor()}}),tr=Ze({randomUniform_:function(t,e,n,r,o){void 0===e&&(e=0),void 0===n&&(n=1),void 0===r&&(r="float32");for(var i=Mn(t,r),a=new Fn(e,n,null,o),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}}),er=Ze({reshape_:function(t,e){var n=je(t,"x","reshape",null);e=N(e,n.size),E(n.size===I(e),(function(){return"new shape and old shape must have the same number of elements."}));var r={shape:e};return Ot.runKernelFunc((function(t){return t.reshape(n,e)}),{x:n},(function(t){return{x:function(){return t.reshape(n.shape)}}}),"Reshape",r)}}),nr=Ze({spaceToBatchND_:function(t,e,n){var r=je(t,"x","spaceToBatchND");return E(r.rank>=1+e.length,(function(){return"input rank "+r.rank+" should be > than [blockShape] "+e.length})),E(n.length===e.length,(function(){return"paddings.shape[0] "+n.length+" must be equal to [blockShape] "+e.length})),E(r.shape.reduce((function(t,r,o){return o>0&&o<=e.length?t&&(r+n[o-1][0]+n[o-1][1])%e[o-1]==0:t}),!0),(function(){return"input spatial dimensions "+r.shape.slice(1)+" with paddings "+n.toString()+" must be divisible by blockShapes "+e.toString()})),Ot.runKernelFunc((function(t){return t.spaceToBatchND(r,e,n)}),{$x:r},(function(t){return{$x:function(){return t.batchToSpaceND(e,n)}}}))}}),rr=Ze({squeeze_:function(t,e){var n=je(t,"x","squeeze");return er(n,M(n.shape,e).newShape)}}),or=Ze({stack_:function(t,e){void 0===e&&(e=0);var n=ze(t,"tensors","stack");if(E(n.length>=1,(function(){return"Pass at least one tensor to tf.stack"})),1===n.length)return n[0].expandDims(e);var r=n[0].rank,o=n[0].shape,i=n[0].dtype;E(e<=r,(function(){return"Axis must be <= rank of the tensor"})),n.forEach((function(t){C(o,t.shape,"All tensors passed to stack must have matching shapes")})),n.forEach((function(t){E(i===t.dtype,(function(){return"All tensors passed to stack must have matching dtypes"}))}));var a=n.map((function(t){return t.expandDims(e)}));return gn(a,e)}}),ir=Ze({tile_:function(t,e){var n=je(t,"x","tile",null);return E(n.rank===e.length,(function(){return"Error in transpose: rank of input "+n.rank+" must match length of reps "+e+"."})),Ot.runKernelFunc((function(t,r){var o=t.tile(n,e);return r([n]),o}),{$x:n},(function(t,n){var r=n[0];return{$x:function(){var n=mn(r);if(1===r.rank)for(var o=0;o<e[0];++o)n=n.add(t.slice([o*r.shape[0]],[r.shape[0]]));else if(2===r.rank)for(o=0;o<e[0];++o)for(var i=0;i<e[1];++i)n=n.add(t.slice([o*r.shape[0],i*r.shape[1]],[r.shape[0],r.shape[1]]));else if(3===r.rank)for(o=0;o<e[0];++o)for(i=0;i<e[1];++i)for(var a=0;a<e[2];++a)n=n.add(t.slice([o*r.shape[0],i*r.shape[1],a*r.shape[2]],[r.shape[0],r.shape[1],r.shape[2]]));else{if(4!==r.rank)throw new Error("Gradient for tile operation is not implemented for rank-"+r.rank+" tensors yet.");for(o=0;o<e[0];++o)for(i=0;i<e[1];++i)for(a=0;a<e[2];++a)for(var s=0;s<e[3];++s)n=n.add(t.slice([o*r.shape[0],i*r.shape[1],a*r.shape[2],s*r.shape[3]],[r.shape[0],r.shape[1],r.shape[2],r.shape[3]]))}return n}}}))}}),ar=Ze({truncatedNormal_:function(t,e,n,r,o){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&"bool"===r)throw new Error("Unsupported data type "+r);for(var i=new Tn(e,n,r,!0,o),a=Mn(t,r),s=0;s<a.values.length;s++)a.values[s]=i.nextValue();return a.toTensor()}}),sr=Ze({unstack_:function(t,e){void 0===e&&(e=0),e=e||0;var n=je(t,"x","unstack");return E(e>=-n.shape.length&&e<n.shape.length,(function(){return"Axis = "+e+" is not in [-"+n.shape.length+", "+n.shape.length+")"})),e<0&&(e+=n.shape.length),Ot.runKernelFunc((function(t){return t.unstack(n,e)}),{$x:n},(function(t){return{$x:function(){return or(t,e)}}}))}});function ur(t,e,n,r){void 0===r&&(r=!0);var o=[];if(r)(o=o.concat(e.slice(0))).push(t[0]/n),o=o.concat(t.slice(1));else{o=o.concat(t[0]);for(var i=e.length,a=0;a<i;++a)o=o.concat([t[a+1]/e[a],e[a]]);o=o.concat(t.slice(i+1))}return o}function cr(t,e,n){void 0===n&&(n=!0);var r=[];if(n){r.push(e);for(var o=e+1;o<t;++o)o<=2*e?(r.push(o),r.push(o-(e+1))):r.push(o)}else{var i=[],a=[];for(o=1;o<t;++o)o>=2*e+1||o%2==1?a.push(o):i.push(o);r.push.apply(r,i),r.push(0),r.push.apply(r,a)}return r}function lr(t,e,n,r){void 0===r&&(r=!0);var o=[];r?o.push(t[0]/n):o.push(t[0]*n);for(var i=1;i<t.length;++i)i<=e.length?r?o.push(e[i-1]*t[i]):o.push(t[i]/e[i-1]):o.push(t[i]);return o}function hr(t,e){for(var n=[0],r=0;r<e;++r)n.push(t[r][0]);return n}function fr(t,e,n){for(var r=t.slice(0,1),o=0;o<n;++o)r.push(t[o+1]-e[o][0]-e[o][1]);return r}function pr(t,e){if(t.rank<1)throw new Error("tf.gatherND() expects the input to be rank 1 or higher, but the rank was "+t.rank+".");if(e.rank<1)throw new Error("tf.gatherND() expects the indices to be rank 1 or higher, but the rank was "+e.rank+".");if("int32"!==e.dtype)throw new Error("tf.gatherND() expects the indices to be int32 type, but the dtype was "+e.dtype+".");if(e.shape[e.rank-1]>t.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+e.shape[e.rank-1]+" vs. "+t.rank);if(0===t.size)throw new Error("Requested more than 0 entries, but input is empty. Input shape: "+t.shape+".");for(var n=e.shape,r=n[n.length-1],o=1,i=0;i<n.length-1;++i)o*=n[i];var a=t.shape,s=n.slice();s.pop();var u=1;for(i=r;i<t.rank;++i)u*=a[i],s.push(a[i]);var c=Y(t.shape).map((function(t){return t/u})).concat([1]).slice(0,r);return[s,o,u,c]}function dr(t){return t<=30?t:$(t,Math.floor(Math.sqrt(t)))}function vr(t,e,n){for(var r=e.rank>1?e.shape[e.rank-1]:1,o=n.length,i=1,a=r;a<o;++a)i*=n[a];var s=r<1?1:r;return{sliceRank:r,numUpdates:e.size/s,sliceSize:i,strides:Y(n.slice(0,r)).concat([1]),outputSize:I(n)}}function mr(t,e,n){E(t.rank===e.length,(function(){return"Error in slice"+t.rank+"D: Length of begin "+e+" must match the rank of the array ("+t.rank+")."})),E(t.rank===n.length,(function(){return"Error in slice"+t.rank+"D: Length of size "+n+" must match the rank of the array ("+t.rank+")."}));for(var r=function(r){E(e[r]+n[r]<=t.shape[r],(function(){return"Error in slice"+t.rank+"D: begin["+r+"] + size["+r+"] ("+(e[r]+n[r])+") would overflow input.shape["+r+"] ("+t.shape[r]+")"}))},o=0;o<t.rank;++o)r(o)}function gr(t){for(var e=[],n=0;t>0;)1&t&&e.push(n),t/=2,n++;return e}function yr(t,e,n){for(var r=[],o=0;o<t.length;o++)r[o]=Math.ceil((e[o]-t[o])/n[o]);return r}function br(t,e,n,r,o){var i=e[o],a=n[o]||1;(t&1<<o||null==i)&&(i=a>0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var s=r[o];return i<0&&(i+=s),b(0,i,s-1)}function xr(t,e,n,r,o){var i=e[o],a=n[o]||1;(t&1<<o||null==i)&&(i=a>0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var s=r[o];return i<0&&(i+=s),a>0?b(0,i,s):b(-1,i,s-1)}function wr(t,e,n){for(var r=n.length,o=0;o<n.length;o++)if(n[o]>1){r=o;break}for(o=r+1;o<n.length;o++)if(e[o]>0||n[o]!==t[o])return!1;return!0}function Er(t,e){for(var n=t.length>0?t[t.length-1]:1,r=0;r<t.length-1;r++)n+=t[r]*e[r];return n}Object.freeze({assertParamsValid:mr,maskToAxes:gr,computeOutShape:yr,startForAxis:br,stopForAxis:xr,isSliceContinous:wr,computeFlatOffset:Er});function Cr(t){return Ot.customGrad(t)}var _r=Ze({softmax_:function(t,e){void 0===e&&(e=-1);var n=je(t,"logits","softmax");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and dim was "+e);return Cr((function(t,n){var r=t.logSumExp([e],!0),o=t.toFloat().sub(r).exp();return n([o]),{value:o,gradFunc:function(t,n){var r=n[0],o=t.mul(r);return o.sub(o.sum([e],!0).mul(r))}}}))(n)}}),Rr=Ze({logSoftmax_:function(t,e){void 0===e&&(e=-1);var n=je(t,"logits","logSoftmax");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and axis was "+e);return Cr((function(t,n){var r=t.max(e,!0),o=t.sub(r),i=o.toFloat().sub(o.exp().sum(e,!0).log());return n([i]),{value:i,gradFunc:function(t,n){var r=n[0].exp();return t.sub(t.sum(e,!0).mul(r))}}}))(n)}}),Ir=function(){function t(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap,this.dataIdsCount=0}return t.prototype.get=function(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)},t.prototype.set=function(t,e){this.dataIdsCount++,this.data.set(t,e)},t.prototype.has=function(t){return this.data.has(t)},t.prototype.delete=function(t){return this.dataIdsCount--,this.data.delete(t)},t.prototype.numDataIds=function(){return this.dataIdsCount},t}(),kr=function(){function t(){}return t.prototype.time=function(t){return Sr("time")},t.prototype.read=function(t){return Sr("read")},t.prototype.readSync=function(t){return Sr("readSync")},t.prototype.numDataIds=function(){return Sr("numDataIds")},t.prototype.disposeData=function(t){return Sr("disposeData")},t.prototype.write=function(t,e,n){return Sr("write")},t.prototype.move=function(t,e,n,r){return Sr("move")},t.prototype.memory=function(){return Sr("memory")},t.prototype.floatPrecision=function(){return Sr("floatPrecision")},t.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},t.prototype.batchMatMul=function(t,e,n,r){return Sr("batchMatMul")},t.prototype.fusedBatchMatMul=function(t){return t.a,t.b,t.transposeA,t.transposeB,t.bias,t.activation,t.preluActivationWeights,Sr("fusedBatchMatMul")},t.prototype.slice=function(t,e,n){return Sr("slice")},t.prototype.stridedSlice=function(t,e,n,r){return Sr("stridedSlice")},t.prototype.unstack=function(t,e){return Sr("unstack")},t.prototype.reverse=function(t,e){return Sr("reverse")},t.prototype.concat=function(t,e){return Sr("concat")},t.prototype.neg=function(t){return Sr("neg")},t.prototype.add=function(t,e){return Sr("add")},t.prototype.addN=function(t){return Sr("addN")},t.prototype.subtract=function(t,e){return Sr("subtract")},t.prototype.multiply=function(t,e){return Sr("multiply")},t.prototype.realDivide=function(t,e){return Sr("realDivide")},t.prototype.floorDiv=function(t,e){return Sr("floorDiv")},t.prototype.sum=function(t,e){return Sr("sum")},t.prototype.prod=function(t,e){return Sr("prod")},t.prototype.unsortedSegmentSum=function(t,e,n){return Sr("unsortedSegmentSum")},t.prototype.argMin=function(t,e){return Sr("argMin")},t.prototype.argMax=function(t,e){return Sr("argMax")},t.prototype.equal=function(t,e){return Sr("equal")},t.prototype.notEqual=function(t,e){return Sr("notEqual")},t.prototype.less=function(t,e){return Sr("less")},t.prototype.lessEqual=function(t,e){return Sr("lessEqual")},t.prototype.greater=function(t,e){return Sr("greater")},t.prototype.greaterEqual=function(t,e){return Sr("greaterEqual")},t.prototype.logicalNot=function(t){return Sr("logicalNot")},t.prototype.logicalAnd=function(t,e){return Sr("logicalAnd")},t.prototype.logicalOr=function(t,e){return Sr("logicalOr")},t.prototype.where=function(t){return Sr("where")},t.prototype.select=function(t,e,n){return Sr("select")},t.prototype.topk=function(t,e,n){return Sr("topk")},t.prototype.min=function(t,e){return Sr("min")},t.prototype.minimum=function(t,e){return Sr("minimum")},t.prototype.mod=function(t,e){return Sr("mod")},t.prototype.max=function(t,e){return Sr("max")},t.prototype.maximum=function(t,e){return Sr("maximum")},t.prototype.all=function(t,e){return Sr("all")},t.prototype.any=function(t,e){return Sr("any")},t.prototype.squaredDifference=function(t,e){return Sr("squaredDifference")},t.prototype.ceil=function(t){return Sr("ceil")},t.prototype.floor=function(t){return Sr("floor")},t.prototype.round=function(t){return Sr("round")},t.prototype.sign=function(t){return Sr("sign")},t.prototype.isNaN=function(t){return Sr("isNaN")},t.prototype.isInf=function(t){return Sr("isInf")},t.prototype.isFinite=function(t){return Sr("isFinite")},t.prototype.pow=function(t,e){return Sr("pow")},t.prototype.exp=function(t){return Sr("exp")},t.prototype.expm1=function(t){return Sr("expm1")},t.prototype.log=function(t){return Sr("log")},t.prototype.log1p=function(t){return Sr("log1p")},t.prototype.sqrt=function(t){return Sr("sqrt")},t.prototype.rsqrt=function(t){return Sr("rsqrt")},t.prototype.square=function(t){return Sr("square")},t.prototype.reciprocal=function(t){return Sr("reciprocal")},t.prototype.relu=function(t){return Sr("relu")},t.prototype.relu6=function(t){return Sr("relu6")},t.prototype.prelu=function(t,e){return Sr("prelu")},t.prototype.elu=function(t){return Sr("elu")},t.prototype.eluDer=function(t,e){return Sr("eluDer")},t.prototype.selu=function(t){return Sr("selu")},t.prototype.int=function(t){return Sr("int")},t.prototype.clip=function(t,e,n){return Sr("clip")},t.prototype.abs=function(t){return Sr("abs")},t.prototype.complexAbs=function(t){return Sr("complexAbs")},t.prototype.sigmoid=function(t){return Sr("sigmoid")},t.prototype.softplus=function(t){return Sr("softplus")},t.prototype.sin=function(t){return Sr("sin")},t.prototype.cos=function(t){return Sr("cos")},t.prototype.tan=function(t){return Sr("tan")},t.prototype.asin=function(t){return Sr("asin")},t.prototype.acos=function(t){return Sr("acos")},t.prototype.atan=function(t){return Sr("atan")},t.prototype.atan2=function(t,e){return Sr("atan2")},t.prototype.sinh=function(t){return Sr("sinh")},t.prototype.cosh=function(t){return Sr("cosh")},t.prototype.tanh=function(t){return Sr("tanh")},t.prototype.asinh=function(t){return Sr("asinh")},t.prototype.acosh=function(t){return Sr("acosh")},t.prototype.atanh=function(t){return Sr("atanh")},t.prototype.erf=function(t){return Sr("erf")},t.prototype.step=function(t,e){return Sr("step")},t.prototype.fusedConv2d=function(t){return t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights,Sr("fusedConv2d")},t.prototype.conv2d=function(t,e,n){return Sr("conv2d")},t.prototype.conv2dDerInput=function(t,e,n){return Sr("conv2dDerInput")},t.prototype.conv2dDerFilter=function(t,e,n){return Sr("conv2dDerFilter")},t.prototype.fusedDepthwiseConv2D=function(t){return t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights,Sr("fusedDepthwiseConv2D")},t.prototype.depthwiseConv2D=function(t,e,n){return Sr("depthwiseConv2D")},t.prototype.depthwiseConv2DDerInput=function(t,e,n){return Sr("depthwiseConv2DDerInput")},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){return Sr("depthwiseConv2DDerFilter")},t.prototype.conv3d=function(t,e,n){return Sr("conv3d")},t.prototype.conv3dDerInput=function(t,e,n){return Sr("conv3dDerInput")},t.prototype.conv3dDerFilter=function(t,e,n){return Sr("conv3dDerFilter")},t.prototype.maxPool=function(t,e){return Sr("maxPool")},t.prototype.maxPoolBackprop=function(t,e,n,r){return Sr("maxPoolBackprop")},t.prototype.avgPool=function(t,e){return Sr("avgPool")},t.prototype.avgPoolBackprop=function(t,e,n){return Sr("avgPoolBackprop")},t.prototype.avgPool3d=function(t,e){return Sr("avgPool3d")},t.prototype.avgPool3dBackprop=function(t,e,n){return Sr("avgPool3dBackprop")},t.prototype.maxPool3d=function(t,e){return Sr("maxPool3d")},t.prototype.maxPool3dBackprop=function(t,e,n,r){return Sr("maxPool3dBackprop")},t.prototype.reshape=function(t,e){return Sr("reshape")},t.prototype.cast=function(t,e){return Sr("cast")},t.prototype.tile=function(t,e){return Sr("tile")},t.prototype.pad=function(t,e,n){return Sr("pad")},t.prototype.transpose=function(t,e){return Sr("transpose")},t.prototype.gather=function(t,e,n){return Sr("gather")},t.prototype.gatherND=function(t,e){return Sr("gatherND")},t.prototype.scatterND=function(t,e,n){return Sr("scatterND")},t.prototype.batchToSpaceND=function(t,e,n){return Sr("batchToSpaceND")},t.prototype.spaceToBatchND=function(t,e,n){return Sr("spaceToBatchND")},t.prototype.resizeBilinear=function(t,e,n,r){return Sr("resizeBilinear")},t.prototype.resizeBilinearBackprop=function(t,e,n){return Sr("resizeBilinearBackprop")},t.prototype.resizeNearestNeighbor=function(t,e,n,r){return Sr("resizeNearestNeighbor")},t.prototype.resizeNearestNeighborBackprop=function(t,e,n){return Sr("resizeNearestNeighborBackprop")},t.prototype.batchNormalization=function(t,e,n,r,o,i){return Sr("batchNormalization")},t.prototype.localResponseNormalization4D=function(t,e,n,r,o){return Sr("localResponseNormalization4D")},t.prototype.LRNGrad=function(t,e,n,r,o,i,a){return Sr("LRNGrad")},t.prototype.multinomial=function(t,e,n,r){return Sr("multinomial")},t.prototype.oneHot=function(t,e,n,r){return Sr("oneHot")},t.prototype.cumsum=function(t,e,n,r){return Sr("cumsum")},t.prototype.nonMaxSuppression=function(t,e,n,r,o){return Sr("nonMaxSuppression")},t.prototype.fft=function(t){return Sr("fft")},t.prototype.ifft=function(t){return Sr("ifft")},t.prototype.complex=function(t,e){return Sr("complex")},t.prototype.real=function(t){return Sr("real")},t.prototype.imag=function(t){return Sr("imag")},t.prototype.cropAndResize=function(t,e,n,r,o,i){return Sr("cropAndResize")},t.prototype.depthToSpace=function(t,e,n){return Sr("depthToSpace")},t.prototype.split=function(t,e,n){return Sr("split")},t.prototype.sparseToDense=function(t,e,n,r){return Sr("sparseToDense")},t.prototype.diag=function(t){return Sr("diag")},t.prototype.fill=function(t,e,n){return Sr("fill")},t.prototype.onesLike=function(t){return Sr("onesLike")},t.prototype.zerosLike=function(t){return Sr("zerosLike")},t.prototype.linspace=function(t,e,n){return Sr("linspace")},t.prototype.dispose=function(){return Sr("dispose")},t}();function Sr(t){throw new Error("'"+t+"' not yet implemented or not found in the registry. Did you forget to import the kernel?")}function Ar(t,e){for(var n=t.length,r=[],o=0;o<n;o++){var i=n-1-o,a=t[i]||1;(e[e.length-1-o]||1)>1&&1===a&&r.unshift(i)}return r}function Or(t,e){for(var n=[],r=0;r<e.length;r++){var o=t[t.length-r-1],i=e.length-r-1,a=e[i];(null==o||1===o&&a>1)&&n.unshift(i)}return n}function Dr(t,e){for(var n=[],r=Math.max(t.length,e.length),o=0;o<r;o++){var i=t[t.length-o-1];null==i&&(i=1);var a=e[e.length-o-1];if(null==a&&(a=1),1===i)n.unshift(a);else if(1===a)n.unshift(i);else{if(i!==a)throw Error("Operands could not be broadcast together with shapes "+t+" and "+e+".");n.unshift(i)}}return n}function Tr(t,e,n,r,o,i,a){void 0===a&&(a="channelsLast");var s,u=Br(e),c=u[0],l=u[1];if("channelsLast"===a)s=[c,l,t[3],t[3]];else{if("channelsFirst"!==a)throw new Error("Unknown dataFormat "+a);s=[c,l,t[1],t[1]]}return Fr(t,s,n,r,o,i,!1,a)}function Nr(t,e,n,r,o,i,a){void 0===a&&(a="NDHWC");var s,u,c=Lr(e),l=c[0],h=c[1],f=c[2];if("NDHWC"===a)u="channelsLast",s=[l,h,f,t[4],t[4]];else{if("NCDHW"!==a)throw new Error("Unknown dataFormat "+a);u="channelsFirst",s=[l,h,f,t[1],t[1]]}return Mr(t,s,n,r,o,!1,u,i)}function Fr(t,e,n,r,o,i,a,s){void 0===a&&(a=!1),void 0===s&&(s="channelsLast");var u=[-1,-1,-1,-1],c=u[0],l=u[1],h=u[2],f=u[3];if("channelsLast"===s)c=t[0],l=t[1],h=t[2],f=t[3];else{if("channelsFirst"!==s)throw new Error("Unknown dataFormat "+s);c=t[0],f=t[1],l=t[2],h=t[3]}var p,d=e[0],v=e[1],m=e[3],g=Br(n),y=g[0],b=g[1],x=Br(r),w=x[0],C=x[1],_=Wr(d,w),R=Wr(v,C),I=function(t,e,n,r,o,i,a,s){var u,c,l;if("number"==typeof t){u={top:t,bottom:t,left:t,right:t,type:0===t?"VALID":"NUMBER"};var h=function(t,e,n,r,o){null==r&&(r=Pr(t,e,n));var i=t[1],a=Ur((t[0]-e+2*r)/n+1,o);E(S(a),(function(){return"The output # of rows ("+a+") must be an integer. Change the stride and/or zero pad parameters"}));var s=Ur((i-e+2*r)/n+1,o);return E(S(s),(function(){return"The output # of columns ("+s+") must be an integer. Change the stride and/or zero pad parameters"})),[a,s]}([e,n],i,r,t,s);c=h[0],l=h[1]}else if("same"===t){c=Math.ceil(e/r),l=Math.ceil(n/o);var f=Math.max(0,(c-1)*r+i-e),p=Math.max(0,(l-1)*o+a-n),d=Math.floor(f/2),v=f-d,m=Math.floor(p/2);u={top:d,bottom:v,left:m,right:p-m,type:"SAME"}}else{if("valid"!==t)throw Error("Unknown padding parameter: "+t);u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((e-i+1)/r),l=Math.ceil((n-a+1)/o)}return{padInfo:u,outHeight:c,outWidth:l}}(o,l,h,y,b,_,R,i),k=I.padInfo,A=I.outHeight,O=I.outWidth,D=a?m*f:m;return"channelsFirst"===s?p=[c,D,A,O]:"channelsLast"===s&&(p=[c,A,O,D]),{batchSize:c,dataFormat:s,inHeight:l,inWidth:h,inChannels:f,outHeight:A,outWidth:O,outChannels:D,padInfo:k,strideHeight:y,strideWidth:b,filterHeight:d,filterWidth:v,effectiveFilterHeight:_,effectiveFilterWidth:R,dilationHeight:w,dilationWidth:C,inShape:t,outShape:p,filterShape:e}}function Mr(t,e,n,r,o,i,a,s){void 0===i&&(i=!1),void 0===a&&(a="channelsLast");var u=[-1,-1,-1,-1,-1],c=u[0],l=u[1],h=u[2],f=u[3],p=u[4];if("channelsLast"===a)c=t[0],l=t[1],h=t[2],f=t[3],p=t[4];else{if("channelsFirst"!==a)throw new Error("Unknown dataFormat "+a);c=t[0],p=t[1],l=t[2],h=t[3],f=t[4]}var d,v=e[0],m=e[1],g=e[2],y=e[4],b=Lr(n),x=b[0],w=b[1],C=b[2],_=Lr(r),R=_[0],I=_[1],k=_[2],A=Wr(v,R),O=Wr(m,I),D=Wr(g,k),T=function(t,e,n,r,o,i,a,s,u,c,l){var h,f,p,d;if("number"==typeof t){h={top:t,bottom:t,left:t,right:t,front:t,back:t,type:0===t?"VALID":"NUMBER"};var v=function(t,e,n,r,o,i){null==o&&(o=Pr(t,e,r));var a=t[1],s=t[2],u=Ur((t[0]-e+2*o)/r+1,i);E(S(u),(function(){return"The output # of depths ("+u+") must be an integer. Change the stride and/or zero pad parameters"}));var c=Ur((a-e+2*o)/r+1,i);E(S(c),(function(){return"The output # of rows ("+c+") must be an integer. Change the stride and/or zero pad parameters"}));var l=Ur((s-e+2*o)/r+1,i);return E(S(l),(function(){return"The output # of columns ("+l+") must be an integer. Change the stride and/or zero pad parameters"})),[u,c,l,1]}([e,n,r,1],s,0,o,t,l);f=v[0],p=v[1],d=v[2]}else if("same"===t){var m=((f=Math.ceil(e/o))-1)*o+s-e,g=((p=Math.ceil(n/i))-1)*i+u-n,y=((d=Math.ceil(r/a))-1)*a+c-r,b=Math.floor(m/2),x=m-b,w=Math.floor(g/2),C=g-w,_=Math.floor(y/2);h={top:w,bottom:C,left:_,right:y-_,front:b,back:x,type:"SAME"}}else{if("valid"!==t)throw Error("Unknown padding parameter: "+t);h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},f=Math.ceil((e-s+1)/o),p=Math.ceil((n-u+1)/i),d=Math.ceil((r-c+1)/a)}return{padInfo:h,outDepth:f,outHeight:p,outWidth:d}}(o,l,h,f,x,w,C,A,O,D,s),N=T.padInfo,F=T.outDepth,M=T.outHeight,P=T.outWidth,B=i?y*p:y;return"channelsFirst"===a?d=[c,B,F,M,P]:"channelsLast"===a&&(d=[c,F,M,P,B]),{batchSize:c,dataFormat:a,inDepth:l,inHeight:h,inWidth:f,inChannels:p,outDepth:F,outHeight:M,outWidth:P,outChannels:B,padInfo:N,strideDepth:x,strideHeight:w,strideWidth:C,filterDepth:v,filterHeight:m,filterWidth:g,effectiveFilterDepth:A,effectiveFilterHeight:O,effectiveFilterWidth:D,dilationDepth:R,dilationHeight:I,dilationWidth:k,inShape:t,outShape:d,filterShape:e}}function Pr(t,e,n,r){void 0===r&&(r=1);var o=Wr(e,r);return Math.floor((t[0]*(n-1)-n+o)/2)}function Br(t){return"number"==typeof t?[t,t,t]:2===t.length?[t[0],t[1],1]:t}function Lr(t){return"number"==typeof t?[t,t,t]:t}function Wr(t,e){return e<=1?t:t+(t-1)*(e-1)}function Ur(t,e){if(!e)return t;switch(e){case"round":return Math.round(t);case"ceil":return Math.ceil(t);case"floor":return Math.floor(t);default:throw new Error("Unknown roundingMode "+e)}}function jr(t){var e=Br(t),n=e[0],r=e[1],o=e[2];return 1===n&&1===r&&1===o}function zr(t,e){return jr(t)||jr(e)}function Vr(t){if("NHWC"===t)return"channelsLast";if("NCHW"===t)return"channelsFirst";throw new Error("Unknown dataFormat "+t)}function Gr(t,e,n){if("complex64"===e){if("complex64"===t.dtype)return t.clone();var r=fn(t.shape),o=t.toFloat(),i=n.complex(o,r);return r.dispose(),o.dispose(),i}if(!U(t.dtype,e))return Ot.makeTensorFromDataId(t.dataId,t.shape,e);if("complex64"===t.dtype){var a=n.real(t);return i=a.cast(e),a.dispose(),i}if("int32"===e)return n.int(t);if("bool"===e){var s=an(0,t.dtype);return i=n.notEqual(t,s),s.dispose(),i}throw new Error("Error in Cast: failed to cast "+t.dtype+" to "+e)}function Hr(t,e){return Ot.makeTensorFromDataId(t.dataId,e,t.dtype)}function qr(t,e,n){var r=(e-t)/(n-1),o=tt(n,"float32");o[0]=t;for(var i=1;i<o.length;i++)o[i]=o[i-1]+r;return sn(o,"float32")}Object.freeze({castTensor:Gr,reshapeTensor:Hr,linspaceImpl:qr,upcastType:Et,axesAreInnerMostDims:Ve,combineLocations:Ge,computeOutAndReduceShapes:He,expandShapeToKeepDim:qe,assertAxesAreInnerMostDims:Ke,getAxesPermutation:Xe,getUndoAxesPermutation:$e,getInnerMostAxes:Ye,getBroadcastDims:Ar,getReductionAxes:Or,assertAndGetBroadcastShape:Dr,assertParamsConsistent:Je,computeOutShape:Qe,computePool2DInfo:Tr,computePool3DInfo:Nr,computeConv2DInfo:Fr,computeConv3DInfo:Mr,computeDefaultPad:Pr,tupleValuesAreOne:jr,eitherStridesOrDilationsAreOne:zr,convertConv2DDataFormat:Vr});function Kr(t,e){if(t.length!==e.length)throw new Error("Cannot merge real and imag arrays of different lengths. real:"+t.length+", imag: "+e.length+".");for(var n=new Float32Array(2*t.length),r=0;r<n.length;r+=2)n[r]=t[r/2],n[r+1]=e[r/2];return n}function Xr(t,e){return{real:t[2*e],imag:t[2*e+1]}}function $r(t,e,n,r){t[2*r]=e,t[2*r+1]=n}function Yr(t,e,n){var r=(n?2:-2)*Math.PI*(t/e);return{real:Math.cos(r),imag:Math.sin(r)}}function Jr(t,e,n,r,o){for(var i=Array.from(e).map((function(t,e){return{score:t,boxIndex:e}})).filter((function(t){return t.score>o})).sort((function(t,e){return e.score-t.score})),a=[],s=0;s<i.length;s++){var u=i[s],c=u.score,l=u.boxIndex;if(c<o)break;for(var h=!1,f=a.length-1;f>=0;--f)if(Qr(t,l,a[f])>=r){h=!0;break}if(!h&&(a.push(l),a.length>=n))break}return sn(a,"int32")}function Qr(t,e,n){var r=t.subarray(4*e,4*e+4),o=t.subarray(4*n,4*n+4),i=Math.min(r[0],r[2]),a=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),c=Math.min(o[0],o[2]),l=Math.min(o[1],o[3]),h=Math.max(o[0],o[2]),f=Math.max(o[1],o[3]),p=(s-i)*(u-a),d=(h-c)*(f-l);if(p<=0||d<=0)return 0;var v=Math.max(i,c),m=Math.max(a,l),g=Math.min(s,h),y=Math.min(u,f),b=Math.max(g-v,0)*Math.max(y-m,0);return b/(p+d-b)}function Zr(t,e,n){var r=new Array(t.rank).fill(0),o=t.shape.slice();return e.map((function(e){o[n]=e;var i=t.slice(r,o);return r[n]+=e,i}))}function to(t,e){for(var n=new Array(t.rank),r=0;r<n.length;r++)n[r]=t.shape[r]*e[r];var o=Mn(n,t.dtype);for(r=0;r<o.values.length;++r){for(var i=o.indexToLoc(r),a=new Array(t.rank),s=0;s<a.length;s++)a[s]=i[s]%t.shape[s];var u=t.locToIndex(a);o.values[r]=t.values[u]}return o.toTensor()}function eo(t,e,n,r,o){for(var i=e[e.length-1],a=[t.length/i,i],s=a[0],u=a[1],c=P(n,s*r),l=P("int32",s*r),h=0;h<s;h++){for(var f=h*u,p=t.subarray(f,f+u),d=[],v=0;v<p.length;v++)d.push({value:p[v],index:v});d.sort((function(t,e){return e.value-t.value}));var m=h*r,g=c.subarray(m,m+r),y=l.subarray(m,m+r);for(v=0;v<r;v++)g[v]=d[v].value,y[v]=d[v].index}var b=e.slice();return b[b.length-1]=r,[rn(c,b,n),rn(l,b,"int32")]}function no(t,e){for(var n=[],r=0;r<e.length;r++)e[r]&&n.push(r);var o=Mn(t,"int32"),i=Mn([n.length,t.length],"int32");for(r=0;r<n.length;r++){var a=o.indexToLoc(n[r]),s=r*t.length;i.values.set(a,s)}return i.toTensor()}var ro=function(t,e){this.outputShape=[],this.outputShape=t,this.variableNames=e.map((function(t,e){return"T"+e}));var n=[];this.variableNames.forEach((function(t){n.push("float v"+t+" = get"+t+"AtOutCoords();")}));var r=this.variableNames.map((function(t){return"v"+t})).join(" + ");this.userCode="\n void main() {\n "+n.join("\n ")+"\n\n float result = "+r+";\n setOutput(result);\n }\n "},oo=function(t,e){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.variableNames=e.map((function(t,e){return"T"+e}));var n=[];this.variableNames.forEach((function(t){n.push("vec4 v"+t+" = get"+t+"AtOutCoords();")}));var r=this.variableNames.map((function(t){return"v"+t})).join(" + ");this.userCode="\n void main() {\n "+n.join("\n ")+"\n\n vec4 result = "+r+";\n setOutput(result);\n }\n "},io=function(t,e,n){this.variableNames=["A"];var r=t.windowSize,o=t.batchSize,i=t.inSize,a=Math.ceil(i/r);n||this.variableNames.push("bestIndicesA"),this.outputShape=[o,a];var s="max"===e?">":"<",u=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+r+";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < "+r+"; i++) {\n int inIdx = "+u+";\n float candidate = getA(batch, inIdx);\n if (candidate "+s+" bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n "};function ao(t,e){return["x","y","z","w","u","v"].slice(0,e).map((function(e){return t+"."+e}))}function so(t,e){return 1===e?[t]:ao(t,e)}function uo(){var t,e,n,r,o,i,a,s,u,c;return 2===h().getNumber("WEBGL_VERSION")?(t="#version 300 es",e="in",n="out",r="in",o="texture",i="outputColor",a="out vec4 outputColor;",s="\n bool isnan_custom(float val) {\n return (val > 0.0 || val < 0.0) ? false : val != 0.0;\n }\n\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan_custom(val.x),\n isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\n }\n\n #define isnan(value) isnan_custom(value)\n ",u="",c="\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "):(t="",e="attribute",n="varying",r="varying",o="texture2D",i="gl_FragColor",a="",s="\n #define isnan(value) isnan_custom(value)\n bool isnan_custom(float val) {\n return (val > 0. || val < 1. || val == 0.) ? false : true;\n }\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n }\n ",u="\n uniform float INFINITY;\n\n bool isinf(float val) {\n return abs(val) == INFINITY;\n }\n bvec4 isinf(vec4 val) {\n return equal(abs(val), vec4(INFINITY));\n }\n ",c="\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "),{version:t,attribute:e,varyingVs:n,varyingFs:r,texture2D:o,output:i,defineOutput:a,defineSpecialNaN:s,defineSpecialInf:u,defineRound:c}}function co(t,e,n){void 0===n&&(n="index");var r=Y(e);return r.map((function(e,o){return"int "+t[o]+" = "+n+" / "+e+"; "+(o===r.length-1?"int "+t[o+1]+" = "+n+" - "+t[o]+" * "+e:"index -= "+t[o]+" * "+e)+";"})).join("")}function lo(t){var e=Y(t).map((function(t){return t.toString()}));return"\n int getFlatIndex(ivec3 coords) {\n return coords.x * "+e[0]+" + coords.y * "+e[1]+" + coords.z;\n }\n"}var ho="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isnan(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n";function fo(t,e,n,r){var o=[];t.forEach((function(t){var e=I(t.shapeInfo.logicalShape);t.shapeInfo.isUniform?o.push("uniform float "+t.name+(e>1?"["+e+"]":"")+";"):(o.push("uniform sampler2D "+t.name+";"),o.push("uniform int offset"+t.name+";"))}));var i,a,s=o.join("\n"),u=t.map((function(t){return function(t,e,n){void 0===n&&(n=!1);var r="";r+=n?function t(e){var n,r,o;switch(e.shapeInfo.logicalShape.length){case 0:return n=e.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),o=uo(),"\n vec4 "+r+"() {\n return "+o.texture2D+"("+n+", halfCR);\n }\n ";case 1:return function(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1),r=t.shapeInfo.texShape,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],i=uo();return"\n vec4 "+n+"(int index) {\n vec2 uv = packedUVfrom1D(\n "+o[0]+", "+o[1]+", index);\n return "+i.texture2D+"("+e+", uv);\n }\n "}(e);case 2:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),o=t.shapeInfo.texShape,i=o[0],a=o[1],s=uo();if(null!=o&&k(e,o))return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+a+".0, "+i+".0);\n\n return "+s.texture2D+"("+n+", uv);\n }\n ";var u=[Math.ceil(o[0]/2),Math.ceil(o[1]/2)];return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = packedUVfrom2D("+Math.ceil(e[1]/2)+", "+u[0]+", "+u[1]+", row, col);\n return "+s.texture2D+"("+n+", uv);\n }\n "}(e);case 3:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),i=e.shapeInfo.texShape,a=[Math.ceil(i[0]/2),Math.ceil(i[1]/2)];if(1===n[0]){var s=wo(e,n.slice(1));return"\n "+t(s)+"\n vec4 "+o+"(int b, int row, int col) {\n return "+o+"("+Eo(["b","row","col"],[1,2])+");\n }\n "}var u=a[0],c=a[1],l=Math.ceil(n[2]/2);return"\n vec4 "+o+"(int b, int row, int col) {\n vec2 uv = packedUVfrom3D(\n "+u+", "+c+", "+l*Math.ceil(n[1]/2)+", "+l+", b, row, col);\n return "+uo().texture2D+"("+r+", uv);\n }\n "}(e);default:return function(t){for(var e=t.shapeInfo.logicalShape,n=e.length,r=t.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),i=t.shapeInfo.texShape,a=[Math.ceil(i[0]/2),Math.ceil(i[1]/2)],s=a[0],u=a[1],c=Math.ceil(e[n-1]/2),l=c*Math.ceil(e[n-2]/2),h="int b, int row, int col",f="b * "+l+" + (row / 2) * "+c+" + (col / 2)",p=2;p<n-1;p++)h="int b"+p+", "+h,f="b"+p+" * "+(l*=e[n-p-1])+" + "+f;return"\n vec4 "+o+"("+h+") {\n int index = "+f+";\n int texR = index / "+u+";\n int texC = index - texR * "+u+";\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+u+", "+s+");\n return "+uo().texture2D+"("+r+", uv);\n }\n "}(e)}}(t):function t(e){var n=e.shapeInfo.logicalShape;switch(n.length){case 0:return function(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return"float "+n+"() {return "+e+";}";var r=t.shapeInfo.texShape,o=r[0],i=r[1];if(1===o&&1===i)return"\n float "+n+"() {\n return sampleTexture("+e+", halfCR);\n }\n ";var a=t.shapeInfo.texShape;return"\n float "+n+"() {\n vec2 uv = uvFromFlat("+a[0]+", "+a[1]+", "+yo(e)+");\n return sampleTexture("+e+", uv);\n }\n "}(e);case 1:return function(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return"\n float "+n+"(int index) {\n "+bo(t)+"\n }\n ";var r=t.shapeInfo.texShape,o=r[0],i=r[1];if(1===i&&1===o)return"\n float "+n+"(int index) {\n return sampleTexture("+e+", halfCR);\n }\n ";var a=yo(e);return 1===i?"\n float "+n+"(int index) {\n vec2 uv = vec2(0.5, (float(index + "+a+") + 0.5) / "+o+".0);\n return sampleTexture("+e+", uv);\n }\n ":1===o?"\n float "+n+"(int index) {\n vec2 uv = vec2((float(index + "+a+") + 0.5) / "+i+".0, 0.5);\n return sampleTexture("+e+", uv);\n }\n ":"\n float "+n+"(int index) {\n vec2 uv = uvFromFlat("+o+", "+i+", index + "+a+");\n return sampleTexture("+e+", uv);\n }\n "}(e);case 2:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),i=e.shapeInfo.texShape;if(null!=i&&k(n,i)){var a=i[0];return"\n float "+o+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+i[1]+".0, "+a+".0);\n return sampleTexture("+r+", uv);\n }\n "}var s=M(n),u=s.newShape,c=s.keptDims,l=u;if(l.length<n.length){var h=wo(e,l);return"\n "+t(h)+"\n float "+o+"(int row, int col) {\n return "+o+"("+Eo(["row","col"],c)+");\n }\n "}if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col) {\n int index = round(dot(vec2(row, col), vec2("+n[1]+", 1)));\n "+bo(e)+"\n }\n ";var f=i[0],p=i[1],d=yo(r);return 1===p?"\n float "+o+"(int row, int col) {\n float index = dot(vec3(row, col, "+d+"), vec3("+n[1]+", 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / "+f+".0);\n return sampleTexture("+r+", uv);\n }\n ":1===f?"\n float "+o+"(int row, int col) {\n float index = dot(vec3(row, col, "+d+"), vec3("+n[1]+", 1, 1));\n vec2 uv = vec2((index + 0.5) / "+p+".0, 0.5);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+n[1]+" + col + "+d+";\n vec2 uv = uvFromFlat("+f+", "+p+", index);\n return sampleTexture("+r+", uv);\n }\n"}(e);case 3:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),i=n[1]*n[2],a=n[2],s=M(n),u=s.newShape,c=s.keptDims,l=u;if(l.length<n.length){var h=wo(e,l);return"\n "+t(h)+"\n float "+o+"(int row, int col, int depth) {\n return "+o+"("+Eo(["row","col","depth"],c)+");\n }\n "}if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col, int depth) {\n int index = round(dot(vec3(row, col, depth),\n vec3("+i+", "+a+", 1)));\n "+bo(e)+"\n }\n ";var f=e.shapeInfo.texShape,p=f[0],d=f[1],v=e.shapeInfo.flatOffset;return d===i&&null==v?"\n float "+o+"(int row, int col, int depth) {\n float texR = float(row);\n float texC = dot(vec2(col, depth), vec2("+a+", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+d+".0, "+p+".0);\n return sampleTexture("+r+", uv);\n }\n ":d===a&&null==v?"\n float "+o+"(int row, int col, int depth) {\n float texR = dot(vec2(row, col), vec2("+n[1]+", 1));\n float texC = float(depth);\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+d+".0, "+p+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+i+" + col * "+a+" + depth + "+yo(r)+";\n vec2 uv = uvFromFlat("+p+", "+d+", index);\n return sampleTexture("+r+", uv);\n }\n "}(e);case 4:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),i=n[3],a=n[2]*i,s=n[1]*a,u=M(n),c=u.newShape,l=u.keptDims;if(c.length<n.length){var h=wo(e,c);return"\n "+t(h)+"\n float "+o+"(int row, int col, int depth, int depth2) {\n return "+o+"("+Eo(["row","col","depth","depth2"],l)+");\n }\n "}if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col, int depth, int depth2) {\n int index = round(dot(vec4(row, col, depth, depth2),\n vec4("+s+", "+a+", "+i+", 1)));\n "+bo(e)+"\n }\n ";var f=e.shapeInfo.flatOffset,p=e.shapeInfo.texShape,d=p[0],v=p[1];return v===s&&null==f?"\n float "+o+"(int row, int col, int depth, int depth2) {\n float texR = float(row);\n float texC =\n dot(vec3(col, depth, depth2),\n vec3("+a+", "+i+", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+v+".0, "+d+".0);\n return sampleTexture("+r+", uv);\n }\n ":v===i&&null==f?"\n float "+o+"(int row, int col, int depth, int depth2) {\n float texR = dot(vec3(row, col, depth),\n vec3("+n[1]*n[2]+", "+n[2]+", 1));\n float texC = float(depth2);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+v+".0, "+d+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth, int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+s+" + col * "+a+" +\n depth * "+i+" + depth2;\n vec2 uv = uvFromFlat("+d+", "+v+", index + "+yo(r)+");\n return sampleTexture("+r+", uv);\n }\n "}(e);case 5:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),i=n[4],a=n[3]*i,s=n[2]*a,u=n[1]*s,c=M(n),l=c.newShape,h=c.keptDims;if(l.length<n.length){var f=wo(e,l);return"\n "+t(f)+"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n return "+o+"("+Eo(["row","col","depth","depth2","depth3"],h)+");\n }\n "}if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n float index = dot(\n vec4(row, col, depth, depth2),\n vec4("+u+", "+s+", "+a+", "+i+")) +\n depth3;\n "+bo(e)+"\n }\n ";var p=e.shapeInfo.flatOffset,d=e.shapeInfo.texShape,v=d[0],m=d[1];return m===u&&null==p?"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4("+s+", "+a+", "+i+", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m+".0, "+v+".0);\n return sampleTexture("+r+", uv);\n }\n ":m===i&&null==p?"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n float texR = dot(\n vec4(row, col, depth, depth2),\n vec4("+n[1]*n[2]*n[3]+",\n "+n[2]*n[3]+", "+n[3]+", 1));\n int texC = depth3;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m+".0, "+v+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+u+" + col * "+s+" + depth * "+a+" +\n depth2 * "+i+" + depth3 + "+yo(r)+";\n vec2 uv = uvFromFlat("+v+", "+m+", index);\n return sampleTexture("+r+", uv);\n }\n "}(e);case 6:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),i=M(n),a=i.newShape,s=i.keptDims;if(a.length<n.length){var u=wo(e,a);return"\n "+t(u)+"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n return "+o+"("+Eo(["row","col","depth","depth2","depth3","depth4"],s)+");\n }\n "}var c=n[5],l=n[4]*c,h=n[3]*l,f=n[2]*h,p=n[1]*f;if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int index = round(dot(\n vec4(row, col, depth, depth2),\n vec4("+p+", "+f+", "+h+", "+l+")) +\n dot(\n vec2(depth3, depth4),\n vec2("+c+", 1)));\n "+bo(e)+"\n }\n ";var d=e.shapeInfo.flatOffset,v=e.shapeInfo.texShape,m=v[0],g=v[1];return g===p&&null==d?"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4("+f+", "+h+", "+l+", "+c+")) +\n float(depth4);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+g+".0, "+m+".0);\n return sampleTexture("+r+", uv);\n }\n ":g===c&&null==d?"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n float texR = dot(vec4(row, col, depth, depth2),\n vec4("+n[1]*n[2]*n[3]*n[4]+",\n "+n[2]*n[3]*n[4]+",\n "+n[3]*n[4]+",\n "+n[4]+")) + float(depth3);\n int texC = depth4;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+g+".0, "+m+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+p+" + col * "+f+" + depth * "+h+" +\n depth2 * "+l+" + depth3 * "+c+" + depth4 + "+yo(r)+";\n vec2 uv = uvFromFlat("+m+", "+g+", index);\n return sampleTexture("+r+", uv);\n }\n "}(e);default:throw new Error(n.length+"-D input sampling is not yet supported")}}(t);var o=t.shapeInfo.logicalShape,i=e.logicalShape;return o.length<=i.length&&(r+=n?function(t,e){var n,r=t.name,o=r.charAt(0).toUpperCase()+r.slice(1),i="get"+o+"AtOutCoords",a=t.shapeInfo.logicalShape.length,s=e.logicalShape.length,u=Ar(t.shapeInfo.logicalShape,e.logicalShape),c=xo(s),l=s-a,h=["x","y","z","w","u","v"];n=0===a?"":s<2&&u.length>=1?"coords = 0;":u.map((function(t){return"coords."+h[t+l]+" = 0;"})).join("\n");var f;f=s<2&&a>0?"coords":t.shapeInfo.logicalShape.map((function(t,e){return"coords."+h[e+l]})).join(", ");var p="return outputValue;",d=1===I(t.shapeInfo.logicalShape),v=1===I(e.logicalShape);if(1!==a||d||v){if(d&&!v)p=1===s?"\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ":"\n return vec4(outputValue.x);\n ";else if(u.length){var m=a-2,g=a-1;u.indexOf(m)>-1&&u.indexOf(g)>-1?p="return vec4(outputValue.x);":u.indexOf(m)>-1?p="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":u.indexOf(g)>-1&&(p="return vec4(outputValue.xx, outputValue.zz);")}}else p="\n return vec4(outputValue.xy, outputValue.xy);\n ";return"\n vec4 "+i+"() {\n "+c+" coords = getOutputCoords();\n "+n+"\n vec4 outputValue = get"+o+"("+f+");\n "+p+"\n }\n "}(t,e):function(t,e){var n=t.name,r=n.charAt(0).toUpperCase()+n.slice(1),o="get"+r+"AtOutCoords",i=e.texShape,a=t.shapeInfo.texShape,s=t.shapeInfo.logicalShape.length,u=e.logicalShape.length;if(!t.shapeInfo.isUniform&&s===u&&null==t.shapeInfo.flatOffset&&k(a,i))return"\n float "+o+"() {\n return sampleTexture("+n+", resultUV);\n }\n ";var c=xo(u),l=Ar(t.shapeInfo.logicalShape,e.logicalShape),h=u-s,f=["x","y","z","w","u","v"];return"\n float "+o+"() {\n "+c+" coords = getOutputCoords();\n "+(0===s?"":u<2&&l.length>=1?"coords = 0;":l.map((function(t){return"coords."+f[t+h]+" = 0;"})).join("\n"))+"\n return get"+r+"("+(u<2&&s>0?"coords":t.shapeInfo.logicalShape.map((function(t,e){return"coords."+f[e+h]})).join(", "))+");\n }\n "}(t,e)),r}(t,e,r)})).join("\n"),c=e.texShape,l=uo(),h=function(t){return"\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return "+t.texture2D+"(textureSampler, uv).r;\n }\n "}(l),f=function(t){return t.version+"\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n "+t.varyingFs+" vec2 resultUV;\n "+t.defineOutput+"\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n "+t.defineSpecialNaN+"\n "+t.defineSpecialInf+"\n "+t.defineRound+"\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n "+po+"\n "+vo+"\n "+mo+"\n "}(l);return e.isPacked?(i=function(t,e){switch(t.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];return 1===n[0]?"\n int getOutputCoords() {\n return 2 * int(resultUV.x * "+n[1]+".0);\n }\n ":1===n[1]?"\n int getOutputCoords() {\n return 2 * int(resultUV.y * "+n[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n return 2 * (resTexRC.x * "+n[1]+" + resTexRC.y);\n }\n "}(0,e);case 2:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(k(t,e))return"\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2("+n[0]+", "+n[1]+"));\n }\n ";var r=Math.ceil(t[1]/2);return"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec2(r, c);\n }\n "}(t,e);case 3:return n=t,r=e,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],a=(i=Math.ceil(n[2]/2))*Math.ceil(n[1]/2),"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+o[0]+", "+o[1]+"));\n int index = resTexRC.x * "+o[1]+" + resTexRC.y;\n\n int b = index / "+a+";\n index -= b * "+a+";\n\n int r = 2 * (index / "+i+");\n int c = imod(index, "+i+") * 2;\n\n return ivec3(b, r, c);\n }\n ";default:return function(t,e){for(var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[t.length-1]/2),o=r*Math.ceil(t[t.length-2]/2),i=o,a="",s="b, r, c",u=2;u<t.length-1;u++)a="\n int b"+u+" = index / "+(i*=t[t.length-u-1])+";\n index -= b"+u+" * "+i+";\n "+a,s="b"+u+", "+s;return"\n ivec"+t.length+" getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n\n "+a+"\n\n int b = index / "+o+";\n index -= b * "+o+";\n\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec"+t.length+"("+s+");\n }\n "}(t,e)}var n,r,o,i,a}(e.logicalShape,c),a=function(t){return"\n void setOutput(vec4 val) {\n "+t.output+" = val;\n }\n "}(l)):(i=function(t,e){switch(t.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(t,e){return 1===e[0]?"\n int getOutputCoords() {\n return int(resultUV.x * "+e[1]+".0);\n }\n ":1===e[1]?"\n int getOutputCoords() {\n return int(resultUV.y * "+e[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n return resTexRC.x * "+e[1]+" + resTexRC.y;\n }\n "}(0,e);case 2:return function(t,e){return k(t,e)?"\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2("+e[0]+", "+e[1]+"));\n }\n ":1===t[1]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n return ivec2(index, 0);\n }\n ":1===t[0]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n return ivec2(0, index);\n }\n ":"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n int r = index / "+t[1]+";\n int c = index - r * "+t[1]+";\n return ivec2(r, c);\n }\n "}(t,e);case 3:return n=e,r=co(["r","c","d"],t),"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n "+r+"\n return ivec3(r, c, d);\n }\n ";case 4:return function(t,e){var n=co(["r","c","d","d2"],t);return"\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n "+n+"\n return ivec4(r, c, d, d2);\n }\n "}(t,e);case 5:return function(t,e){var n=co(["r","c","d","d2","d3"],t);return"\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2("+e[0]+",\n "+e[1]+"));\n\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n "}(t,e);case 6:return function(t,e){var n=co(["r","c","d","d2","d3","d4"],t);return"\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n "}(t,e);default:throw new Error(t.length+"-D output sampling is not yet supported")}var n,r}(e.logicalShape,c),a=function(t){return"\n void setOutput(float val) {\n "+t.output+" = vec4(val, 0, 0, 0);\n }\n "}(l)),r&&(f+=go),[f,h,a,s,i,u,n].join("\n")}var po="\nvec2 uvFromFlat(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\n int texelIndex = index / 2;\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n",vo="\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\n int texNumC, int row, int col) {\n int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n",mo="\nvec2 packedUVfrom3D(int texNumR, int texNumC,\n int texelsInBatch, int texelsInLogicalRow, int b,\n int row, int col) {\n int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n",go="\n float getChannel(vec4 frag, vec2 innerDims) {\n vec2 modCoord = mod(innerDims, 2.);\n return modCoord.x == 0. ?\n (modCoord.y == 0. ? frag.r : frag.g) :\n (modCoord.y == 0. ? frag.b : frag.a);\n }\n float getChannel(vec4 frag, int dim) {\n float modCoord = mod(float(dim), 2.);\n return modCoord == 0. ? frag.r : frag.g;\n }\n";function yo(t){return"offset"+t}function bo(t){var e=t.name,n=I(t.shapeInfo.logicalShape);return n<2?"return "+e+";":"\n for (int i = 0; i < "+n+"; i++) {\n if (i == index) {\n return "+e+"[i];\n }\n }\n "}function xo(t){if(t<=1)return"int";if(2===t)return"ivec2";if(3===t)return"ivec3";if(4===t)return"ivec4";if(5===t)return"ivec5";if(6===t)return"ivec6";throw Error("GPU for rank "+t+" is not yet supported")}function wo(t,e){var n=JSON.parse(JSON.stringify(t));return n.shapeInfo.logicalShape=e,n}function Eo(t,e){return e.map((function(e){return t[e]})).join(", ")}var Co=function(t,e,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,E(t.length>2,(function(){return"Packed arg"+(n.charAt(0).toUpperCase()+n.slice(1))+" supports only inputs with rank above 2."}));var o=t[t.length-1],i=Math.ceil(o/e);this.outputShape=t.slice(0,-1),i>1&&this.outputShape.push(i),r||this.variableNames.push("bestIndicesA");var a,s,u=this.outputShape,c=u.length,l=xo(c),h=so("coords",c);if(1===i){var f=xo(s=c+1);a="\n "+f+" sourceLocR = "+f+"("+h.join()+", 0);\n ++"+h[c-1]+";\n "+f+" sourceLocG = "+f+"("+h.join()+", 0);\n ++"+h[c-2]+";\n "+f+" sourceLocA = "+f+"("+h.join()+", 0);\n --"+h[c-1]+";\n "+f+" sourceLocB = "+f+"("+h.join()+", 0);\n --"+h[c-2]+";"}else s=c,a="\n "+l+" sourceLocR = coords;\n ++"+h[c-1]+";\n "+l+" sourceLocG = coords;\n ++"+h[c-2]+";\n "+l+" sourceLocA = coords;\n --"+h[c-1]+";\n "+l+" sourceLocB = coords;\n --"+h[c-2]+";";var p=["x","y","z","w","u","v"].slice(0,s),d="."+p[s-1],v=p.map((function(t){return"int "+t})),m=so("sourceLocR",s-1).concat("inIdx.r"),g=so("sourceLocG",s-1).concat("inIdx.g"),y=so("sourceLocB",s-1).concat("inIdx.b"),b=so("sourceLocA",s-1).concat("inIdx.a"),x="max"===n?"greaterThan":"lessThan",w=r?"":"\n inIdx = round(vec4(getBestIndicesAChannel("+m.join()+"),\n getBestIndicesAChannel("+g.join()+"),\n getBestIndicesAChannel("+y.join()+"),\n getBestIndicesAChannel("+b.join()+")));",C="vec4(\n getAChannel("+m.join()+"),\n hasNextCol ? getAChannel("+g.join()+") : 0.,\n hasNextRow ? getAChannel("+y.join()+") : 0.,\n hasNextRow && hasNextCol ? getAChannel("+b.join()+") : 0.)",_=r?"":"\n float getBestIndicesAChannel("+v.join()+") {\n return getChannel(getBestIndicesA("+p.join()+"),\n vec2("+p.slice(-2).join()+"));\n }";this.userCode="\n float getAChannel("+v.join()+") {\n return getChannel(getA("+p.join()+"),\n vec2("+p.slice(-2).join()+"));\n }\n "+_+"\n void main() {\n "+l+" coords = getOutputCoords();\n bool hasNextCol = "+h[c-1]+" < "+(u[c-1]-1)+";\n bool hasNextRow = "+h[c-2]+" < "+(u[c-2]-1)+";\n "+a+"\n ivec4 srcIdx = ivec4(sourceLocR"+d+", sourceLocG"+d+",\n sourceLocB"+d+", sourceLocA"+d+") * "+e+";\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = "+C+";\n\n for (int i = 0; i < "+e+"; i++) {\n inIdx = srcIdx;\n "+w+"\n vec4 candidate = "+C+";\n bvec4 nan = isnan(candidate);\n bvec4 replace = bvec4(\n vec4("+x+"(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n bestValue = vec4(replace.x ? candidate.x : bestValue.x,\n replace.y ? candidate.y : bestValue.y,\n replace.z ? candidate.z : bestValue.z,\n replace.w ? candidate.w : bestValue.w);\n bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n srcIdx++;\n }\n setOutput(bestIndex);\n }\n "},_o=function(t){this.variableNames=["dy"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,i=t.dilationHeight,a=t.dilationWidth,s=t.effectiveFilterHeight,u=t.effectiveFilterWidth,c=s-1-t.padInfo.top,l=u-1-t.padInfo.left,h=1/(e*n);this.userCode="\n const ivec2 pads = ivec2("+c+", "+l+");\n const float avgMultiplier = float("+h+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+";\n wR += "+i+") {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+u+";\n wC+= "+a+") {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n "},Ro=function(t){this.variableNames=["dy"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,i=t.strideHeight,a=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterDepth,h=t.effectiveFilterHeight,f=t.effectiveFilterWidth,p=l-1-t.padInfo.front,d=h-1-t.padInfo.top,v=f-1-t.padInfo.left,m=1/(e*n*r);this.userCode="\n const ivec3 pads = ivec3("+p+", "+d+", "+v+");\n const float avgMultiplier = float("+m+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < "+l+";\n wD += "+s+") {\n float dyD = float(dyDCorner + wD) / "+o+".0;\n\n if (dyD < 0.0 || dyD >= "+t.outDepth+".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < "+h+";\n wR += "+u+") {\n float dyR = float(dyRCorner + wR) / "+i+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+f+";\n wC += "+c+") {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n }\n setOutput(dotProd);\n }\n "},Io=function(t,e,n,r,o,i){this.outputShape=[],this.variableNames=["x","mean","variance"],Dr(t,e),Dr(t,n);var a="0.0";null!=r&&(Dr(t,r),this.variableNames.push("offset"),a="getOffsetAtOutCoords()");var s="1.0";null!=o&&(Dr(t,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = "+a+";\n float scale = "+s+";\n float inv = scale * inversesqrt(variance + float("+i+"));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n "},ko=function(t,e,n,r,o,i){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],Dr(t,e),Dr(t,n);var a="vec4(0.0)";null!=r&&(Dr(t,r),this.variableNames.push("offset"),a="getOffsetAtOutCoords()");var s="vec4(1.0)";null!=o&&(Dr(t,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n vec4 offset = "+a+";\n vec4 scale = "+s+";\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4("+i+"));\n\n setOutput((x - mean) * inv + offset);\n }\n "},So=function(t,e,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=Dr(e,n),this.userCode="\n float binaryOpComplex(\n float areal, float aimag, float breal, float bimag) {\n "+t+"\n }\n\n void main() {\n float areal = getARealAtOutCoords();\n float aimag = getAImagAtOutCoords();\n float breal = getBRealAtOutCoords();\n float bimag = getBImagAtOutCoords();\n setOutput(binaryOpComplex(areal, aimag, breal, bimag));\n }\n "},Ao="return a + b;",Oo="return a - b;",Do="return a * b;",To="return (a < 0.) ? b * a : a;",No=function(t,e,n){this.variableNames=["A","B"],this.outputShape=Dr(e,n),this.userCode="\n float binaryOperation(float a, float b) {\n "+t+"\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n "},Fo="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",Mo=function(t,e,n,r){void 0===r&&(r=!1),this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=Dr(e,n);var o=this.outputShape.length,i="";if(r)if(0===o||1===I(this.outputShape))i="\n result.y = 0.;\n result.z = 0.;\n result.w = 0.;\n ";else if(i="\n "+xo(o)+" coords = getOutputCoords();\n ",1===o)i+="\n result.y = (coords + 1) >= "+this.outputShape[0]+" ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ";else{var a=so("coords",o);i+="\n bool nextRowOutOfBounds =\n ("+a[o-2]+" + 1) >= "+this.outputShape[o-2]+";\n bool nextColOutOfBounds =\n ("+a[o-1]+" + 1) >= "+this.outputShape[o-1]+";\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n "}this.userCode="\n vec4 binaryOperation(vec4 a, vec4 b) {\n "+t+"\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n\n vec4 result = binaryOperation(a, b);\n "+i+"\n\n setOutput(result);\n }\n "},Po=function(){function t(t){this.variableNames=["A"],this.outputShape=t,this.userCode="\n uniform float minVal;\n uniform float maxVal;\n\n void main() {\n float value = getAAtOutCoords();\n if (isnan(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, minVal, maxVal));\n }\n "}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=r.getUniformLocationNoThrow(o,"maxVal")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),Bo=function(){function t(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode="\n uniform float minVal;\n uniform float maxVal;\n\n void main() {\n vec4 value = getAAtOutCoords();\n\n if (any(isnan(value))) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\n }\n "}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=r.getUniformLocationNoThrow(o,"maxVal")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),Lo=function(t){this.variableNames=["real","imag"],this.outputShape=t,this.userCode="\n void main() {\n float re = abs(getRealAtOutCoords());\n float im = abs(getImagAtOutCoords());\n float mx = max(re, im);\n\n // sadly the length function in glsl is not underflow-safe\n // (at least not on Intel GPUs). So the safe solution is\n // to ensure underflow-safety in all cases.\n setOutput(\n mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n );\n }\n "},Wo=function(t){this.outputShape=[],this.outputShape=Qe(t,1),this.variableNames=t.map((function(t,e){return"T"+e}));var e=new Array(t.length-1);e[0]=t[0][1];for(var n=1;n<e.length;n++)e[n]=e[n-1]+t[n][1];var r=["if (yC < "+e[0]+") setOutput(getT0(yR, yC));"];for(n=1;n<e.length;n++){var o=e[n-1];r.push("else if (yC < "+e[n]+") setOutput(getT"+n+"(yR, yC-"+o+"));")}var i=e.length,a=e[e.length-1];r.push("else setOutput(getT"+i+"(yR, yC-"+a+"));"),this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int yR = coords.x;\n int yC = coords.y;\n\n "+r.join("\n ")+"\n }\n "},Uo=function(t,e){this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[],this.outputShape=Qe(t,e);var n=this.outputShape,r=n.length,o=xo(r),i=so("coords",r),a=["x","y","z","w","u","v"].slice(0,r);this.variableNames=t.map((function(t,e){return"T"+e}));var s=new Array(t.length-1);s[0]=t[0][e];for(var u=1;u<s.length;u++)s[u]=s[u-1]+t[u][e];var c=a[e],l=a.slice(-2),h=a.join(),f="if ("+c+" < "+s[0]+") {\n return getChannel(\n getT0("+h+"), vec2("+l.join()+"));\n }";for(u=1;u<s.length;u++){var p=s[u-1];f+="\n if ("+c+" < "+s[u]+" && "+c+" >= "+s[u-1]+") {\n return getChannel(\n getT"+u+"("+jo(a,c,p)+"),\n vec2("+jo(l,c,p)+"));\n }"}var d=s.length,v=s[s.length-1];f+="\n return getChannel(\n getT"+d+"("+jo(a,c,v)+"),\n vec2("+jo(l,c,v)+"));",this.userCode="\n float getValue("+a.map((function(t){return"int "+t}))+") {\n "+f+"\n }\n\n void main() {\n "+o+" coords = getOutputCoords();\n vec4 result = vec4(getValue("+i+"), 0., 0., 0.);\n\n "+i[r-1]+" = "+i[r-1]+" + 1;\n if ("+i[r-1]+" < "+n[r-1]+") {\n result.g = getValue("+i+");\n }\n\n "+i[r-2]+" = "+i[r-2]+" + 1;\n if ("+i[r-2]+" < "+n[r-2]+") {\n result.a = getValue("+i+");\n }\n\n "+i[r-1]+" = "+i[r-1]+" - 1;\n if ("+i[r-2]+" < "+n[r-2]+" &&\n "+i[r-1]+" < "+n[r-1]+") {\n result.b = getValue("+i+");\n }\n setOutput(result);\n }\n "};function jo(t,e,n){var r=t.indexOf(e);return t.map((function(t,e){return e===r?t+" - "+n:t})).join()}var zo=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,i="channelsLast"===t.dataFormat;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+e+" - "+r+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+o+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n if ("+i+") {\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n } else {\n float dyValue = getDy(b, d2, yR, yC);\n float xValue = getX(b, d1, xR, xC);\n dotProd += (xValue * dyValue);\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n "},Vo=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,i="channelsLast"===t.dataFormat,a=e-1-t.padInfo.top,s=n-1-t.padInfo.left,u=i?1:2,c=i?2:3,l=i?3:1;this.userCode="\n const ivec2 pads = ivec2("+a+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords["+l+"];\n\n ivec2 dyCorner = ivec2(coords["+u+"], coords["+c+"]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.outChannels+"; d2++) {\n\n if ("+i+") {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n } else {\n float xValue = getDy(batch, d2, idyR, idyC);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n "},Go=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.padInfo.front,i=t.padInfo.top,a=t.padInfo.left;this.userCode="\n void main() {\n ivec5 coords = getOutputCoords();\n int wF = coords.x;\n int wR = coords.y;\n int wC = coords.z;\n int d1 = coords.w;\n int d2 = coords.u;\n\n float dotProd = 0.0;\n\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yF = 0; yF < "+t.outDepth+"; yF++) {\n int xF = wF + yF * "+e+" - "+o+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+n+" - "+i+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+r+" - "+a+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yF, yR, yC, d2);\n float xValue = getX(b, xF, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "},Ho=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,i=t.strideHeight,a=t.strideWidth,s=e-1-t.padInfo.front,u=n-1-t.padInfo.top,c=r-1-t.padInfo.left;this.userCode="\n const ivec3 pads = ivec3("+s+", "+u+", "+c+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.u;\n\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyFCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n float dotProd = 0.0;\n for (int wF = 0; wF < "+e+"; wF++) {\n float dyF = float(dyFCorner + wF) / "+o+".0;\n\n if (dyF < 0.0 || dyF >= "+t.outDepth+".0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = "+e+" - 1 - wF;\n\n for (int wR = 0; wR < "+n+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+i+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+n+" - 1 - wR;\n\n for (int wC = 0; wC < "+r+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+a+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+r+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.outChannels+"; d2++) {\n float xValue = getDy(batch, idyF, idyR, idyC, d2);\n float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "},qo=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,i=t.outChannels/t.inChannels;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * "+i+" + dm;\n\n float dotProd = 0.0;\n\n // TO DO: Vec4 over the batch size\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+e+" - "+r+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+o+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "},Ko=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,i=e-1-t.padInfo.top,a=n-1-t.padInfo.left,s=t.outChannels/t.inChannels;this.userCode="\n const ivec2 pads = ivec2("+i+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n // TO DO: Vec4 over the channelMul\n for (int dm = 0; dm < "+s+"; dm++) {\n int d2 = d1 * "+s+" + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "},Xo=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.outputShape=t.outShape;var o=t.padInfo.top,i=t.padInfo.left,a=t.strideHeight,s=t.strideWidth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterHeight,h=t.filterWidth,f=4*Math.floor(t.inChannels/4),p=t.inChannels%4,d="channelsLast"===t.dataFormat,v=d?1:2,m=d?2:3,g=d?3:1,y="",b="";n&&(y=r?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n "+n+"\n }":"\n float activation(float x) {\n "+n+"\n }\n ",b="result = activation(result);");var x=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+y+"\n\n const ivec2 strides = ivec2("+a+", "+s+");\n const ivec2 pads = ivec2("+o+", "+i+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords["+g+"];\n\n ivec2 xRCCorner =\n ivec2(coords["+v+"], coords["+m+"]) * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+l+"; wR++) {\n int xR = xRCorner + wR * "+u+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+h+"; wC++) {\n int xC = xCCorner + wC * "+c+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+f+"; d1 += 4) {\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n if ("+d+") {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec4 xValues = vec4(\n getX(batch, d1, xR, xC),\n getX(batch, d1 + 1, xR, xC),\n getX(batch, d1 + 2, xR, xC),\n getX(batch, d1 + 3, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n\n if ("+(1===p)+") {\n\n if ("+d+") {\n dotProd +=\n getX(batch, xR, xC, "+f+") *\n getW(wR, wC, "+f+", d2);\n } else {\n dotProd +=\n getX(batch, "+f+", xR, xC) *\n getW(wR, wC, "+f+", d2);\n }\n\n } else if ("+(2===p)+") {\n vec2 wValues = vec2(\n getW(wR, wC, "+f+", d2),\n getW(wR, wC, "+f+" + 1, d2)\n );\n\n if ("+d+") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, "+f+"),\n getX(batch, xR, xC, "+f+" + 1)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec2 xValues = vec2(\n getX(batch, "+f+", xR, xC),\n getX(batch, "+f+" + 1, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n } else if ("+(3===p)+") {\n vec3 wValues = vec3(\n getW(wR, wC, "+f+", d2),\n getW(wR, wC, "+f+" + 1, d2),\n getW(wR, wC, "+f+" + 2, d2)\n );\n\n if ("+d+") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, "+f+"),\n getX(batch, xR, xC, "+f+" + 1),\n getX(batch, xR, xC, "+f+" + 2)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec3 xValues = vec3(\n getX(batch, "+f+", xR, xC),\n getX(batch, "+f+" + 1, xR, xC),\n getX(batch, "+f+" + 2, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n }\n }\n }\n\n float result = dotProd;\n "+x+"\n "+b+"\n setOutput(result);\n }\n "},$o=function(t){this.variableNames=["x","W"],this.outputShape=t.outShape;var e=t.padInfo.front,n=t.padInfo.top,r=t.padInfo.left,o=t.strideDepth,i=t.strideHeight,a=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterDepth,h=t.filterHeight,f=t.filterWidth,p=4*Math.floor(t.inChannels/4),d=t.inChannels%4;this.userCode="\n const ivec3 strides = ivec3("+o+", "+i+", "+a+");\n const ivec3 pads = ivec3("+e+", "+n+", "+r+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d2 = coords.u;\n\n ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xFCorner = xFRCCorner.x;\n int xRCorner = xFRCCorner.y;\n int xCCorner = xFRCCorner.z;\n\n // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n // y(yF, yR, yC, d2). ? = to be determined. : = across all\n // values in that axis.\n float dotProd = 0.0;\n for (int wF = 0; wF < "+l+"; wF++) {\n int xF = xFCorner + wF * "+s+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+h+"; wR++) {\n int xR = xRCorner + wR * "+u+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+f+"; wC++) {\n int xC = xCCorner + wC * "+c+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+p+"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wF, wR, wC, d1, d2),\n getW(wF, wR, wC, d1 + 1, d2),\n getW(wF, wR, wC, d1 + 2, d2),\n getW(wF, wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if ("+(1===d)+") {\n dotProd +=\n getX(batch, xF, xR, xC, "+p+") *\n getW(wF, wR, wC, "+p+", d2);\n } else if ("+(2===d)+") {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, "+p+"),\n getX(batch, xF, xR, xC, "+p+" + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, "+p+", d2),\n getW(wF, wR, wC, "+p+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===d)+") {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, "+p+"),\n getX(batch, xF, xR, xC, "+p+" + 1),\n getX(batch, xF, xR, xC, "+p+" + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, "+p+", d2),\n getW(wF, wR, wC, "+p+" + 1, d2),\n getW(wF, wR, wC, "+p+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "},Yo=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.outputShape=t.outShape;var o=t.inHeight,i=t.inWidth,a=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,h=t.dilationWidth,f=t.filterHeight,p=t.filterWidth,d=t.outChannels/t.inChannels,v="",m="";n&&(v=r?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n "+n+"\n }":"\n float activation(float x) {\n "+n+"\n }\n ",m="result = activation(result);");var g=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+v+"\n\n const ivec2 strides = ivec2("+u+", "+c+");\n const ivec2 pads = ivec2("+a+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / "+d+";\n int q = d2 - d1 * "+d+";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < "+f+"; wR++) {\n int xR = xRCorner + wR * "+l+";\n\n if (xR < 0 || xR >= "+o+") {\n continue;\n }\n\n for (int wC = 0; wC < "+p+"; wC++) {\n int xC = xCCorner + wC * "+h+";\n\n if (xC < 0 || xC >= "+i+") {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n\n float result = dotProd;\n "+g+"\n "+m+"\n setOutput(result);\n }\n "},Jo=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.outShape;for(var o=t.inHeight,i=t.inWidth,a=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,h=t.dilationWidth,f=t.filterHeight,p=t.filterWidth,d=p,v="int xR; int xC; int xCOffset;",m=0;m<f;m++)for(var g=0;g<p;g++)v+="\n vec4 xTexelR"+m+"C"+2*g+" = vec4(0.);\n vec4 wR"+m+"C"+g+" = vec4(0.);\n vec4 xR"+m+"C"+g+" = vec4(0.);";for(m=0;m<f;m++)for(var y=0;y<d;y++){if(v+="\n xR = xRCorner + "+m*l+";\n xC = xCCorner + "+(g=2*y)*h+";\n ",1===c){if(g<p&&(v+=s%2==1?"\n xCOffset = xC + 1;\n if(xR >= 0 && xR < "+o+" && xCOffset >= 0 && xCOffset < "+i+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n xCOffset = xC + 1 - 2;\n if(xR >= 0 && xR < "+o+" && xCOffset >= 0 && xCOffset < "+i+") {\n vec4 previous = getX(batch, xR, xCOffset, d1);\n xR"+m+"C"+g+" = vec4(previous.zw, xTexelR"+m+"C"+g+".xy);\n } else {\n xR"+m+"C"+g+" = vec4(0, 0, xTexelR"+m+"C"+g+".xy);\n }\n ":"\n if(xR >= 0 && xR < "+o+" && xC >= 0 && xC < "+i+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n xR"+m+"C"+g+" = xTexelR"+m+"C"+g+";\n ",g+1<p)){var b=s%2==0?x(h):h;h%2==0&&s%2==1||h%2!=0&&s%2!=1?(v+="\n xCOffset = xC + "+s%2+" + "+b+";\n\n if(xR >= 0 && xR < "+o+" &&\n xCOffset >= 0 && xCOffset < "+i+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xCOffset, d1);\n }\n ",h>1&&(v+="\n xCOffset -= 2;\n if(xR >= 0 && xR < "+o+" &&\n xCOffset >= 0 && xCOffset < "+i+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n "),v+="\n xR"+m+"C"+(g+1)+" = vec4(\n xTexelR"+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+".xy);\n "):v+="\n xCOffset = xC + "+b+";\n\n if(xR >= 0 && xR < "+o+" &&\n xCOffset >= 0 && xCOffset < "+i+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xCOffset, d1);\n }\n\n xR"+m+"C"+(g+1)+" = xTexelR"+m+"C"+(g+2)+";\n "}}else g<p&&(v+="\n if(xR >= 0 && xR < "+o+") {\n ",s%2==1?(v+="\n xCOffset = xC + 1 - "+c+";\n if(xCOffset >= 0 && xCOffset < "+i+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n if(xC + 1 >= 0 && xC + 1 < "+i+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xC + 1, d1);\n } else {\n xTexelR"+m+"C"+(g+2)+" = vec4(0.);\n }\n\n xR"+m+"C"+g+" = vec4(\n xTexelR"+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+".zw);\n ",g+1<p&&(v+="\n vec4 final = vec4(0.);\n xCOffset = xC + 1 + "+c+";\n if(xCOffset >= 0 && xCOffset < "+i+") {\n final = getX(batch, xR, xCOffset, d1);\n }\n xR"+m+"C"+(g+1)+" = vec4(xTexelR"+m+"C"+(g+2)+".xy, final.xy);\n ")):(v+="\n if(xC >= 0 && xC < "+i+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n xCOffset = xC + "+c+";\n if(xCOffset >= 0 && xCOffset < "+i+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+(g+2)+" = vec4(0.);\n }\n\n xR"+m+"C"+g+" = vec4(\n xTexelR"+m+"C"+g+".xy, xTexelR"+m+"C"+(g+2)+".xy);\n ",g+1<p&&(v+="\n xR"+m+"C"+(g+1)+" = vec4(\n xTexelR"+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+".zw);\n ")),v+="}");g<p&&(v+="\n vec4 wTexelR"+m+"C"+g+" = getW("+m+", "+g+", d1, q);\n wR"+m+"C"+g+" = vec4(wTexelR"+m+"C"+g+".xz, wTexelR"+m+"C"+g+".xz);\n ",g+1<p&&(v+="\n vec4 wTexelR"+m+"C"+(g+1)+" = getW("+m+", "+(g+1)+", d1, q);\n wR"+m+"C"+(g+1)+" =\n vec4(wTexelR"+m+"C"+(g+1)+".xz, wTexelR"+m+"C"+(g+1)+".xz);"))}for(m=0;m<f;m++)for(g=0;g<p;g++)v+="dotProd += xR"+m+"C"+g+" * wR"+m+"C"+g+";";var w="",E="";n&&(w=r?"vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n "+n+"\n }":"vec4 activation(vec4 x) {\n "+n+"\n }",E="result = activation(result);");var C=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+w+"\n\n const ivec2 strides = ivec2("+u+", "+c+");\n const ivec2 pads = ivec2("+a+", "+s+");\n\n void main() {\n\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2;\n int q = 0;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n vec4 dotProd = vec4(0.);\n\n "+v+"\n\n vec4 result = dotProd;\n "+C+"\n "+E+"\n setOutput(result);\n }\n "},Qo=function(t,e,n,r,o){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var i=t[0],a=t[1],s=t[2],u=t[3],c=e[0],l=n[0],h=n[1];this.outputShape=[c,l,h,u];var f="bilinear"===r?1:0,p=[a-1+".0",s-1+".0"],d=p[0],v=p[1],m=l>1?[""+(a-1)/(l-1),"(y2-y1) * height_ratio","y1*"+d+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+d],g=m[0],y=m[1],b=m[2],x=h>1?[""+(s-1)/(h-1),"(x2-x1) * width_ratio","x1*"+v+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+v],w=x[0],E=x[1],C=x[2];this.userCode="\n const float height_ratio = float("+g+");\n const float width_ratio = float("+w+");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= "+i+") {\n return;\n }\n\n float height_scale = "+y+";\n float width_scale = "+E+";\n\n float in_y = "+b+";\n if( in_y < 0.0 || in_y > "+d+" ) {\n setOutput(float("+o+"));\n return;\n }\n float in_x = "+C+";\n if( in_x < 0.0 || in_x > "+v+" ) {\n setOutput(float("+o+"));\n return;\n }\n\n vec2 sourceFracIndexCR = vec2(in_x,in_y);\n if("+f+" == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\n ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\n\n float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\n float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\n float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\n float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\n\n vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n\n float top = topLeft + (topRight - topLeft) * fracCR.x;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n float newValue = top + (bottom - top) * fracCR.y;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestCR = ivec2(floor(\n sourceFracIndexCR + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\n setOutput(newValue);\n }\n }\n "},Zo=function(t,e,n){this.variableNames=["x"],this.outputShape=t;var r=t.length,o=t[t.length-1],i=n?"<":">";this.userCode="\n int getIndex(int i) {\n "+(n?"return "+o+" -i - 1;":"return i;")+"\n }\n\n void main() {\n "+xo(r)+" coords = getOutputCoords();\n int end = "+ti(r,"coords")+";\n float val = 0.0;\n for (int i = "+o+" - 1; i >= 0; i -= 1) {\n int idx = getIndex(i);\n if (idx "+i+" end) {\n continue;\n }\n if (idx == end && "+e+") {\n continue;\n }\n "+ti(r,"coords")+" = idx;\n val += getX("+function(t,e){if(1===t)return""+e;if(2===t)return e+".x, "+e+".y";if(3===t)return e+".x, "+e+".y, "+e+".z";if(4===t)return e+".x, "+e+".y, "+e+".z, "+e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}(r,"coords")+");\n }\n setOutput(val);\n }\n "};function ti(t,e){if(1===t)return""+e;if(2===t)return e+".y";if(3===t)return e+".z";if(4===t)return e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}var ei=function(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=Nt.DENSE;var e=jt(t),n=uo();this.outputShape=t,this.userCode="\n ivec3 outCoordsFromFlatIndex(int index) {\n "+co(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = 4 * (resTexRC.x * "+e[1]+" + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getA(rc.x, rc.y, rc.z);\n }\n\n "+n.output+" = result;\n }\n "},ni=function(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=Nt.DENSE;var e=jt(t),n=uo();this.outputShape=t,this.userCode="\n ivec3 outCoordsFromFlatIndex(int index) {\n "+co(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = 4 * (resTexRC.x * "+e[1]+" + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\n }\n\n "+n.output+" = result;\n }\n "},ri=function(){function t(t,e,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=n,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = "+this.getHeightCoordString()+";\n int w = "+this.getWidthCoordString()+";\n int d = "+this.getDepthCoordString()+";\n\n int in_h = h / "+e+";\n int offset_h = imod(h, "+e+");\n int in_w = w / "+e+";\n int offset_w = imod(w, "+e+");\n int offset_d = (offset_h * "+e+" + offset_w) *\n "+this.getOutputDepthSize()+";\n int in_d = d + offset_d;\n\n float result = "+this.getInputSamplingString()+";\n setOutput(result);\n }\n "}return t.prototype.getHeightCoordString=function(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"},t.prototype.getWidthCoordString=function(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"},t.prototype.getDepthCoordString=function(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"},t.prototype.getOutputDepthSize=function(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},t.prototype.getInputSamplingString=function(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},t}(),oi=function(t){this.variableNames=["X"],this.outputShape=[t,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\n setOutput(val);\n }\n "},ii=function(t){this.variableNames=["A"],this.outTexUsage=Ft.DOWNLOAD;var e=uo();this.outputShape=t,this.userCode="\n "+ho+"\n\n void main() {\n float x = getAAtOutCoords();\n "+e.output+" = encode_float(x);\n }\n "},ai=function(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Ft.DOWNLOAD;var e=uo();this.outputShape=t,this.userCode="\n "+ho+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\n "+e.output+" = encode_float(x);\n }\n "},si=function(t,e,n){void 0===n&&(n=!1),this.variableNames=["A"];var r=uo(),o=e[0],i=e[1];this.outputShape=t;var a="result";n&&(a="floor(result * 255. + 0.5)"),this.userCode="\n "+lo(t)+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n int flatIndex = getFlatIndex(coords);\n int offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n \n int r = flatIndex / "+i+";\n int c = imod(flatIndex, "+i+");\n vec2 uv = (vec2(c, r) + halfCR) / vec2("+i+".0, "+o+".0);\n vec4 values = "+r.texture2D+"(A, uv);\n\n float result;\n\n if(offset == 0) {\n result = values[0];\n } else if(offset == 1) {\n result = values[1];\n } else if(offset == 2) {\n result = values[2];\n } else {\n result = values[3];\n }\n\n "+r.output+" = vec4("+a+", 0., 0., 0.);\n }\n "},ui=function(t,e,n){void 0===n&&(n=!1),this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var r=uo(),o=e[0],i=e[1];this.outputShape=t;var a="",s="result";n&&(s="floor(result * 255. + 0.5)");for(var u=0;u<=1;u++)for(var c=0;c<=1;c++){var l=2*u+c;a+="\n localCoords = coords;\n if(localCoords[2] + "+c+" < "+t[2]+") {\n localCoords[2] += "+c+";\n if(localCoords[1] + "+u+" < "+t[1]+") {\n localCoords[1] += "+u+";\n\n flatIndex = getFlatIndex(localCoords);\n offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n\n r = flatIndex / "+i+";\n c = imod(flatIndex, "+i+");\n uv = (vec2(c, r) + halfCR) / vec2("+i+".0, "+o+".0);\n values = "+r.texture2D+"(A, uv);\n\n if(offset == 0) {\n result["+l+"] = values[0];\n } else if(offset == 1) {\n result["+l+"] = values[1];\n } else if(offset == 2) {\n result["+l+"] = values[2];\n } else {\n result["+l+"] = values[3];\n }\n }\n }\n "}this.userCode="\n "+lo(t)+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n vec4 result = vec4(0.);\n int flatIndex, r, c, offset;\n ivec3 localCoords;\n vec2 uv;\n vec4 values;\n\n "+a+"\n\n "+r.output+" = "+s+";\n }\n "},ci=function(t,e,n){this.variableNames=["real","imag"];var r=e[1];this.outputShape=e;var o=n?"2.0 * "+Math.PI:"-2.0 * "+Math.PI,i=n?r+".0":"1.0";this.userCode="\n const float exponentMultiplier = "+o+";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n "+t+"\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float("+r+");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < "+r+"; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / "+i+";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n "},li=function(){function t(t,e){this.outputShape=[],this.variableNames=["x"],this.outputShape=t,this.userCode="\n uniform float value;\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.valueLoc&&(e.valueLoc=n.getUniformLocationNoThrow(r,"value")),n.gl.uniform1f(e.valueLoc,t)}},t}(),hi=function(t,e,n){this.variableNames=["A","indices"];var r=t.slice();r[n]=e,this.outputShape=r,this.rank=r.length;var o=xo(this.rank),i=function(t,e){var n=t.length;if(n>4)throw Error("Gather for rank "+n+" is not yet supported");if(1===n)return"int(getIndices(resRC))";for(var r=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],i=0;i<t.length;i++)i===e?o.push("int(getIndices("+r[i]+"))"):o.push(""+r[i]);return o.join()}(t,n);this.userCode="\n void main() {\n "+o+" resRC = getOutputCoords();\n setOutput(getA("+i+"));\n }\n "},fi=function(t,e,n){this.sliceDim=t,this.strides=e,this.variableNames=["x","indices"],this.outputShape=n;var r=xo(e.length),o=xo(n.length),i=this.sliceDim>1?"strides[j]":"strides";this.userCode="\n "+r+" strides = "+r+"("+this.strides+");\n void main() {\n "+o+" coords = getOutputCoords();\n int flattenIndex = 0;\n for (int j = 0; j < "+this.sliceDim+"; j++) {\n int index = round(getIndices(coords[0], j));\n flattenIndex += index * "+i+";\n }\n setOutput(getX(flattenIndex, coords[1]));\n }\n "};function pi(t,e){var n=uo();return Xt(t,e,n.version+"\n precision highp float;\n "+n.attribute+" vec3 clipSpacePos;\n "+n.attribute+" vec2 uv;\n "+n.varyingVs+" vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function di(t,e){return ne(t,e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function vi(t,e){return re(t,e,new Uint16Array([0,1,2,2,1,3]))}function mi(t,e,n,r,o,i,a){ie(n,r);var s=oe(t,e),u=t.TEXTURE_2D;return Gt(t,e,(function(){return t.bindTexture(u,s)})),Gt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE)})),Gt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)})),Gt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MIN_FILTER,t.NEAREST)})),Gt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MAG_FILTER,t.NEAREST)})),Gt(t,e,(function(){return t.texImage2D(u,0,o,n,r,0,i,a,null)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)})),s}function gi(t,e,n,r,o){var i=Ut(n,r);return mi(t,e,i[0],i[1],o.internalFormatFloat,o.textureFormatFloat,t.FLOAT)}function yi(t,e,n,r,o){var i=Ut(n,r);return mi(t,e,i[0],i[1],o.internalFormatHalfFloat,o.textureFormatFloat,o.textureTypeHalfFloat)}function bi(t,e,n,r,o){var i=Ut(n,r);return mi(t,e,i[0],i[1],t.RGBA,t.RGBA,t.UNSIGNED_BYTE)}function xi(t,e,n,r,o){var i=zt(n,r);return mi(t,e,i[0],i[1],o.internalFormatPackedFloat,t.RGBA,t.FLOAT)}function wi(t,e,n,r,o){var i=zt(n,r);return mi(t,e,i[0],i[1],o.internalFormatPackedHalfFloat,t.RGBA,o.textureTypeHalfFloat)}function Ei(t,e,n,r){return Gt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,r)})),se(t,e,n,"clipSpacePos",r,3,20,0)&&se(t,e,n,"uv",r,2,20,12)}function Ci(t,e,n,r,o,i,a){var s,u,c;Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),i instanceof Uint8Array?(s=new Uint8Array(r*o*4),u=t.UNSIGNED_BYTE,c=t.RGBA):(s=new Float32Array(r*o*4),u=t.FLOAT,c=a.internalFormatPackedFloat),s.set(i),Gt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,c,r,o,0,t.RGBA,u,s)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))}function _i(t,e,n,r){Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),r.data instanceof Uint8Array?Gt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,r.width,r.height,0,t.RGBA,t.UNSIGNED_BYTE,r.data)})):Gt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))}function Ri(t,e,n,r,o){var i=t.createBuffer();Gt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,i)}));var a=16*n*r;return Gt(t,e,(function(){return t.bufferData(t.PIXEL_PACK_BUFFER,a,t.STREAM_READ)})),Gt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,0)})),Gt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,null)})),i}function Ii(t,e,n){var r=t,o=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,e),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,o),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),o}function ki(t,e,n,r,o){var i=Ut(n,r),a=i[0],s=i[1],u=new Uint8Array(n*r*4);return Gt(t,e,(function(){return t.readPixels(0,0,a,s,o.downloadTextureFormat,t.UNSIGNED_BYTE,u)})),new Float32Array(u.buffer)}function Si(t,e,n,r,o,i,a,s){var u=t,c=new Float32Array(function(t,e){var n=zt(t,e);return n[0]*n[1]*4}(i,a));return u.bindBuffer(u.PIXEL_PACK_BUFFER,e),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,c),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),c}function Ai(t,e,n,r){var o=new Float32Array(n*r*4);return Gt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,o)})),o}var Oi=Object.freeze({createVertexShader:pi,createVertexBuffer:di,createIndexBuffer:vi,createFloat32MatrixTexture:gi,createFloat16MatrixTexture:yi,createUnsignedBytesMatrixTexture:bi,createPackedMatrixTexture:xi,createFloat16PackedMatrixTexture:wi,bindVertexProgramAttributeStreams:Ei,uploadDenseMatrixToTexture:Ci,uploadPixelDataToTexture:_i,createBufferFromOutputTexture:Ri,downloadFloat32MatrixFromBuffer:Ii,downloadByteEncodedFloatMatrixFromOutputTexture:ki,downloadPackedMatrixFromBuffer:Si,downloadMatrixFromPackedOutputTexture:Ai}),Di=function(){function t(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=h().getNumber("WEBGL_VERSION");null!=t?(this.gl=t,Lt(e,t)):this.gl=Wt(e);var n="WEBGL_color_buffer_float";if(1===h().getNumber("WEBGL_VERSION")){if(this.textureFloatExtension=Kt(this.gl,this.debug,"OES_texture_float"),ke(this.gl,"OES_texture_half_float"))this.textureHalfFloatExtension=Kt(this.gl,this.debug,"OES_texture_half_float");else if(h().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),ke(this.gl,"EXT_color_buffer_half_float"))this.colorBufferHalfFloatExtension=Kt(this.gl,this.debug,"EXT_color_buffer_half_float");else if(h().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",ke(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else{if(!ke(this.gl,"EXT_color_buffer_half_float"))throw new Error("GL context does not support color renderable floats");this.colorBufferHalfFloatExtension=this.gl.getExtension("EXT_color_buffer_half_float")}this.vertexBuffer=di(this.gl,this.debug),this.indexBuffer=vi(this.gl,this.debug),this.framebuffer=ae(this.gl,this.debug),this.textureConfig=Vt(this.gl,this.textureHalfFloatExtension)}return Object.defineProperty(t.prototype,"debug",{get:function(){return h().getBool("DEBUG")},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){var t=this;if(!this.disposed){this.program,this.outputTexture;var e=this.gl;Gt(e,this.debug,(function(){return e.finish()})),Gt(e,this.debug,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)})),Gt(e,this.debug,(function(){return e.deleteFramebuffer(t.framebuffer)})),Gt(e,this.debug,(function(){return e.bindBuffer(e.ARRAY_BUFFER,null)})),Gt(e,this.debug,(function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)})),Gt(e,this.debug,(function(){return e.deleteBuffer(t.indexBuffer)})),this.disposed=!0}},t.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),gi(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),yi(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),bi(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),_i(this.gl,this.debug,t,e)},t.prototype.uploadDenseMatrixToTexture=function(t,e,n,r){this.throwIfDisposed(),Ci(this.gl,this.debug,t,e,n,r,this.textureConfig)},t.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),wi(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),xi(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(pe(this.gl,this.debug,this.framebuffer),this.outputTexture=null),Gt(this.gl,this.debug,(function(){return e.gl.deleteTexture(t)}))},t.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return ki(r.gl,r.debug,e,n,r.textureConfig)}))},t.prototype.downloadPackedMatrixFromBuffer=function(t,e,n,r,o,i){return Si(this.gl,t,0,0,0,o,i,this.textureConfig)},t.prototype.downloadFloat32MatrixFromBuffer=function(t,e){return Ii(this.gl,t,e)},t.prototype.createBufferFromTexture=function(t,e,n){this.bindTextureToFrameBuffer(t);var r=Ri(this.gl,this.debug,e,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r},t.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},t.prototype.createFence=function(t){var e,n,r=this;if(h().getBool("WEBGL_FENCE_API_ENABLED")){var o=t,i=o.fenceSync(o.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),n=function(){var t=o.clientWaitSync(i,0,0);return t===o.ALREADY_SIGNALED||t===o.CONDITION_SATISFIED},e=i}else h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(e=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(e,h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return!0};return{query:e,isFencePassed:n}},t.prototype.downloadMatrixFromPackedTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return Ai(r.gl,r.debug,e,n)}))},t.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,n=$t(e,this.debug,t),r=pi(e,this.debug),o=Zt(e,this.debug);return Gt(e,this.debug,(function(){return e.attachShader(o,r)})),Gt(e,this.debug,(function(){return e.attachShader(o,n)})),te(e,this.debug,o),this.debug&&ee(e,this.debug,o),this.vertexAttrsAreBound||(this.setProgram(o),this.vertexAttrsAreBound=Ei(e,this.debug,this.program,this.vertexBuffer)),o},t.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),null!=t&&Gt(this.gl,this.debug,(function(){return e.gl.deleteProgram(t)}))},t.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,null!=this.program&&this.debug&&ee(this.gl,this.debug,this.program),Gt(this.gl,this.debug,(function(){return e.gl.useProgram(t)}))},t.prototype.getUniformLocation=function(t,e,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?ce(this.gl,this.debug,t,e):le(this.gl,t,e)},t.prototype.getAttributeLocation=function(t,e){var n=this;return this.throwIfDisposed(),Gt(this.gl,this.debug,(function(){return n.gl.getAttribLocation(t,e)}))},t.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},t.prototype.setInputMatrixTexture=function(t,e,n){this.throwIfDisposed(),this.throwIfNoProgram(),he(this.gl,this.debug,this.program,t,e,n)},t.prototype.setOutputMatrixTexture=function(t,e,n){this.setOutputMatrixTextureDriver(t,n,e)},t.prototype.setOutputPackedMatrixTexture=function(t,e,n){this.throwIfDisposed();var r=zt(e,n),o=r[0],i=r[1];this.setOutputMatrixTextureDriver(t,o,i)},t.prototype.setOutputMatrixWriteRegion=function(t,e,n,r){this.setOutputMatrixWriteRegionDriver(n,t,r,e)},t.prototype.setOutputPackedMatrixWriteRegion=function(t,e,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},t.prototype.debugValidate=function(){null!=this.program&&ee(this.gl,this.debug,this.program),de(this.gl)},t.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),Gt(t,this.debug,(function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)}))},t.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),Gt(this.gl,this.debug,(function(){return t.gl.finish()}))},t.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=Kt(this.gl,this.debug,2===h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},t.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},t.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},t.prototype.beginQuery=function(){if(2===h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),o=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,o),o},t.prototype.endQuery=function(){if(2!==h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT)}else{var e=this.gl,n=this.getQueryTimerExtensionWebGL2();e.endQuery(n.TIME_ELAPSED_EXT)}},t.prototype.waitForQueryAndGetTime=function(t){return u(this,void 0,void 0,(function(){var e=this;return c(this,(function(n){switch(n.label){case 0:return[4,T((function(){return e.disposed||e.isQueryAvailable(t,h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}))];case 1:return n.sent(),[2,this.getQueryTime(t,h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}}))}))},t.prototype.getQueryTime=function(t,e){if(0===e)return null;if(2===e){var n=this.gl;return n.getQueryParameter(t,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(t,r.QUERY_RESULT_EXT)/1e6},t.prototype.isQueryAvailable=function(t,e){if(0===e)return!0;if(2===e){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),o=n.getQueryParameter(t,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint}return o=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(t,r.QUERY_RESULT_AVAILABLE_EXT),null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint},t.prototype.pollFence=function(t){var e=this;return new Promise((function(n){e.addItemToPoll((function(){return t.isFencePassed()}),(function(){return n()}))}))},t.prototype.pollItems=function(){for(var t=function(t){for(var e=0;e<t.length;++e){if(!t[e]())break}return e-1}(this.itemsToPoll.map((function(t){return t.isDoneFn}))),e=0;e<=t;++e)(0,this.itemsToPoll[e].resolveFn)();this.itemsToPoll=this.itemsToPoll.slice(t+1)},t.prototype.addItemToPoll=function(t,e){var n=this;this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1||T((function(){return n.pollItems(),0===n.itemsToPoll.length}))},t.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),fe(this.gl,this.debug,t,this.framebuffer),this.debug&&de(this.gl)},t.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(fe(this.gl,this.debug,this.outputTexture,this.framebuffer),this.debug&&de(this.gl)):pe(this.gl,this.debug,this.framebuffer)},t.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var n=e();return this.unbindTextureToFrameBuffer(),n},t.prototype.setOutputMatrixTextureDriver=function(t,e,n){this.throwIfDisposed();var r=this.gl;fe(r,this.debug,t,this.framebuffer),this.debug&&de(r),this.outputTexture=t,Gt(r,this.debug,(function(){return r.viewport(0,0,e,n)})),Gt(r,this.debug,(function(){return r.scissor(0,0,e,n)}))},t.prototype.setOutputMatrixWriteRegionDriver=function(t,e,n,r){var o=this;this.throwIfDisposed(),Gt(this.gl,this.debug,(function(){return o.gl.scissor(t,e,n,r)}))},t.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},t.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},t}();function Ti(t,e){if(t.length!==e.length)throw Error("Binary was compiled with "+t.length+" inputs, but was executed with "+e.length+" inputs");t.forEach((function(t,n){var r=t.logicalShape,o=e[n],i=o.shape;if(!k(r,i))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+i+" must match");if(!t.isUniform||!o.isUniform){var a=t.texShape,s=o.isUniform?null:o.texData.texShape;if(!k(a,s))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+a+" and "+s+" must match")}}))}var Ni=function(t,e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var r=n.filterWidth,o=n.inChannels,i=n.strideWidth,a=n.strideHeight,s=n.padInfo,u=n.outWidth,c=n.dilationWidth,l=n.dilationHeight,h=n.dataFormat,f=s.left,p=s.top,d=o*r,v=uo(),m="channelsLast"===h,g=m?0:1,y=m?1:2,b="",x=0;x<=1;x++)for(var w=0;w<=1;w++)b+="\n blockIndex = rc.y + "+w+";\n pos = rc.x + "+x+";\n\n if(blockIndex < "+t[1]+" && pos < "+t[0]+") {\n offsetY = int(blockIndex / ("+u+")) * "+a+" - "+p+";\n d0 = offsetY + "+l+" * (pos / "+d+");\n\n if(d0 < "+e[g]+" && d0 >= 0) {\n\n offsetX = int(mod(float(blockIndex), "+u+".) * "+i+". - "+f+".);\n d1 = offsetX + "+c+" * (int(mod(float(pos), "+d+".) / "+o+".));\n\n if(d1 < "+e[y]+" && d1 >= 0) {\n\n ch = int(mod(float(pos), "+o+".));\n\n if ("+m+") {\n innerDims = vec2(d1, ch);\n result["+(2*x+w)+"] = getChannel(\n getA(d0, int(innerDims.x),\n int(innerDims.y)), innerDims);\n } else {\n innerDims = vec2(d0, d1);\n result["+(2*x+w)+"] = getChannel(\n getA(ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n }\n ";this.userCode="\n void main() {\n ivec2 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n\n "+b+"\n\n "+v.output+" = result;\n }\n "},Fi=function(t,e,n,r,o){this.variableNames=["x"],this.outputShape=[];var i,a=e,s=t[3]-1;this.outputShape=t;var u="float("+n+") + float("+r+") * sum";i=.5===o?"inversesqrt("+u+")":1===o?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -"+a+"; j <= "+a+"; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= "+s+") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * "+i+";\n setOutput(val);\n }\n "},Mi=function(t,e,n,r,o){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=t,this.depth=t[3],this.depthRadius=e,this.bias=n,this.alpha=r,this.beta=o,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < "+this.depth+"; ++d) {\n int depthBegin = int(max(0.0, float(d - "+e+")));\n int depthEnd = int(min(float("+this.depth+"),\n float(d + "+e+" + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = "+this.depth+";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float("+r+") * norm + float("+n+");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float("+r+")\n * float("+o+")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * "+o+");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n "},Pi=function(t,e,n,r,o){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;var i,a=e,s=t[3]-1;this.outputShape=t;var u="float("+n+") + float("+r+") * sum";i=.5===o?"inversesqrt("+u+")":1===o?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords.x;\n int r = coords.y;\n int c = coords.z;\n int d = coords.w;\n\n bool hasNextCol = d < "+this.outputShape[3]+";\n bool hasNextRow = c < "+this.outputShape[2]+";\n\n vec4 sum = vec4(0.);\n vec4 xFragAtOutputCoords = getX(b, r, c, d);\n\n vec4 xAtOutputCoords = vec4(\n getChannel(xFragAtOutputCoords, vec2(c, d)),\n hasNextCol ?\n getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\n hasNextRow ?\n getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\n (hasNextRow && hasNextCol) ?\n getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\n );\n\n int firstChannel = d - "+a+";\n vec2 cache = vec2(0.);\n if(firstChannel >= 0){\n vec4 firstChannelFrag = getX(b, r, c, firstChannel);\n cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\n if(hasNextRow){\n cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\n }\n }\n\n ivec2 depth = ivec2(d, d + 1);\n for (int j = - "+a+"; j <= "+a+"; j++) {\n ivec2 idx = depth + j;\n bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n bvec2 belowUpperBound = lessThanEqual(idx, ivec2("+s+"));\n\n bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\n bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\n\n if(depthInRange || depthPlusOneInRange){\n vec4 z = vec4(0.);\n vec4 xFragAtCurrentDepth;\n z.xz = cache.xy;\n if(depthPlusOneInRange && hasNextCol){\n xFragAtCurrentDepth = idx.y != d ?\n getX(b, r, c, idx.y) : xFragAtOutputCoords;\n z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\n if(hasNextRow){\n z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\n }\n }\n cache.xy = z.yw;\n sum += z * z;\n }\n }\n vec4 result = xAtOutputCoords * "+i+";\n setOutput(result);\n }\n "},Bi=function(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;var e=t.strideHeight,n=t.strideWidth,r=t.dilationHeight,o=t.effectiveFilterHeight,i=t.effectiveFilterWidth,a=o-1-t.padInfo.top,s=i-1-t.padInfo.left,u=o*i-1;this.userCode="\n const ivec2 pads = ivec2("+a+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+o+";\n wR += "+r+") {\n float dyR = float(dyRCorner + wR) / "+e+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+i+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+n+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = "+u+" - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * "+i+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n "},Li=function(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.dilationDepth,i=t.dilationHeight,a=t.dilationWidth,s=t.effectiveFilterDepth,u=t.effectiveFilterHeight,c=t.effectiveFilterWidth,l=s-1-t.padInfo.front,h=u-1-t.padInfo.top,f=c-1-t.padInfo.left,p=s*u*c-1;this.userCode="\n const ivec3 pads = ivec3("+l+", "+h+", "+f+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < "+s+";\n wD += "+o+") {\n float dyD = float(dyDCorner + wD) / "+e+".0;\n\n if (dyD < 0.0 || dyD >= "+t.outDepth+".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < "+u+";\n wR += "+i+") {\n float dyR = float(dyRCorner + wR) / "+n+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+c+";\n wC += "+a+") {\n float dyC = float(dyCCorner + wC) / "+r+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n int maxPosValue = "+p+" -\n int(getMaxPos(batch, idyD, idyR, idyC, ch));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue =\n wD * "+u+" * "+c+" +\n wR * "+c+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n }\n setOutput(dotProd);\n }\n "},Wi=function(t,e,n,r,o,i,a){void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===i&&(i=null),void 0===a&&(a=!1),this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;var s=n?t[1]:t[2],u=Math.ceil(s/2),c=n?"i * 2, rc.y":"rc.y, i * 2",l=r?"rc.z, i * 2":"i * 2, rc.z",h=n?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],p="",d="";i&&(p=a?"vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n "+i+"\n }":"vec4 activation(vec4 x) {\n "+i+"\n }",d="result = activation(result);");var v=o?"result += getBiasAtOutCoords();":"";o&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+p+"\n\n const float sharedDimension = "+u+".0;\n\n vec4 dot2x2ARowBCol(ivec3 rc) {\n vec4 result = vec4(0);\n for (int i = 0; i < "+u+"; i++) {\n vec4 a = getMatrixA(rc.x, "+c+");\n vec4 b = getMatrixB(rc.x, "+l+");\n\n // These swizzled products need to be separately added.\n // See: https://github.com/tensorflow/tfjs/issues/1735\n result += ("+h[0]+" * "+f[0]+");\n result += ("+h[1]+" * "+f[1]+");\n }\n return result;\n }\n\n void main() {\n ivec3 rc = getOutputCoords();\n vec4 result = dot2x2ARowBCol(rc);\n\n "+v+"\n\n "+d+"\n\n setOutput(result);\n }\n "},Ui=function(){function t(t,e,n){this.variableNames=["probs"],this.outputShape=[t,n],this.userCode="\n uniform float seed;\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < "+(e-1)+"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float("+(e-1)+"));\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.seedLoc&&(e.seedLoc=n.getUniformLocation(r,"seed")),n.gl.uniform1f(e.seedLoc,t)}},t}(),ji=function(t,e,n,r){this.variableNames=["indices"],this.outputShape=[t,e],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float("+r+"), float("+n+"),\n float(index == coords.y)));\n }\n "},zi=function(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=t;var e=t.length;if(0===e)this.userCode="\n void main() {\n setOutput(vec4(getA(), 0., 0., 0.));\n }\n ";else{var n=so("rc",e),r=xo(e),o=function(t,e,n){if(1===t)return"rc > "+e[0];for(var r="",o=t-2;o<t;o++)r+=n[o]+" >= "+e[o],o<t-1&&(r+="||");return r}(e,t,n),i=function(t,e,n,r){if(1===t)return"";var o=r.slice(-2);return"\n int r = "+o[0]+";\n int c = "+o[1]+";\n int rp1 = r + 1;\n int cp1 = c + 1;\n\n bool cEdge = cp1 >= "+e+";\n bool rEdge = rp1 >= "+n+";\n "}(e,t[t.length-1],t[t.length-2],n),a=function(t,e){var n=t.length,r=function(t,e){for(var n=[],r=0;r<=1;r++)for(var o=0;o<=1;o++){for(var i=(0===r?"r":"rp1")+", "+(0===o?"c":"cp1"),a=2;a<t;a++)i=e[e.length-1-a]+","+i;n.push(i)}return n}(n,e);return 1===n?"getA(rc),\n rc + 1 >= "+t[0]+" ? 0. : getA(rc + 1),\n 0, 0":"getA("+r[0]+"),\n cEdge ? 0. : getA("+r[1]+"),\n rEdge ? 0. : getA("+r[2]+"),\n rEdge || cEdge ? 0. : getA("+r[3]+")"}(t,n);this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n\n if("+o+") {\n setOutput(vec4(0));\n } else {\n "+i+"\n\n setOutput(vec4("+a+"));\n }\n }\n "}},Vi=function(t,e,n){this.variableNames=["x"],this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));var r=t.length,o=xo(r),i=e.map((function(t){return t[0]})).join(","),a=e.map((function(e,n){return e[0]+t[n]})).join(","),s=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);this.userCode=1!==r?"\n "+o+" start = "+o+"("+i+");\n "+o+" end = "+o+"("+a+");\n\n void main() {\n "+o+" outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(float("+n+"));\n } else {\n "+o+" coords = outC - start;\n setOutput(getX("+s+"));\n }\n }\n ":"\n int start = "+i+";\n int end = "+a+";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(float("+n+"));\n } else {\n setOutput(getX(outC - start));\n }\n }\n "},Gi=function(t,e,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));for(var r=t.length,o=xo(r),i=e.map((function(t){return t[0]})).join(","),a=e.map((function(e,n){return e[0]+t[n]})).join(","),s=so("rc",r),u=so("source",r),c=s[r-1]+" < "+this.outputShape[r-1],l=1===r?"source":"vec2("+u.slice(-2).join()+")",h=[o+" rc = outputLoc;",s[r-1]+" += 1;\n if("+c+") {\n ",1===r?"":"}\n rc = outputLoc;\n "+s[r-2]+" += 1;\n if("+s[r-2]+" < "+this.outputShape[r-2]+") {",1===r?"":" "+s[r-1]+" += 1;\n if("+c+") {"],f=1===r?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",p="",d=0,v=1===r?2:4;d<v;d++)p+="\n "+h[d]+"\n if ("+f+") {\n result["+d+"] = float("+n+");\n } else {\n "+o+" source = rc - start;\n result["+d+"] = getChannel(getX("+u.join()+"), "+l+");\n }\n ";p+=1===r?"} ":"}}",this.userCode="\n const "+o+" start = "+o+"("+i+");\n const "+o+" end = "+o+"("+a+");\n\n void main() {\n "+o+" outputLoc = getOutputCoords();\n vec4 result = vec4(0.);\n "+p+"\n setOutput(result);\n }\n "},Hi=function(t,e,n){if(this.variableNames=["x"],"avg"===e&&n)throw new Error("Cannot compute positions for average pool.");var r=t.filterWidth,o=t.strideHeight,i=t.strideWidth,a=t.dilationHeight,s=t.dilationWidth,u=t.effectiveFilterHeight,c=t.effectiveFilterWidth,l=t.padInfo.top,h=t.padInfo.left;this.outputShape=t.outShape;var f="avg"===e,p="0.0";if(f||(p="-1.0 / 1e-20"),n)this.userCode="\n const ivec2 strides = ivec2("+o+", "+i+");\n const ivec2 pads = ivec2("+l+", "+h+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+a+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+c+";\n wC += "+s+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = wR * "+c+" + wC;\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var d=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===e&&(d="avgValue / count");var v=4*Math.floor(r/4),m=r%4,g="\n if ("+f+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec2 strides = ivec2("+o+", "+i+");\n const ivec2 pads = ivec2("+l+", "+h+");\n const float initializationValue = "+p+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= "+t.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4("+p+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+a+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+v+"; wC += 4) {\n int xC = xCCorner + wC * "+s+";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n getValue(batch, xR, xC + 3 * "+s+", d)\n );\n\n "+g+"\n }\n\n int xC = xCCorner + "+v+";\n if ("+(1===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+g+"\n } else if ("+(2===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n initializationValue,\n initializationValue\n );\n\n "+g+"\n } else if ("+(3===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n initializationValue\n );\n\n "+g+"\n }\n }\n setOutput("+d+");\n }\n "}},qi=function(t,e,n){if(this.variableNames=["x"],"avg"===e&&n)throw new Error("Cannot compute positions for average pool.");var r=t.filterWidth,o=t.strideDepth,i=t.strideHeight,a=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterDepth,h=t.effectiveFilterHeight,f=t.effectiveFilterWidth,p=t.padInfo.front,d=t.padInfo.top,v=t.padInfo.left;this.outputShape=t.outShape;var m="avg"===e,g="0.0";if(m||(g="-1.0 / 1e-20"),n)this.userCode="\n const ivec3 strides =\n ivec3("+o+", "+i+", "+a+");\n const ivec3 pads = ivec3("+p+", "+d+", "+v+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n\n for (int wD = 0; wD < "+l+";\n wD += "+s+") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+h+";\n wR += "+u+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+f+";\n wC += "+c+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xD, xR, xC, ch);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition =\n wD * "+h+" * "+f+" +\n wR * "+f+" + wC;;\n }\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var y=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===e&&(y="avgValue / count");var b=4*Math.floor(r/4),x=r%4,w="\n if ("+m+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec3 strides =\n ivec3("+o+", "+i+", "+a+");\n const ivec3 pads = ivec3("+p+", "+d+", "+v+");\n const float initializationValue = "+g+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xD, int xR, int xC, int ch) {\n if (xC < 0 || xC >= "+t.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xD, xR, xC, ch);\n }\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\n // ? = to be determined\n vec4 minMaxValue = vec4("+g+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wD = 0; wD < "+l+";\n wD += "+s+") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+h+";\n wR += "+u+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+b+"; wC += 4) {\n int xC = xCCorner + wC * "+c+";\n\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+c+", ch),\n getValue(batch, xD, xR, xC + 2 * "+c+", ch),\n getValue(batch, xD, xR, xC + 3 * "+c+", ch)\n );\n\n "+w+"\n }\n\n int xC = xCCorner + "+b+";\n if ("+(1===x)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+w+"\n } else if ("+(2===x)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+c+", ch),\n initializationValue,\n initializationValue\n );\n\n "+w+"\n } else if ("+(3===x)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+c+", ch),\n getValue(batch, xD, xR, xC + 2 * "+c+", ch),\n initializationValue\n );\n\n "+w+"\n }\n }\n setOutput("+y+");\n }\n }\n "}},Ki=function(t,e){this.variableNames=["x"];var n=t.windowSize,r=t.batchSize,o=t.inSize,i=Math.ceil(o/n);this.outputShape=[r,i];var a="0.0",s="";"prod"===e?a="1.0":"min"===e?(a="1.0 / 1e-20",s="min"):"max"===e&&(a="-1.0 / 1e-20",s="max");var u=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"sum"===e?u="sumValue":"prod"===e?u="prodValue":"all"===e?u="allValue":"any"===e&&(u="anyValue");var c=4*Math.floor(n/4),l=n%4,h="\n if ("+("sum"===e)+") {\n sumValue += dot(values, ones);\n } else if ("+("prod"===e)+") {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = "+s+"(values, minMaxValue);\n }\n ",f="vec4";"all"===e?(a="1.0",h="\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n ",f="bvec4"):"any"===e&&(a="0.0",h="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",f="bvec4");var p="";o%n>0&&(p="\n if (inIdx < 0 || inIdx >= "+o+") {\n return initializationValue;\n }\n "),this.userCode="\n const float initializationValue = "+a+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n "+p+"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+n+";\n\n vec4 minMaxValue = vec4("+a+");\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < "+c+"; i += 4) {\n int inIdx = inOffset + i;\n "+f+" values = "+f+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n "+h+"\n }\n\n int inIdx = inOffset + "+c+";\n if ("+(1===l)+") {\n "+f+" values = "+f+"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+h+"\n } else if ("+(2===l)+") {\n "+f+" values = "+f+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n "+h+"\n } else if ("+(3===l)+") {\n "+f+" values = "+f+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n "+h+"\n }\n setOutput("+u+");\n }\n "},Xi=function(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var n="",r=0;r<4;r++){var o="thisRC = rc;";r%2==1&&(o+="thisRC.z += 1;"),r>1&&(o+="thisRC.y += 1;"),n+="\n "+o+"\n "+(r>0?"if(thisRC.y < rows && thisRC.z < cols){":"")+"\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result["+r+"] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n "+(r>0?"}":"")+"\n "}this.userCode="\n \n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n "+co(["r","c","d"],e)+"\n return ivec3(r, c, d);\n }\n \n "+lo(t)+"\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = "+t[1]+";\n int cols = "+t[2]+";\n\n "+n+"\n\n setOutput(result);\n }\n "},$i=function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],i=r[2],a=t.shape,s=a[1],u=a[2],c=[n&&s>1?o-1:o,n&&u>1?i-1:i],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=c[0]/l[0],f=c[1]/l[1],p=1/h,d=1/f,v=2*Math.ceil(p)+2,m=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+h+");\n const float widthScale = float("+f+");\n\n const float invHeightScale = float("+p+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+v+");\n const int winWidth = int("+m+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), "+(o-1)+".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), "+(i-1)+".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "},Yi=function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var o=t[0],i=t[1],a=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?i-1:i,r&&n>1?a-1:a],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/c[0]+",\n "+u[1]/c[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+a+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n "},Ji=function(t,e,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=t[0],i=t[1],a=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?i-1:i,r&&n>1?a-1:a],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n "+u[0]/c[0]+",\n "+u[1]/c[1]+",\n "+u[1]/c[1]+");\n const vec3 inputShapeRC = vec3("+i+".0, "+a+".0,\n "+a+".0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);\n ivec3 sourceCeilRC = ivec3(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < "+(s-1)+";\n bool hasNextRow = coords.z < "+(n-1)+";\n\n // In parallel, construct four corners for all four components in\n // packed 2x2 cell.\n vec4 topLeft = vec4(\n getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 bottomLeft = vec4(\n getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 topRight = vec4(\n getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec4 bottomRight = vec4(\n getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\n\n vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n vec4 newValue = mix(top, bottom, fracRC.x);\n\n setOutput(newValue);\n }\n "},Qi=function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],i=r[2],a=t.shape,s=a[1],u=a[2],c=[n&&s>1?o-1:o,n&&u>1?i-1:i],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=c[0]/l[0],f=c[1]/l[1],p=1/h,d=1/f,v=2*Math.ceil(p)+2,m=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+h+");\n const float widthScale = float("+f+");\n\n const float invHeightScale = float("+p+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+v+");\n const int winWidth = int("+m+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float sourceFracRow =\n float("+c[0]+") *\n (float(dyR) / float("+l[0]+"));\n\n float sourceFracCol =\n float("+c[1]+") *\n (float(dyC) / float("+l[1]+"));\n\n int sourceNearestRow = int(min(\n float(int("+o+") - 1),\n "+n+" ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int("+i+") - 1),\n "+n+" ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "},Zi=function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var o=t[0],i=t[1],a=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?i-1:i,r&&n>1?a-1:a],c=[r&&e>1?e-1:e,r&&n>1?n-1:n],l=r?"0.5":"0.0";this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/c[0]+",\n "+u[1]/c[1]+");\n const vec2 inputShapeRC = vec2("+i+".0, "+a+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + "+l+")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n "},ta=function(t,e){this.variableNames=["x"];var n=t.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");if(this.outputShape=t,1!==n){var r=t.map((function(n,r){return function(n){return-1!==e.indexOf(n)&&1!==t[n]?t[n]+" - coords["+n+"] - 1":"coords["+n+"]"}(r)})).join(","),o=xo(n);this.userCode="\n void main() {\n "+o+" coords = getOutputCoords();\n setOutput(getX("+r+"));\n }\n "}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX("+t[0]+" - coord - 1));\n }\n "},ea=function(t,e){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;var n=t.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");this.outputShape=t;var r=so("rc",n),o=r[n-1]+" + 1 < "+this.outputShape[n-1],i=r[n-2]+" + 1 < "+this.outputShape[n-2],a=xo(n);function s(n){var r=t.map((function(r,o){return function(n,r){return-1!==e.indexOf(n)&&1!==t[n]?t[n]+" - "+r[n]+" - 1":""+r[n]}(o,n)}));return"getChannel(getX("+r.join(",")+"), vec2("+r.slice(-2).join(",")+"))"}this.userCode=1===n?"\n void main(){\n int rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = getChannel(getX("+t[0]+" - rc - 1),\n "+t[0]+" - rc - 1);\n if("+o+"){\n result.g = getChannel(getX("+t[0]+" - (rc + 1) - 1),\n "+t[0]+" - (rc + 1) - 1);\n }\n setOutput(result);\n }\n ":"\n void main() {\n "+a+" rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = "+function(t){return s(t)}(r.slice())+";\n if("+o+"){\n result.g = "+function(t){return t[n-1]="("+t[n-1]+" + 1)",s(t)}(r.slice())+";\n }\n if("+i+") {\n result.b = "+function(t){return t[n-2]="("+t[n-2]+" + 1)",s(t)}(r.slice())+";\n if("+o+") {\n result.a = "+function(t){return t[n-1]="("+t[n-1]+" + 1)",t[n-2]="("+t[n-2]+" + 1)",s(t)}(r.slice())+";\n }\n }\n setOutput(result);\n }\n "},na=function(t,e,n,r,o,i,a){void 0===a&&(a=!0),this.variableNames=["updates","indices","defaultValue"],this.outputShape=i;var s=xo(o.length),u=xo(i.length),c="";1===n?c="i":2===n&&(c="i, j");var l="getIndices("+c+")",h="";1===r?h="i":2===r&&(h="i, coords[1]");var f="getUpdates("+h+")",p=e>1?"strides[j]":"strides";this.userCode="\n "+s+" strides = "+s+"("+o+");\n\n void main() {\n "+u+" coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < "+t+"; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < "+e+"; j++) {\n int index = round("+l+");\n flattenedIndex += index * "+p+";\n }\n if (flattenedIndex == coords[0]) {\n sum += "+f+";\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(), sum, float(found)));\n }\n "},ra=function(t,e){this.variableNames=["x","segmentIds"];var n=t.windowSize,r=t.batchSize,o=t.inSize,i=t.numSegments,a=i*Math.ceil(o/n);this.outputShape=[r,a];var s=4*Math.floor(n/4),u=n%4,c="\n sumValue += dot(values, segFilter);\n ",l="";o%n>0&&(l="\n if (inIdx < 0 || inIdx >= "+o+") {\n return initializationValue;\n }\n ");var h="";o%n>0&&(h="\n if (inIdx < 0 || inIdx >= "+o+") {\n return -1.0;\n }\n "),this.userCode="\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n "+l+"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n "+h+"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n "+i+")) * float("+n+"));\n int currentSeg = int(mod(float(outIdx), float("+i+")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < "+s+"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n "+c+"\n }\n\n int inIdx = inOffset + "+s+";\n if ("+(1===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n "+c+"\n } else if ("+(2===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n "+c+"\n } else if ("+(3===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n "+c+"\n }\n setOutput(sumValue);\n }\n "},oa=function(t,e,n){var r,o;if(this.variableNames=["c","a","b"],this.outputShape=e,n>4)throw Error("Where for rank "+n+" is not yet supported");if(1===n)o="resRC",r="resRC";else{for(var i=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],s=[],u=0;u<e.length;u++)s.push(""+i[u]),u<t&&a.push(""+i[u]);r=a.join(),o=s.join()}var c=xo(n);this.userCode="\n void main() {\n "+c+" resRC = getOutputCoords();\n float cVal = getC("+r+");\n if (cVal >= 1.0) {\n setOutput(getA("+o+"));\n } else {\n setOutput(getB("+o+"));\n }\n }\n "},ia=function(){function t(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;var e,n=xo(this.rank),r="uniform int start["+this.rank+"];",o=function(t){if(1===t)return"sourceLoc";if(t<=6)return aa.slice(0,t).map((function(t){return"sourceLoc."+t})).join(",");throw Error("Slicing for rank "+t+" is not yet supported")}(this.rank);e="\n "+n+" sourceLoc;\n "+n+" coords = getOutputCoords();\n "+t.map((function(t,e){return"sourceLoc."+aa[e]+" = start["+e+"] + coords."+aa[e]+";"})).join("\n")+"\n ",this.userCode="\n "+r+"\n void main() {\n "+e+"\n setOutput(getSource("+o+"));\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),aa=["x","y","z","w","u","v"],sa=function(){function t(t){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length;var e=xo(this.rank),n=so("coords",this.rank),r=so("sourceLoc",this.rank),o=1===this.rank?"sourceLoc":"vec2("+r.slice(-2).join()+")",i="getChannel(getSource("+r.join()+"), "+o+")",a="\n result.x = "+i+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.y = "+i+";\n --"+r[this.rank-1]+";\n }\n ",s=1===this.rank?"":"\n --"+n[this.rank-1]+";\n if (++"+n[this.rank-2]+" < "+t[this.rank-2]+") {\n ++"+r[this.rank-2]+";\n result.z = "+i+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.w = "+i+";\n }\n }\n ",u=this.rank<=4?"sourceLoc = coords +\n "+e+"("+t.map((function(t,e){return"start["+e+"]"})).join()+");":t.map((function(t,e){return r[e]+" = "+n[e]+" + start["+e+"];"})).join("\n");this.userCode="\n uniform int start["+this.rank+"];\n void main() {\n "+e+" coords = getOutputCoords();\n "+e+" sourceLoc;\n "+u+"\n vec4 result = vec4(0.);\n "+a+"\n "+s+"\n setOutput(result);\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),ua=function(t,e,n){this.variableNames=["x"],this.outputShape=n;var r=n.length,o=xo(n.length),i=xo(n.length),a="";if(1===r)a="coords * strides + begin";else{var s=0;a=n.map((function(t,e){return s++,1===n.length?"coords * strides["+e+"] + begin["+e+"]":"coords["+(s-1)+"] * strides["+e+"] + begin["+e+"]"})).join(",")}this.userCode="\n "+o+" begin = "+o+"("+t+");\n "+o+" strides = "+o+"("+e+");\n\n void main() {\n "+i+" coords = getOutputCoords();\n setOutput(getX("+a+"));\n }\n "},ca=function(){function t(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return t.prototype.acquireTexture=function(t,e,n){var r,o=la(e,n),i=ha(t,o,n);if(i in this.freeTextures||(this.freeTextures[i]=[]),i in this.usedTextures||(this.usedTextures[i]=[]),this.freeTextures[i].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var a=this.freeTextures[i].shift();return this.usedTextures[i].push(a),a}return this.numUsedTextures++,this.log(),o===Mt.PACKED_2X2_FLOAT32?r=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):o===Mt.PACKED_2X2_FLOAT16?r=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):o===Mt.UNPACKED_FLOAT32?r=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):o===Mt.UNPACKED_FLOAT16?r=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):o===Mt.PACKED_4X1_UNSIGNED_BYTE&&(r=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[i].push(r),r},t.prototype.releaseTexture=function(t,e,n,r){if(null!=this.freeTextures){var o=ha(e,la(n,r),r);o in this.freeTextures||(this.freeTextures[o]=[]),this.freeTextures[o].push(t),this.numFreeTextures++,this.numUsedTextures--;var i=this.usedTextures[o],a=i.indexOf(t);if(a<0)throw new Error("Cannot release a texture that was never provided by this texture manager");i.splice(a,1),this.log()}},t.prototype.log=function(){if(this.logEnabled)this.numFreeTextures,this.numUsedTextures},t.prototype.getNumUsedTextures=function(){return this.numUsedTextures},t.prototype.getNumFreeTextures=function(){return this.numFreeTextures},t.prototype.dispose=function(){var t=this;if(null!=this.freeTextures){for(var e in this.freeTextures)this.freeTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e)}));for(var e in this.usedTextures)this.usedTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e)}));this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},t}();function la(t,e){if(t===Ft.UPLOAD)return Mt.PACKED_2X2_FLOAT32;if(t===Ft.RENDER||null==t)return function(t){return h().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?t?Mt.PACKED_2X2_FLOAT32:Mt.UNPACKED_FLOAT32:t?Mt.PACKED_2X2_FLOAT16:Mt.UNPACKED_FLOAT16}(e);if(t===Ft.DOWNLOAD||t===Ft.PIXELS)return Mt.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type "+t)}function ha(t,e,n){return t[0]+"_"+t[1]+"_"+e+"_"+n}var fa=function(t,e){this.variableNames=["A"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[r]*e[r];this.outputShape=n,this.rank=n.length;var o=xo(this.rank),i=function(t){var e=t.length;if(e>5)throw Error("Tile for rank "+e+" is not yet supported");if(1===e)return"imod(resRC, "+t[0]+")";for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[],o=0;o<t.length;o++)r.push("imod("+n[o]+", "+t[o]+")");return r.join()}(t);this.userCode="\n void main() {\n "+o+" resRC = getOutputCoords();\n setOutput(getA("+i+"));\n }\n "},pa=function(t,e){this.variableNames=["A"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];this.outputShape=n,this.rank=n.length;var o=xo(this.rank),i=function(t){var e=t.length;if(e>6)throw Error("Transpose for rank "+e+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(e),o=0;o<t.length;o++)r[t[o]]=n[o];return r.join()}(e);this.userCode="\n void main() {\n "+o+" resRC = getOutputCoords();\n setOutput(getA("+i+"));\n }\n "},da=function(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0;for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];if(this.outputShape=n,this.rank=n.length,this.rank>6)throw Error("Packed transpose for rank "+this.rank+" is not yet supported.");var o=xo(this.rank),i=ao("rc",this.rank),a=new Array(this.rank);for(r=0;r<e.length;r++)a[e[r]]=i[r];var s="vec2("+a.slice(-2).join()+")",u="++"+i[this.rank-1]+" < "+n[this.rank-1],c="getChannel(getA("+a.join()+"), "+s+")";this.userCode="\n void main() {\n "+o+" rc = getOutputCoords();\n vec4 result = vec4(0.);\n result[0] = "+c+";\n if("+u+") {\n result[1] = "+c+";\n }\n --"+i[this.rank-1]+";\n if(++"+i[this.rank-2]+" < "+n[this.rank-2]+") {\n result[2] = "+c+";\n if("+u+") {\n result[3] = "+c+";\n }\n }\n setOutput(result);\n }\n "},va=1.7580993408473768,ma=1.0507009873554805,ga=function(t,e){this.variableNames=["A"],this.outputShape=t,this.userCode="\n float unaryOperation(float x) {\n "+e+"\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n "},ya="if (isnan(x)) return x;",ba="return abs(x);",xa=ya+"\n return (x < 0.0) ? 0.0 : x;\n",wa=ya+"\n return (x < 0.0) ? 0.0 : min(6.0, x);\n",Ea="return (x >= 0.0) ? x : (exp(x) - 1.0);",Ca="return -x;",_a="return ceil(x);",Ra="return floor(x);",Ia="return exp(x);",ka="return exp(x) - 1.0;",Sa="return x;",Aa="\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",Oa="\n vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",Da="\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n",Ta=function(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode="\n vec4 unaryOperation(vec4 x) {\n "+e+"\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n "},Na=function(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=t;var e=t.length,n=so("rc",e),r=xo(e),o=function(t,e){if(1===t)return"rc";for(var n="",r=0;r<t;r++)n+=e[r],r<t-1&&(n+=",");return n}(e,n),i=n.slice(-2),a=e<=1?"rc":"vec2("+i.join(",")+")";this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n vec4 packedInput = getA("+o+");\n\n setOutput(getChannel(packedInput, "+a+"));\n }\n "},Fa={};function Ma(t,e){if(void 0===e&&(e=!1),"linear"===t)return"return x;";if("relu"===t)return e?Aa:xa;if("elu"===t)return e?Da:Ea;if("relu6"===t)return e?Oa:wa;if("prelu"===t)return e?Fo:To;throw new Error("Activation "+t+" has not been implemented for the WebGL backend.")}var Pa=function(t){function e(e){var n,r=t.call(this)||this;if(r.pendingRead=new WeakMap,r.pendingDisposal=new WeakSet,r.dataRefCount=new WeakMap,r.numBytesInGPU=0,r.uploadWaitMs=0,r.downloadWaitMs=0,r.warnedAboutMemory=!1,r.pendingDeletes=0,r.disposed=!1,!h().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(null==e){var o=Wt(h().getNumber("WEBGL_VERSION"));r.binaryCache=((n=h().getNumber("WEBGL_VERSION"))in Fa||(Fa[n]={}),Fa[n]),r.gpgpu=new Di(o),r.canvas=o.canvas,r.gpgpuCreatedLocally=!0}else r.gpgpu=e,r.binaryCache={},r.gpgpuCreatedLocally=!1,r.canvas=e.gl.canvas;return r.textureManager=new ca(r.gpgpu),r.numMBBeforeWarning=null==h().global.screen?1024:h().global.screen.height*h().global.screen.width*window.devicePixelRatio*600/1024/1024,r.texData=new Ir(r,Ot),r}return s(e,t),e.prototype.numDataIds=function(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes},e.prototype.write=function(t,e,n){if(h().getBool("DEBUG")&&this.checkNumericalProblems(t),"complex64"===n&&null!=t)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");var r={};return this.texData.set(r,{shape:e,dtype:n,values:t,usage:Ft.UPLOAD}),r},e.prototype.move=function(t,e,n,r){if(h().getBool("DEBUG")&&this.checkNumericalProblems(e),"complex64"===r)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(t,{shape:n,dtype:r,values:e,usage:Ft.UPLOAD})},e.prototype.readSync=function(t){var e=this.texData.get(t),n=e.values,r=e.dtype,o=e.complexTensors,i=e.slice,a=e.shape,s=e.isPacked;if(null!=i){var u;u=s?new Ta(a,Sa):new ga(a,Sa);var c=this.runWebGLProgram(u,[{dataId:t,shape:a,dtype:r}],r),l=this.readSync(c.dataId);return this.disposeData(c.dataId),l}if(null!=n)return this.convertAndCacheOnCPU(t);if("string"===r)return n;var h,f,p=null!=this.activeTimers;return p&&(h=et()),f="complex64"===r?Kr(o.real.dataSync(),o.imag.dataSync()):this.getValuesFromTexture(t),p&&(this.downloadWaitMs+=et()-h),this.convertAndCacheOnCPU(t,f)},e.prototype.read=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o,i,a,s,u,l,f,p,d,v,m,g,y,b,x,w,E,C,_;return c(this,(function(c){switch(c.label){case 0:if(this.pendingRead.has(t))return e=this.pendingRead.get(t),[2,new Promise((function(t){return e.push(t)}))];if(n=this.texData.get(t),r=n.values,o=n.shape,i=n.slice,a=n.dtype,s=n.complexTensors,u=n.isPacked,null!=i)return void 0,l=u?new Ta(o,Sa):new ga(o,Sa),f=this.runWebGLProgram(l,[{dataId:t,shape:o,dtype:a}],a),p=this.read(f.dataId),this.disposeData(f.dataId),[2,p];if(null!=r)return[2,this.convertAndCacheOnCPU(t)];if(!h().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&2===h().getNumber("WEBGL_VERSION"))throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");return d=null,"complex64"!==a&&h().get("WEBGL_BUFFER_SUPPORTED")&&(v=this.decode(t),m=this.texData.get(v.dataId),d=(_=this.gpgpu).createBufferFromTexture.apply(_,[m.texture].concat(jt(o)))),this.pendingRead.set(t,[]),"complex64"===a?[3,2]:[4,this.gpgpu.createAndWaitForFence()];case 1:c.sent(),c.label=2;case 2:return"complex64"!==a?[3,4]:[4,Promise.all([s.real.data(),s.imag.data()])];case 3:return y=c.sent(),b=y[0],x=y[1],g=Kr(b,x),[3,5];case 4:null==d?g=this.getValuesFromTexture(t):(w=I(o),g=this.gpgpu.downloadFloat32MatrixFromBuffer(d,w)),c.label=5;case 5:return null!=v&&this.disposeData(v.dataId),E=this.convertAndCacheOnCPU(t,g),C=this.pendingRead.get(t),this.pendingRead.delete(t),C.forEach((function(t){return t(E)})),this.pendingDisposal.has(t)&&(this.pendingDisposal.delete(t),this.disposeData(t),this.pendingDeletes--),[2,E]}}))}))},e.prototype.checkNumericalProblems=function(t){if(null!=t)for(var e=0;e<t.length;e++){var n=t[e];if(!Ht(n)){if(h().getBool("WEBGL_RENDER_FLOAT32_CAPABLE"))throw Error("The value "+n+" cannot be represented with your current settings. Consider enabling float32 rendering: 'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'");throw Error("The value "+n+" cannot be represented on this device.")}}},e.prototype.getValuesFromTexture=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,i=n.isPacked,a=I(r);if(h().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")){var s=this.decode(t),u=this.texData.get(s.dataId),c=(e=this.gpgpu).downloadMatrixFromPackedTexture.apply(e,[u.texture].concat(jt(r))).subarray(0,a);return this.disposeData(s.dataId),c}var l=h().getBool("WEBGL_PACK")&&!0===i,f=l?xe(r):r,p=l?new ai(f):new ii(f),d=this.runWebGLProgram(p,[{shape:f,dtype:o,dataId:t}],"float32"),v=this.texData.get(d.dataId),m=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(v.texture,v.texShape[0],v.texShape[1]).subarray(0,a);return this.disposeData(d.dataId),m},e.prototype.time=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o,i,a,s;return c(this,(function(u){switch(u.label){case 0:return e=this.activeTimers,n=[],r=!1,null==this.programTimersStack?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,t(),o=R(this.activeTimers.map((function(t){return t.query}))).filter((function(t){return null!=t})),i=R(this.activeTimers.map((function(t){return t.name}))).filter((function(t){return null!=t})),this.activeTimers=e,r&&(this.programTimersStack=null),[4,Promise.all(o)];case 1:return a=u.sent(),s={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:w(a),getExtraProfileInfo:function(){return a.map((function(t,e){return{name:i[e],ms:t}})).map((function(t){return t.name+": "+t.ms})).join(", ")},wallMs:null},this.uploadWaitMs=0,this.downloadWaitMs=0,[2,s]}}))}))},e.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},e.prototype.startTimer=function(){return h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?this.gpgpu.beginQuery():{startMs:et(),endMs:null}},e.prototype.endTimer=function(t){return h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(this.gpgpu.endQuery(),t):(t.endMs=et(),t)},e.prototype.getQueryTime=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){return h().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?[2,this.gpgpu.waitForQueryAndGetTime(t)]:[2,(e=t).endMs-e.startMs]}))}))},e.prototype.disposeData=function(t){if(!this.pendingDisposal.has(t)){if(this.pendingRead.has(t))return this.pendingDisposal.add(t),void this.pendingDeletes++;if(this.texData.has(t)){this.releaseGPUData(t);var e=this.texData.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.texData.delete(t)}}},e.prototype.releaseGPUData=function(t){var e=this.texData.get(t),n=e.texture,r=e.dtype,o=e.texShape,i=e.usage,a=e.isPacked,s=e.slice,u=s&&s.origDataId||t,c=this.dataRefCount.get(u);c>1?this.dataRefCount.set(u,c-1):(this.dataRefCount.delete(u),null!=n&&(this.numBytesInGPU-=this.computeBytes(o,r),this.textureManager.releaseTexture(n,o,i,a)));var l=this.texData.get(t);l.texture=null,l.texShape=null,l.isPacked=!1,l.slice=null},e.prototype.getTexture=function(t){return this.uploadToGPU(t),this.texData.get(t).texture},e.prototype.getDataInfo=function(t){return this.texData.get(t)},e.prototype.getCPUBackend=function(){return h().getBool("WEBGL_CPU_FORWARD")?(null==this.cpuBackend&&(this.cpuBackend=Ot.findBackend("cpu")),this.cpuBackend):null},e.prototype.shouldExecuteOnCPU=function(t,e){var n=this;return void 0===e&&(e=128),null!=this.getCPUBackend()&&t.every((function(t){return null==n.texData.get(t.dataId).texture&&t.size<e}))},e.prototype.getGPGPUContext=function(){return this.gpgpu},e.prototype.complex=function(t,e){var n=this.makeOutput(t.shape,"complex64");return this.texData.get(n.dataId).complexTensors={real:Ot.keep(t.clone()),imag:Ot.keep(e.clone())},n},e.prototype.real=function(t){return this.texData.get(t.dataId).complexTensors.real.clone()},e.prototype.imag=function(t){return this.texData.get(t.dataId).complexTensors.imag.clone()},e.prototype.slice=function(t,e,n){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.slice(t,e,n);if(0===I(n))return rn([],n,t.dtype);var r=this.texData.get(t.dataId).isPacked,o=wr(t.shape,e,n);if(r||!o){var i=h().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new sa(n):new ia(n),a=i.getCustomSetupFunc(e);return this.compileAndRun(i,[t],null,a)}return this.uploadToGPU(t.dataId),this.shallowSlice(t,e,n)},e.prototype.shallowSlice=function(t,e,n){var r=this.texData.get(t.dataId),o=this.makeOutput(n,t.dtype),i=this.texData.get(o.dataId);Object.assign(i,r),i.shape=n,i.dtype=t.dtype;var a=Er(e,t.strides);r.slice&&(a+=r.slice.flatOffset),i.slice={flatOffset:a,origDataId:r.slice&&r.slice.origDataId||t.dataId};var s=this.dataRefCount.get(i.slice.origDataId)||1;return this.dataRefCount.set(i.slice.origDataId,s+1),o},e.prototype.stridedSlice=function(t,e,n,r){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.stridedSlice(t,e,n,r);var o=yr(e,n,r);if(o.some((function(t){return 0===t})))return rn([],o);var i=new ua(e,r,o);return this.compileAndRun(i,[t])},e.prototype.reverse=function(t,e){var n=h().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ea(t.shape,e):new ta(t.shape,e);return this.compileAndRun(n,[t])},e.prototype.concat=function(t,e){if("complex64"===t[0].dtype){var n=t.map((function(t){return en(t)})),r=t.map((function(t){return nn(t)}));return tn(this.concat(n,e),this.concat(r,e))}if(this.shouldExecuteOnCPU(t))return this.cpuBackend.concat(t,e);if(1===t.length)return t[0];if(t.length>h().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var o=Math.floor(t.length/2),i=this.concat(t.slice(0,o),e),a=this.concat(t.slice(o),e);return this.concat([i,a],e)}if(h().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&t[0].rank>1){var s=new Uo(t.map((function(t){return t.shape})),e);return this.compileAndRun(s,t)}var u=Qe(t.map((function(t){return t.shape})),e),c=t.map((function(t){return t.as2D(-1,I(t.shape.slice(e)))})),l=new Wo(c.map((function(t){return t.shape})));return this.compileAndRun(l,c).reshape(u)},e.prototype.neg=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.neg(t);if(h().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Ca,t.dtype);var e=new ga(t.shape,Ca);return this.compileAndRun(e,[t])},e.prototype.batchMatMul=function(t,e,n,r){var o=n?t.shape[2]:t.shape[1],i=r?e.shape[1]:e.shape[2],a=n?t.shape[1]:t.shape[2],s=t.shape[0];if((1===o||1===i)&&a>1e3){n&&(t=t.transpose([0,2,1])),r&&(e=e.transpose([0,2,1]));var u=1===i?t:t.as3D(s,a,1),c=1===i?2:1,l=1===i?e.as3D(s,1,a):e;return this.multiply(u,l).sum(c,!0)}var h=Et(t.dtype,e.dtype),f=new Wi(t.shape,[s,o,i],n,r);return this.compileAndRun(f,[t,e],h)},e.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,i=t.bias,a=t.activation,s=t.preluActivationWeights,u=r?e.shape[2]:e.shape[1],c=o?n.shape[1]:n.shape[2],l=e.shape[0],h=Et(e.dtype,n.dtype),f=null!=i,p=null!=s,d=a?Ma(a,!0):null,v=new Wi(e.shape,[l,u,c],r,o,f,d,p),m=[e,n];return i&&m.push(i),s&&m.push(s),this.compileAndRun(v,m,h)},e.prototype.multiply=function(t,e){if("complex64"===t.dtype){var n=this.texData.get(t.dataId),r=this.texData.get(e.dataId),o=new So("return areal * breal - aimag * bimag;",t.shape,e.shape),i=new So("return areal * bimag + aimag * breal;",t.shape,e.shape),a=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag),this.makeComplexComponentTensorInfo(e,r.complexTensors.real),this.makeComplexComponentTensorInfo(e,r.complexTensors.imag)],s=this.compileAndRun(o,a),u=this.compileAndRun(i,a),c=this.complex(s,u);return s.dispose(),u.dispose(),c}if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.multiply(t,e);if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,Do,t.dtype);var l=new No(Do,t.shape,e.shape);return this.compileAndRun(l,[t,e],t.dtype)},e.prototype.batchNormalization=function(t,e,n,r,o,i){var a=[t,e,n],s=null;null!=i&&(s=i.shape,a.push(i));var u=null;if(null!=o&&(u=o.shape,a.push(o)),h().getBool("WEBGL_PACK_NORMALIZATION")){var c=new ko(t.shape,e.shape,n.shape,s,u,r);return this.compileAndRun(c,a)}var l=new Io(t.shape,e.shape,n.shape,s,u,r);return this.compileAndRun(l,a)},e.prototype.localResponseNormalization4D=function(t,e,n,r,o){var i=h().getBool("WEBGL_PACK_NORMALIZATION")?new Pi(t.shape,e,n,r,o):new Fi(t.shape,e,n,r,o);return this.compileAndRun(i,[t])},e.prototype.LRNGrad=function(t,e,n,r,o,i,a){var s=new Mi(e.shape,r,o,i,a);return this.compileAndRun(s,[e,n,t])},e.prototype.tile=function(t,e){if("string"===t.dtype){var n=this.readSync(t.dataId).map((function(t){return ot(t)}));return to(Mn(t.shape,t.dtype,n),e)}var r=new fa(t.shape,e);return this.compileAndRun(r,[t])},e.prototype.pad=function(t,e,n){var r=h().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Gi(t.shape,e,n):new Vi(t.shape,e,n);return this.compileAndRun(r,[t])},e.prototype.transpose=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.transpose(t,e);var n=h().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new da(t.shape,e):new pa(t.shape,e);return this.compileAndRun(n,[t])},e.prototype.gather=function(t,e,n){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.gather(t,e,n);var r=new hi(t.shape,e.size,n);return this.compileAndRun(r,[t,e])},e.prototype.batchToSpaceND=function(t,e,n){E(t.rank<=4,(function(){return"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"}));var r=e.reduce((function(t,e){return t*e})),o=ur(t.shape,e,r),i=cr(o.length,e.length),a=lr(t.shape,e,r),s=hr(n,e.length),u=fr(a,n,e.length);return t.reshape(o).transpose(i).reshape(a).slice(s,u)},e.prototype.spaceToBatchND=function(t,e,n){E(t.rank<=4,(function(){return"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"}));var r=e.reduce((function(t,e){return t*e})),o=[[0,0]];o.push.apply(o,n);for(var i=1+e.length;i<t.shape.length;++i)o.push([0,0]);var a=t.pad(o),s=ur(a.shape,e,r,!1),u=cr(s.length,e.length,!1),c=lr(a.shape,e,r,!1);return a.reshape(s).transpose(u).reshape(c)},e.prototype.reduce=function(t,e,n){var r=t.shape[0],o=t.shape[1],i=dr(o),a=new Ki({windowSize:i,inSize:o,batchSize:r},e),s=this.compileAndRun(a,[t],n);return 1===s.shape[1]?s:this.reduce(s,e,n)},e.prototype.argReduce=function(t,e,n){void 0===n&&(n=null);var r=t.shape[0],o=t.shape[1];null!=n&&(r=n.shape[0],o=n.shape[1]);var i=dr(o),a=new io({windowSize:i,inSize:o,batchSize:r},e,null==n),s=[t];null!=n&&s.push(n);var u=this.compileAndRun(a,s,"int32");return 1===u.shape[1]?u:this.argReduce(t,e,u)},e.prototype.argReducePacked=function(t,e,n){void 0===n&&(n=null);var r=null!=n?n.shape:t.shape,o=dr(r[r.length-1]),i=new Co(r,o,e,null==n),a=null==n?[t]:[t,n],s=this.compileAndRun(i,a,"int32");return s.rank===t.rank?this.argReducePacked(t,e,s):s},e.prototype.sum=function(t,e){Ke("sum",e,t.rank);var n=He(t.shape,e),r=n[0],o=I(n[1]),i=t.as2D(-1,o),a=Ct(t.dtype);return this.reduce(i,"sum",a).reshape(r)},e.prototype.prod=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.prod(t,e);var n=He(t.shape,e),r=n[0],o=I(n[1]),i=t.as2D(-1,o),a=Ct(t.dtype);return this.reduce(i,"prod",a).reshape(r)},e.prototype.unsortedSegmentSum=function(t,e,n){var r=0,o=Xe([r],t.rank),i=t;null!=o&&(i=t.transpose(o),r=Ye(1,t.rank)[0]);var a=function(t,e,n){for(var r=[],o=t.length,i=0;i<o;i++)i!==e?r.push(t[i]):r.push(n);return r}(i.shape,r,n),s=I([i.shape[r]]),u=i.as2D(-1,s),c=Ct(t.dtype),l=this.segOpCompute(u,"unsortedSegmentSum",e,c,n).reshape(a);return null!=o&&(l=l.transpose($e(o))),l},e.prototype.segOpCompute=function(t,e,n,r,o){var i=t.shape[0],a=t.shape[1],s=function(t,e){var n,r=!1;for(t<=30?(n=t,r=!0):n=$(t,Math.floor(Math.sqrt(t)));!r;)n>e||n===t?r=!0:n=$(t,n+1);return n}(a,o),u=new ra({windowSize:s,inSize:a,batchSize:i,numSegments:o},e),c=this.compileAndRun(u,[t,n],r);return c.shape[1]===o?c:(n=dn(0,o).tile([a/s]),this.segOpCompute(c,e,n,r,o))},e.prototype.argMinMaxReduce=function(t,e,n){var r=[e];if(Ke("arg"+n.charAt(0).toUpperCase()+n.slice(1),r,t.rank),!h().getBool("WEBGL_PACK_REDUCE")||t.rank<=2){var o=He(t.shape,r),i=o[0],a=I(o[1]),s=t.as2D(-1,a);return this.argReduce(s,n).reshape(i)}return this.argReducePacked(t,n)},e.prototype.argMin=function(t,e){return this.argMinMaxReduce(t,e,"min")},e.prototype.argMax=function(t,e){return this.argMinMaxReduce(t,e,"max")},e.prototype.cumsum=function(t,e,n,r){if(e!==t.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(t.rank-1)+" but got axis="+e);var o=new Zo(t.shape,n,r);return this.compileAndRun(o,[t])},e.prototype.equal=function(t,e){if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(equal(a, b));\n","bool");var n=new No("return float(a == b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.notEqual=function(t,e){if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(notEqual(a, b));\n","bool");var n=new No("return float(a != b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.less=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.less(t,e);if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThan(a, b));\n","bool");var n=new No("return float(a < b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.lessEqual=function(t,e){if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThanEqual(a, b));\n","bool");var n=new No("return float(a <= b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.greater=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.greater(t,e);if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThan(a, b));\n","bool");var n=new No("return float(a > b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.greaterEqual=function(t,e){if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThanEqual(a, b));\n","bool");var n=new No("return float(a >= b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.logicalNot=function(t){var e=new ga(t.shape,"return float(!(x >= 1.0));");return this.compileAndRun(e,[t])},e.prototype.logicalAnd=function(t,e){if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n","bool");var n=new No("return float(a >= 1.0 && b >= 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.logicalOr=function(t,e){if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n","bool");var n=new No("return float(a >= 1.0 || b >= 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.select=function(t,e,n){var r=new oa(t.rank,e.shape,e.rank);return this.compileAndRun(r,[t,e,n],Et(e.dtype,n.dtype))},e.prototype.where=function(t){Le("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var e=t.dataSync();return no(t.shape,e)},e.prototype.topk=function(t,e,n){return eo(t.dataSync(),t.shape,t.dtype,e)},e.prototype.min=function(t,e){Ke("min",e,t.rank);var n=He(t.shape,e),r=n[0],o=I(n[1]),i=t.as2D(-1,o);return this.reduce(i,"min",i.dtype).reshape(r)},e.prototype.minimum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.minimum(t,e);var n=h().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 result = vec4(min(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return min(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.mod=function(t,e){var n=h().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 result = mod(a, b);\n vec4 isNaN = vec4(equal(b, vec4(0.0)));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("if (b == 0.0) return NAN;\n return mod(a, b);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.max=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.max(t,e);Ke("max",e,t.rank);var n=He(t.shape,e),r=n[0],o=I(n[1]),i=t.as2D(-1,o);return this.reduce(i,"max",i.dtype).reshape(r)},e.prototype.maximum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.maximum(t,e);var n=h().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 result = vec4(max(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return max(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.all=function(t,e){Ke("all",e,t.rank);var n=He(t.shape,e),r=n[0],o=I(n[1]),i=t.as2D(-1,o);return this.reduce(i,"all",i.dtype).reshape(r)},e.prototype.any=function(t,e){Ke("any",e,t.rank);var n=He(t.shape,e),r=n[0],o=I(n[1]),i=t.as2D(-1,o);return this.reduce(i,"any",i.dtype).reshape(r)},e.prototype.squaredDifference=function(t,e){var n=h().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("return (a - b) * (a - b);",t.shape,e.shape):new No("return (a - b) * (a - b);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.realDivide=function(t,e){if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n // vec4 one = vec4(equal(a, b));\n // return one + (vec4(1.0) - one) * a / b;\n vec4 result = a / b;\n if(a.x == b.x) {\n result.x = 1.;\n }\n if(a.y == b.y) {\n result.y = 1.;\n }\n if(a.z == b.z) {\n result.z = 1.;\n }\n if(a.w == b.w) {\n result.w = 1.;\n }\n\n return result;\n","float32",!0);var n=new No("\nif (a == b) {\n return 1.0;\n};\nreturn a / b;",t.shape,e.shape);return this.compileAndRun(n,[t,e],"float32")},e.prototype.floorDiv=function(t,e){if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n ivec4 ia = round(a);\n ivec4 ib = round(b);\n bvec4 cond = notEqual(ib, ivec4(0));\n ivec4 result = ivec4(0);\n vec4 s = sign(a) * sign(b);\n\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n if (cond[0]) {\n result[0] = idiv(ia[0], ib[0], s[0]);\n }\n if (cond[1]) {\n result[1] = idiv(ia[1], ib[1], s[1]);\n }\n if (cond[2]) {\n result[2] = idiv(ia[2], ib[2], s[2]);\n }\n if (cond[3]) {\n result[3] = idiv(ia[3], ib[3], s[3]);\n }\n return vec4(result);\n","int32");var n=new No("\n float s = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n if (ib != 0) {\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n return float(idiv(ia, ib, s));\n } else {\n return NAN;\n }\n",t.shape,e.shape);return this.compileAndRun(n,[t,e],"int32")},e.prototype.add=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,Ao);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.add(t,e);var n=Et(t.dtype,e.dtype);if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,Ao,n);var r=new No(Ao,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},e.prototype.packedUnaryOp=function(t,e,n){var r=new Ta(t.shape,e);return this.compileAndRun(r,[t],n)},e.prototype.packedBinaryOp=function(t,e,n,r,o){void 0===o&&(o=!1);var i=new Mo(n,t.shape,e.shape,o);return this.compileAndRun(i,[t,e],r)},e.prototype.complexSeparableBinaryOp=function(t,e,n){var r=this,o=this.texData.get(t.dataId),i=this.texData.get(e.dataId),a=[[o.complexTensors.real,i.complexTensors.real],[o.complexTensors.imag,i.complexTensors.imag]].map((function(o){var i=o[0],a=o[1],s=r.makeComplexComponentTensorInfo(t,i),u=r.makeComplexComponentTensorInfo(e,a),c=new No(n,t.shape,e.shape);return r.compileAndRun(c,[s,u],Et(i.dtype,a.dtype))})),s=a[0],u=a[1],c=this.complex(s,u);return s.dispose(),u.dispose(),c},e.prototype.makeComplexComponentTensorInfo=function(t,e){return{dataId:e.dataId,dtype:e.dtype,shape:t.shape}},e.prototype.addN=function(t){if(1===t.length)return t[0];if(t.length>h().get("WEBGL_MAX_TEXTURES_IN_SHADER")){var e=Math.floor(t.length/2),n=this.addN(t.slice(0,e)),r=this.addN(t.slice(e));return this.addN([n,r])}var o=t.map((function(t){return t.dtype})).reduce((function(t,e){return Et(t,e)})),i=t.map((function(t){return t.shape})),a=h().getBool("WEBGL_PACK")?new oo(t[0].shape,i):new ro(t[0].shape,i);return this.compileAndRun(a,t,o)},e.prototype.subtract=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,Oo);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.subtract(t,e);var n=Et(t.dtype,e.dtype);if(h().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,Oo,t.dtype);var r=new No(Oo,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},e.prototype.pow=function(t,e){var n=h().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\n vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\n vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n vec4 result = multiplier * pow(abs(a), b);\n\n // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\n bvec4 isExpZero = equal(b, vec4(0.0));\n result.r = isExpZero.r ? 1.0 : result.r;\n result.g = isExpZero.g ? 1.0 : result.g;\n result.b = isExpZero.b ? 1.0 : result.b;\n result.a = isExpZero.a ? 1.0 : result.a;\n\n vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("\nif(a < 0.0 && floor(b) < b){\n return NAN;\n}\nif (b == 0.0) {\n return 1.0;\n}\nreturn (round(mod(b, 2.0)) != 1) ?\n pow(abs(a), b) : sign(a) * pow(abs(a), b);\n",t.shape,e.shape),r=Et(t.dtype,e.dtype);return this.compileAndRun(n,[t,e],r)},e.prototype.ceil=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.ceil(t);if(h().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,_a,t.dtype);var e=new ga(t.shape,_a);return this.compileAndRun(e,[t])},e.prototype.floor=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.floor(t);if(h().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Ra,t.dtype);var e=new ga(t.shape,Ra);return this.compileAndRun(e,[t])},e.prototype.sign=function(t){var e=new ga(t.shape,"\n if (isnan(x)) { return 0.0; }\n return sign(x);\n");return this.compileAndRun(e,[t])},e.prototype.isNaN=function(t){var e=new ga(t.shape,"return float(isnan(x));");return this.compileAndRun(e,[t],"bool")},e.prototype.isInf=function(t){var e=new ga(t.shape,"return float(isinf(x));");return this.compileAndRun(e,[t],"bool")},e.prototype.isFinite=function(t){var e=new ga(t.shape,"return float(!isnan(x) && !isinf(x));");return this.compileAndRun(e,[t],"bool")},e.prototype.round=function(t){var e=new ga(t.shape,"\n // OpenGL ES does not support round function.\n // The algorithm is based on banker's rounding.\n float base = floor(x);\n if ((x - base) < 0.5) {\n return floor(x);\n } else if ((x - base) > 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n");return this.compileAndRun(e,[t])},e.prototype.exp=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.exp(t);if(h().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Ia,t.dtype);var e=new ga(t.shape,Ia);return this.compileAndRun(e,[t])},e.prototype.expm1=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.expm1(t);if(h().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,ka,t.dtype);var e=new ga(t.shape,ka);return this.compileAndRun(e,[t])},e.prototype.log=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.log(t);if(h().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,"\n vec4 result = log(x);\n vec4 isNaN = vec4(lessThan(x, vec4(0.0)));\n result.r = isNaN.r == 1.0 ? NAN : result.r;\n result.g = isNaN.g == 1.0 ? NAN : result.g;\n result.b = isNaN.b == 1.0 ? NAN : result.b;\n result.a = isNaN.a == 1.0 ? NAN : result.a;\n\n return result;\n",t.dtype);var e=new ga(t.shape,"if (x < 0.0) return NAN;\n return log(x);");return this.compileAndRun(e,[t])},e.prototype.log1p=function(t){var e=new ga(t.shape,"return log(1.0 + x);");return this.compileAndRun(e,[t])},e.prototype.sqrt=function(t){var e=new ga(t.shape,"return sqrt(x);");return this.compileAndRun(e,[t])},e.prototype.rsqrt=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.rsqrt(t);var e=new ga(t.shape,"return inversesqrt(x);");return this.compileAndRun(e,[t])},e.prototype.reciprocal=function(t){var e=new ga(t.shape,"return 1.0 / x;");return this.compileAndRun(e,[t])},e.prototype.relu=function(t){var e;return e=h().getBool("WEBGL_PACK")?new Ta(t.shape,Aa):new ga(t.shape,xa),this.compileAndRun(e,[t])},e.prototype.relu6=function(t){var e;return e=h().getBool("WEBGL_PACK")?new Ta(t.shape,Oa):new ga(t.shape,wa),this.compileAndRun(e,[t])},e.prototype.prelu=function(t,e){var n=h().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo(Fo,t.shape,e.shape):new No(To,t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.elu=function(t){if(h().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Da,t.dtype);var e=new ga(t.shape,Ea);return this.compileAndRun(e,[t])},e.prototype.eluDer=function(t,e){var n=h().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n",t.shape,e.shape):new No("return (b >= 1.0) ? a : a * (b + 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.selu=function(t){var e=new ga(t.shape,"\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = 1.7580993408473768;\n float scale = 1.0507009873554805;\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n");return this.compileAndRun(e,[t])},e.prototype.int=function(t){var e=new ga(t.shape,"return float(int(x));");return this.compileAndRun(e,[t],"int32")},e.prototype.clip=function(t,e,n){var r,o=(r=h().getBool("WEBGL_PACK_CLIP")?new Bo(t.shape):new Po(t.shape)).getCustomSetupFunc(e,n);return this.compileAndRun(r,[t],null,o)},e.prototype.abs=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.abs(t);if(h().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,ba,t.dtype);var e=new ga(t.shape,ba);return this.compileAndRun(e,[t])},e.prototype.complexAbs=function(t){var e=this.texData.get(t.dataId),n=new Lo(t.shape),r=[this.makeComplexComponentTensorInfo(t,e.complexTensors.real),this.makeComplexComponentTensorInfo(t,e.complexTensors.imag)];return this.compileAndRun(n,r)},e.prototype.sigmoid=function(t){var e=new ga(t.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(e,[t])},e.prototype.softplus=function(t){var e=new ga(t.shape,"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n");return this.compileAndRun(e,[t])},e.prototype.sin=function(t){var e=new ga(t.shape,"if (isnan(x)) return x;\n return sin(x);\n");return this.compileAndRun(e,[t])},e.prototype.cos=function(t){var e=new ga(t.shape,"if (isnan(x)) return x;\n return cos(x);\n");return this.compileAndRun(e,[t])},e.prototype.tan=function(t){var e=new ga(t.shape,"return tan(x);");return this.compileAndRun(e,[t])},e.prototype.asin=function(t){var e=new ga(t.shape,"if (isnan(x)) return x;\n if (abs(x) > 1.) {\n return NAN;\n }\n return asin(x);\n");return this.compileAndRun(e,[t])},e.prototype.acos=function(t){var e=new ga(t.shape,"if (isnan(x)) return x;\n if (abs(x) > 1.) {\n return NAN;\n }\n return acos(x);\n");return this.compileAndRun(e,[t])},e.prototype.atan=function(t){var e=new ga(t.shape,"if (isnan(x)) return x;\n return atan(x);\n");return this.compileAndRun(e,[t])},e.prototype.atan2=function(t,e){var n=h().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 result = atan(a, b);\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return atan(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.sinh=function(t){var e=new ga(t.shape,"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},e.prototype.cosh=function(t){var e=new ga(t.shape,"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},e.prototype.tanh=function(t){var e=new ga(t.shape,"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n");return this.compileAndRun(e,[t])},e.prototype.asinh=function(t){var e=new ga(t.shape,"if (isnan(x)) return x;return log(x + sqrt(x * x + 1.0));");return this.compileAndRun(e,[t])},e.prototype.acosh=function(t){var e=new ga(t.shape,"if (isnan(x)) return x;\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));");return this.compileAndRun(e,[t])},e.prototype.atanh=function(t){var e=new ga(t.shape,"if (isnan(x)) return x;\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;");return this.compileAndRun(e,[t])},e.prototype.erf=function(t){var e=new ga(t.shape,'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = 0.3275911;\n float a1 = 0.254829592;\n float a2 = -0.284496736;\n float a3 = 1.421413741;\n float a4 = -1.453152027;\n float a5 = 1.061405429;\n\n float sign = sign(x);\n x = abs(x);\n float t = 1.0 / (1.0 + p * x);\n return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\n');return this.compileAndRun(e,[t])},e.prototype.step=function(t,e){var n=new ga(t.shape,function(t){return void 0===t&&(t=0),ya+"\n return x > 0.0 ? 1.0 : float("+t+");\n "}(e));return this.compileAndRun(n,[t])},e.prototype.conv2dByMatMul=function(t,e,n,r,o,i){var a=t.shape,s=this.texData.get(t.dataId),u=n.inChannels,c=a[0]*a[1]*a[2],l=n.outChannels,f="channelsLast"===n.dataFormat,p=(1===c||1===l)&&u>1e3,d=a[2]%2!=0&&!!s.isPacked;if(p||!h().getBool("WEBGL_LAZILY_UNPACK")||!h().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!d){var v=f?a[0]*a[1]*a[2]:a[0]*a[2]*a[3],m=this.reshape(t,[1,v,n.inChannels]),g=this.reshape(e,[1,n.inChannels,n.outChannels]);return this.reshape(this.fusedBatchMatMul({a:m,b:g,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:i}),n.outShape)}var y=f?a[0]*a[1]*(a[2]+1):a[0]*a[2]*(a[3]+1),b={dataId:t.dataId,shape:[1,y,n.inChannels],dtype:t.dtype},x=s.shape;s.shape=s.shape.slice(),s.shape[s.shape.length-2]++,E(Ce(s.shape,b.shape),(function(){return"packed reshape "+s.shape+" to "+b.shape+" isn't free"}));var w=this.reshape(e,[1,n.inChannels,n.outChannels]),C=this.fusedBatchMatMul({a:b,b:w,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:i}),_=this.texData.get(C.dataId);return E(_.isPacked,(function(){return"batchMatMul result is expected to be packed"})),s.shape=x,_.shape=n.outShape,Ot.makeTensorFromDataId(C.dataId,n.outShape,C.dtype)},e.prototype.conv2dWithIm2Row=function(t,e,n,r,o,i){var a=n.filterWidth,s=n.filterHeight,u=n.inChannels,c=n.outWidth,l=n.outHeight,h="channelsLast"===n.dataFormat,f=a*s*u,p=l*c,d=[f,p],v=t.squeeze([0]),m=e.reshape([1,f,-1]),g=new Ni(d,v.shape,n),y=this.compileAndRun(g,[v]).reshape([1,d[0],d[1]]),b=null!=r,x=null!=i,w=o?Ma(o,!0):null,E=new Wi(y.shape,[1,p,n.outChannels],!0,!1,b,w,x),C=[y,m];r&&C.push(r),x&&C.push(i);var _=this.compileAndRun(E,C);return h?_.reshape([1,l,c,n.outChannels]):_.reshape([1,n.outChannels,l,c])},e.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,i=t.activation,a=t.preluActivationWeights;if(1===r.filterHeight&&1===r.filterWidth&&1===r.dilationHeight&&1===r.dilationWidth&&1===r.strideHeight&&1===r.strideWidth&&("SAME"===r.padInfo.type||"VALID"===r.padInfo.type))return this.conv2dByMatMul(e,n,r,o,i,a);if(h().getBool("WEBGL_CONV_IM2COL")&&1===e.shape[0])return this.conv2dWithIm2Row(e,n,r,o,i,a);var s=null!=o,u=null!=a,c=i?Ma(i,!1):null,l=new Xo(r,s,c,u),f=[e,n];return o&&f.push(o),a&&f.push(a),this.compileAndRun(l,f)},e.prototype.conv2d=function(t,e,n){if(1===n.filterHeight&&1===n.filterWidth&&1===n.dilationHeight&&1===n.dilationWidth&&1===n.strideHeight&&1===n.strideWidth&&("SAME"===n.padInfo.type||"VALID"===n.padInfo.type))return this.conv2dByMatMul(t,e,n);if(h().getBool("WEBGL_CONV_IM2COL")&&1===t.shape[0])return this.conv2dWithIm2Row(t,e,n);var r=new Xo(n);return this.compileAndRun(r,[t,e])},e.prototype.conv2dDerInput=function(t,e,n){var r=new Vo(n);return this.compileAndRun(r,[t,e])},e.prototype.conv2dDerFilter=function(t,e,n){var r=new zo(n);return this.compileAndRun(r,[t,e])},e.prototype.fusedDepthwiseConv2D=function(t){var e,n=t.input,r=t.filter,o=t.convInfo,i=t.bias,a=t.activation,s=t.preluActivationWeights,u=h().getBool("WEBGL_PACK_DEPTHWISECONV")&&o.strideWidth<=2&&o.outChannels/o.inChannels==1,c=a?Ma(a,u):null,l=[n,r],f=null!=i,p=null!=s;return f&&l.push(i),p&&l.push(s),u?(e=new Jo(o,f,c,p),this.compileAndRun(e,l)):(e=new Yo(o,f,c,p),this.compileAndRun(e,l))},e.prototype.depthwiseConv2D=function(t,e,n){var r;return h().getBool("WEBGL_PACK_DEPTHWISECONV")&&n.strideWidth<=2&&n.outChannels/n.inChannels==1?(r=new Jo(n),this.compileAndRun(r,[t,e])):(r=new Yo(n),this.compileAndRun(r,[t,e]))},e.prototype.depthwiseConv2DDerInput=function(t,e,n){var r=new Ko(n);return this.compileAndRun(r,[t,e])},e.prototype.depthwiseConv2DDerFilter=function(t,e,n){var r=new qo(n);return this.compileAndRun(r,[t,e])},e.prototype.conv3d=function(t,e,n){var r=new $o(n);return this.compileAndRun(r,[t,e])},e.prototype.conv3dDerInput=function(t,e,n){var r=new Ho(n);return this.compileAndRun(r,[t,e])},e.prototype.conv3dDerFilter=function(t,e,n){var r=new Go(n);return this.compileAndRun(r,[t,e])},e.prototype.maxPool=function(t,e){var n=new Hi(e,"max",!1);return this.compileAndRun(n,[t])},e.prototype.avgPool=function(t,e){var n=new Hi(e,"avg",!1);return this.compileAndRun(n,[t],"float32")},e.prototype.maxPoolBackprop=function(t,e,n,r){var o=new Hi(r,"max",!0),i=this.compileAndRun(o,[e]),a=new Bi(r),s=this.compileAndRun(a,[t,i],e.dtype);return i.dispose(),s},e.prototype.avgPoolBackprop=function(t,e,n){var r=new _o(n);return this.compileAndRun(r,[t],e.dtype)},e.prototype.cast=function(t,e){return Gr(t,e,this)},e.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,i=0;i<t.rank;i++)i!==e&&(r[o++]=t.shape[i]);var a=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(i=0;i<u.length;i++)a[e]=i,u[i]=this.slice(t,a,s).reshape(r);return u},e.prototype.avgPool3d=function(t,e){var n=new qi(e,"avg",!1);return this.compileAndRun(n,[t],"float32")},e.prototype.avgPool3dBackprop=function(t,e,n){var r=new Ro(n);return this.compileAndRun(r,[t],e.dtype)},e.prototype.maxPool3d=function(t,e){var n=new qi(e,"max",!1);return this.compileAndRun(n,[t],"float32")},e.prototype.maxPool3dBackprop=function(t,e,n,r){var o=new qi(r,"max",!0),i=this.compileAndRun(o,[e]),a=new Li(r),s=this.compileAndRun(a,[t,i],e.dtype);return i.dispose(),s},e.prototype.reshape=function(t,e){var n=this.texData.get(t.dataId);if(n.isPacked&&!Ce(t.shape,e)&&(null===n.texture||!Ce(n.shape,e))){var r=this.packedReshape(t,e);return Ot.makeTensorFromDataId(r.dataId,r.shape,r.dtype)}return Hr(t,e)},e.prototype.resizeBilinear=function(t,e,n,r){var o=h().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new Ji(t.shape,e,n,r):new Yi(t.shape,e,n,r);return this.compileAndRun(o,[t],"float32")},e.prototype.resizeBilinearBackprop=function(t,e,n){var r=new $i(t,e,n);return this.compileAndRun(r,[t])},e.prototype.resizeNearestNeighbor=function(t,e,n,r){var o=new Zi(t.shape,e,n,r);return this.compileAndRun(o,[t])},e.prototype.resizeNearestNeighborBackprop=function(t,e,n){var r=new Qi(t,e,n);return this.compileAndRun(r,[t])},e.prototype.multinomial=function(t,e,n,r){var o=e?t:_r(t),i=o.shape[0],a=o.shape[1],s=new Ui(i,a,n),u=s.getCustomSetupFunc(r);return this.compileAndRun(s,[o],"int32",u)},e.prototype.oneHot=function(t,e,n,r){var o=new ji(t.size,e,n,r);return this.compileAndRun(o,[t])},e.prototype.diag=function(t){var e=new oi(t.size);return this.compileAndRun(e,[t])},e.prototype.nonMaxSuppression=function(t,e,n,r,o){return Le("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"),Jr(t.dataSync(),e.dataSync(),n,r,o)},e.prototype.cropAndResize=function(t,e,n,r,o,i){var a=new Qo(t.shape,e.shape,r,o,i);return this.compileAndRun(a,[t,e,n],"float32")},e.prototype.depthToSpace=function(t,e,n){E(e>1,(function(){return"blockSize should be > 1 for depthToSpace, but was: "+e}));var r=t.shape[0],o="NHWC"===n?t.shape[1]:t.shape[2],i="NHWC"===n?t.shape[2]:t.shape[3],a="NHWC"===n?t.shape[3]:t.shape[1],s=o*e,u=i*e,c=a/(e*e),l=new ri("NHWC"===n?[r,s,u,c]:[r,c,s,u],e,n);return this.compileAndRun(l,[t])},e.prototype.split=function(t,e,n){return Zr(t,e,n)},e.prototype.scatterND=function(t,e,n){var r=vr(0,t,n),o=r.sliceRank,i=r.numUpdates,a=r.sliceSize,s=r.strides,u=r.outputSize,c=[u/a,a],l=t.reshape([i,o]),h=e.reshape([i,a]);if(0===u)return Hr(rn([]),n);var f=an(0),p=new na(i,o,l.rank,h.rank,s,c);return this.compileAndRun(p,[h,l,f]).reshape(n)},e.prototype.sparseToDense=function(t,e,n,r){var o=vr(0,t,n),i=o.sliceRank,a=o.numUpdates,s=o.strides,u=o.outputSize,c=new na(a,i,t.rank,e.rank,s,[u,1],!1);return this.compileAndRun(c,[e,t,r]).reshape(n)},e.prototype.fft=function(t){return this.fftImpl(t,!1)},e.prototype.ifft=function(t){return this.fftImpl(t,!0)},e.prototype.fftImpl=function(t,e){var n=this.texData.get(t.dataId),r=new ci("return real * expR - imag * expI;",t.shape,e),o=new ci("return real * expI + imag * expR;",t.shape,e),i=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag)],a=this.compileAndRun(r,i),s=this.compileAndRun(o,i),u=this.complex(a,s).as2D(t.shape[0],t.shape[1]);return a.dispose(),s.dispose(),u},e.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=pr(t,e),i=o[0],a=o[1],s=o[2],u=o[3],c=e.reshape([a,r]),l=t.reshape([t.size/s,s]),h=new fi(r,u,[a,s]);return this.compileAndRun(h,[l,c]).reshape(i)},e.prototype.fill=function(t,e,n){if("string"===(n=n||K(e))){var r=B(n,I(t));return r.fill(e),Ot.makeTensor(r,t,n,this)}var o=new li(t,e),i=o.getCustomSetupFunc(e);return this.compileAndRun(o,[],n,i)},e.prototype.onesLike=function(t){if("string"===t.dtype)throw new Error("onesLike is not supported under string dtype");return this.fill(t.shape,1,t.dtype)},e.prototype.zerosLike=function(t){return this.fill(t.shape,"string"===t.dtype?"":0,t.dtype)},e.prototype.linspace=function(t,e,n){return qr(t,e,n)},e.prototype.makeTensorInfo=function(t,e){var n=this.write(null,t,e);return this.texData.get(n).usage=null,{dataId:n,shape:t,dtype:e}},e.prototype.makeOutput=function(t,e){var n=this.makeTensorInfo(t,e).dataId;return Ot.makeTensorFromDataId(n,t,e,this)},e.prototype.unpackTensor=function(t){var e=new Na(t.shape);return this.runWebGLProgram(e,[t],t.dtype)},e.prototype.packTensor=function(t){var e=new zi(t.shape);return this.runWebGLProgram(e,[t],t.dtype,null,!0)},e.prototype.packedReshape=function(t,e){var n=[ye(t.shape)].concat(be(t.shape)),r={dtype:t.dtype,shape:n,dataId:t.dataId},o=[ye(e)].concat(be(e)),i=new Xi(o,n),a=this.runWebGLProgram(i,[r],t.dtype,null,!0);return{dataId:a.dataId,shape:e,dtype:a.dtype}},e.prototype.decode=function(t){var e,n=this.texData.get(t),r=n.isPacked,o=n.shape,i=n.dtype,a=xe(o);return e=r?new ni(a):new ei(a),{dtype:i,shape:o,dataId:this.runWebGLProgram(e,[{shape:a,dtype:i,dataId:t}],i,null,!0).dataId}},e.prototype.runWebGLProgram=function(t,e,n,r,o){var i=this;void 0===o&&(o=!1);var a=this.makeTensorInfo(t.outputShape,n),s=this.texData.get(a.dataId);if(t.packedOutput&&(s.isPacked=!0),t.outPackingScheme===Nt.DENSE){var u=jt(t.outputShape);s.texShape=u.map((function(t){return 2*t}))}if(null!=t.outTexUsage&&(s.usage=t.outTexUsage),0===I(a.shape))return s.values=P(a.dtype,0),a;var c=[],l=e.map((function(e){if("complex64"===e.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var n=i.texData.get(e.dataId);if(null==n.texture){if(!t.packedInputs&&I(e.shape)<=h().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:e.shape,texData:null,isUniform:!0,uniformValues:n.values};t.packedInputs&&(n.isPacked=!0,n.shape=e.shape)}else if(!!n.isPacked!=!!t.packedInputs)e=n.isPacked?i.unpackTensor(e):i.packTensor(e),c.push(e),n=i.texData.get(e.dataId);else if(n.isPacked&&!Ce(n.shape,e.shape)){var r=e,o=e.shape;e.shape=n.shape,e=i.packedReshape(e,o),c.push(e),n=i.texData.get(e.dataId),r.shape=o}return i.uploadToGPU(e.dataId),{shape:e.shape,texData:n,isUniform:!1}}));this.uploadToGPU(a.dataId);var f,p={shape:a.shape,texData:s,isUniform:!1},d=function(t,e,n){var r="";e.concat(n).forEach((function(t){var e=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0,n=t.isUniform?"uniform":t.texData.texShape;r+=t.shape+"_"+n+"_"+e}));var o=t.userCode;return t.constructor.name+"_"+r+"_"+o}(t,l,p),v=this.getAndSaveBinary(d,(function(){return function(t,e,n,r){var o=e.userCode,i=n.map((function(t,n){var r={logicalShape:t.shape,texShape:t.isUniform?null:t.texData.texShape,isUniform:t.isUniform,isPacked:!t.isUniform&&t.texData.isPacked,flatOffset:null};return null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0&&(r.flatOffset=t.texData.slice.flatOffset),{name:e.variableNames[n],shapeInfo:r}})),a=i.map((function(t){return t.shapeInfo})),s={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},u=fo(i,s,o,e.packedInputs),c=t.createProgram(u),l=null,f=t.getUniformLocation(c,"NAN",!1);1===h().getNumber("WEBGL_VERSION")&&(l=t.getUniformLocation(c,"INFINITY",!1));for(var p={},d=0;d<e.variableNames.length;d++){var v=e.variableNames[d];p[v]=t.getUniformLocation(c,v,!1),p["offset"+v]=t.getUniformLocation(c,"offset"+v,!1)}return{program:e,source:u,webGLProgram:c,uniformLocations:p,inShapeInfos:a,outShapeInfo:s,infLoc:l,nanLoc:f}}(i.gpgpu,t,l,p)})),m=null!=this.activeTimers;if(m&&(f=this.startTimer()),function(t,e,n,r,o){Ti(e.inShapeInfos,n),Ti([e.outShapeInfo],[r]);var i=r.texData.texture,a=r.texData.texShape;r.texData.isPacked?t.setOutputPackedMatrixTexture(i,a[0],a[1]):t.setOutputMatrixTexture(i,a[0],a[1]),t.setProgram(e.webGLProgram),1===h().getNumber("WEBGL_VERSION")&&null!==e.infLoc&&t.gl.uniform1f(e.infLoc,1/0),null!==e.nanLoc&&t.gl.uniform1f(e.nanLoc,NaN),n.forEach((function(n,r){var o=e.program.variableNames[r],i=e.uniformLocations[o],a=e.uniformLocations["offset"+o];if(null!=i)if(n.isUniform)if(I(n.shape)<2)t.gl.uniform1f(i,n.uniformValues[0]);else{var s=n.uniformValues;s instanceof Float32Array||(s=new Float32Array(s)),t.gl.uniform1fv(i,s)}else null!=n.texData.slice&&null!=a&&t.gl.uniform1i(a,n.texData.slice.flatOffset),t.setInputMatrixTexture(n.texData.texture,i,r)})),null!=o&&o(t,e.webGLProgram),t.executeProgram()}(this.gpgpu,v,l,p,r),c.forEach((function(t){return i.disposeData(t.dataId)})),m&&(f=this.endTimer(f),this.activeTimers.push({name:t.constructor.name,query:this.getQueryTime(f)})),!h().getBool("WEBGL_LAZILY_UNPACK")&&s.isPacked&&!1===o){var g=this.unpackTensor(a);return this.disposeData(a.dataId),g}return a},e.prototype.compileAndRun=function(t,e,n,r,o){void 0===o&&(o=!1),n=n||e[0].dtype;var i=this.runWebGLProgram(t,e,n,r,o);return Ot.makeTensorFromDataId(i.dataId,i.shape,i.dtype)},e.prototype.getAndSaveBinary=function(t,e){return t in this.binaryCache||(this.binaryCache[t]=e()),this.binaryCache[t]},e.prototype.getTextureManager=function(){return this.textureManager},e.prototype.dispose=function(){this.disposed||(this.textureManager.dispose(),null!=this.canvas&&"undefined"!=typeof HTMLCanvasElement&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)},e.prototype.floatPrecision=function(){var t=this;return null==this.floatPrecisionValue&&(this.floatPrecisionValue=Pe((function(){if(!h().get("WEBGL_RENDER_FLOAT32_ENABLED")){var e=h().getBool("DEBUG");h().set("DEBUG",!1);var n=t.abs(an(1e-8)).dataSync()[0];if(h().set("DEBUG",e),n>0)return 32}return 16}))),this.floatPrecisionValue},e.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},e.prototype.uploadToGPU=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,i=n.values,a=n.texture,s=n.usage,u=n.isPacked;if(null==a){var c,l=null!=this.activeTimers;l&&(c=et());var h=n.texShape;if(null==h&&(h=we(r,u),n.texShape=h),null!=i){var f=xe(r),p=void 0,d=h[1],v=h[0],m=i instanceof Uint8Array;u?(d=(e=zt(h[0],h[1]))[0],v=e[1],p=new ui(f,[v,d],m)):p=new si(f,[v,d],m);var g=this.makeTensorInfo([v,d],o);this.texData.get(g.dataId).usage=m?Ft.PIXELS:Ft.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(g.dataId),d,v,i);var y=this.runWebGLProgram(p,[g],o,null,!0),b=this.texData.get(y.dataId);n.texture=b.texture,n.texShape=b.texShape,n.isPacked=b.isPacked,n.usage=b.usage,this.disposeData(g.dataId),this.texData.delete(y.dataId),n.values=null,l&&(this.uploadWaitMs+=et()-c)}else{var x=this.acquireTexture(h,s,o,u);n.texture=x}}},e.prototype.convertAndCacheOnCPU=function(t,e){var n=this.texData.get(t),r=n.dtype;return this.releaseGPUData(t),null!=e&&(n.values=function(t,e){if("float32"===e||"complex64"===e)return t;if("int32"===e||"bool"===e){for(var n="int32"===e?new Int32Array(t.length):new Uint8Array(t.length),r=0;r<n.length;++r)n[r]=Math.round(t[r]);return n}throw new Error("Unknown dtype "+e)}(e,r)),n.values},e.prototype.acquireTexture=function(t,e,n,r){if(this.numBytesInGPU+=this.computeBytes(t,n),!this.warnedAboutMemory&&this.numBytesInGPU>1024*this.numMBBeforeWarning*1024){(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0}return this.textureManager.acquireTexture(t,e,r)},e.prototype.computeBytes=function(t,e){return t[0]*t[1]*z(e)},e}(kr);Dt()&&Ot.registerBackend("webgl",(function(){return new Pa}),2);var Ba=Ze({square_:function(t){var e=je(t,"x","square"),n=[e];return Ot.runKernelFunc((function(t,n){return n([e]),t.square(e)}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.toFloat().mul(2))}}}),"Square",{},n,[])}}),La=Ze({abs_:function(t){var e=je(t,"x","abs");return"complex64"===e.dtype?Ot.runKernelFunc((function(t){return t.complexAbs(e)}),{$x:e}):Ot.runKernelFunc((function(t,n){var r=t.abs(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.toFloat().step(-1))}}}),"Abs")}}),Wa=Ze({acos_:function(t){var e=je(t,"x","acos");return Ot.runKernelFunc((function(t,n){var r=t.acos(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(an(1).sub(n.toFloat().square()).sqrt()).neg()}}}))}}),Ua=Ze({acosh_:function(t){var e=je(t,"x","acosh");return Ot.runKernelFunc((function(t,n){var r=t.acosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(n.toFloat().square().sub(1).sqrt())}}}))}}),ja=Ze({asin_:function(t){var e=je(t,"x","asin");return Ot.runKernelFunc((function(t,n){var r=t.asin(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(an(1).sub(n.toFloat().square()).sqrt())}}}))}}),za=Ze({asinh_:function(t){var e=je(t,"x","asinh");return Ot.runKernelFunc((function(t,n){var r=t.asinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(an(1).add(n.toFloat().square()).sqrt())}}}))}}),Va=Ze({atan_:function(t){var e=je(t,"x","atan");return Ot.runKernelFunc((function(t,n){var r=t.atan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat().square().add(1))}}}))}}),Ga=Ze({atanh_:function(t){var e=je(t,"x","atanh");return Ot.runKernelFunc((function(t,n){var r=t.atanh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(an(1).sub(n.toFloat().square()))}}}))}}),Ha=Ze({ceil_:function(t){var e=je(t,"x","ceil");return Ot.runKernelFunc((function(t){return t.ceil(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),qa=Ze({clipByValue_:function(t,e,n){var r=je(t,"x","clipByValue");E(e<=n,(function(){return"Error in clip: min ("+e+") must be less than or equal to max ("+n+")."}));var o=[r],i={min:e,max:n};return Ot.runKernelFunc((function(t,o){var i=t.clip(r,e,n);return o([r]),i}),{x:r},(function(t,r){var o=r[0];return{x:function(){return t.where(o.greaterEqual(e).logicalAnd(o.lessEqual(n)),mn(t))}}}),"ClipByValue",i,o)}}),Ka=Ze({cos_:function(t){var e=je(t,"x","cos");return Ot.runKernelFunc((function(t,n){var r=t.cos(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().sin().neg().mul(t)}}}))}}),Xa=Ze({cosh_:function(t){var e=je(t,"x","cosh");return Ot.runKernelFunc((function(t,n){var r=t.cosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().sinh().mulStrict(t)}}}))}}),$a=Ze({erf_:function(t){var e=je(t,"x","erf");return E("int32"===e.dtype||"float32"===e.dtype,(function(){return"Input dtype must be `int32` or `float32`."})),"int32"===e.dtype&&(e=e.toFloat()),Ot.runKernelFunc((function(t,n){var r=t.erf(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.square().neg().exp().mul(2/Math.sqrt(Math.PI)))}}}))}}),Ya=Ze({exp_:function(t){var e=je(t,"x","exp");return Ot.runKernelFunc((function(t,n){var r=t.exp(e);return n([r]),r}),{$x:e},(function(t,e){return{$x:function(){return t.mulStrict(e[0])}}}))}}),Ja=Ze({expm1_:function(t){var e=je(t,"x","expm1");return Ot.runKernelFunc((function(t,n){var r=t.expm1(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.exp())}}}))}}),Qa=Ze({floor_:function(t){var e=je(t,"x","floor");return Ot.runKernelFunc((function(t){return t.floor(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),Za=Ze({log_:function(t){var e=je(t,"x","log");return Ot.runKernelFunc((function(t,n){var r=t.log(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat())}}}))}}),ts=Ze({log1p_:function(t){var e=je(t,"x","log1p");return Ot.runKernelFunc((function(t,n){var r=t.log1p(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.add(1))}}}))}}),es=Ze({logSigmoid_:function(t){var e=je(t,"x","logSigmoid");return Ot.runKernelFunc((function(t,n){var r=t.softplus(e.neg()).neg();return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.neg().sigmoid())}}}))}}),ns=Ze({neg_:function(t){var e=je(t,"x","neg");return Ot.runKernelFunc((function(t){return t.neg(e)}),{$x:e},(function(t){return{$x:function(){return t.neg()}}}))}}),rs=Ze({reciprocal_:function(t){var e=je(t,"x","reciprocal");return Ot.runKernelFunc((function(t,n){var r=t.reciprocal(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.square().neg())}}}))}}),os=Ze({round_:function(t){var e=je(t,"x","round");return Ot.runKernelFunc((function(t){return t.round(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),is=Ze({rsqrt_:function(t){var e=je(t,"x","rsqrt");return Ot.runKernelFunc((function(t,n){var r=t.rsqrt(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.pow(1.5).mul(2)).neg()}}}))}}),as=Ze({sigmoid_:function(t){var e=je(t,"x","sigmoid");return Ot.runKernelFunc((function(t,n){var r=t.sigmoid(e);return n([r]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.mul(an(1).sub(n)))}}}),"Sigmoid")}}),ss=Ze({sign_:function(t){var e=je(t,"x","sign");return Ot.runKernelFunc((function(t){return t.sign(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),us=Ze({isNaN_:function(t){var e=je(t,"x","isNaN");return Ot.runKernelFunc((function(t){return t.isNaN(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),cs=Ze({isInf_:function(t){var e=je(t,"x","isInf");return Ot.runKernelFunc((function(t){return t.isInf(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),ls=Ze({isFinite_:function(t){var e=je(t,"x","isFinite");return Ot.runKernelFunc((function(t){return t.isFinite(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),hs=Ze({sin_:function(t){var e=je(t,"x","sin");return Ot.runKernelFunc((function(t,n){var r=t.sin(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().cos().mul(t)}}}))}}),fs=Ze({sinh_:function(t){var e=je(t,"x","sinh");return Ot.runKernelFunc((function(t,n){var r=t.sinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().cosh().mulStrict(t)}}}))}}),ps=Ze({softplus_:function(t){var e=je(t,"x","softplus");return Ot.runKernelFunc((function(t,n){var r=t.softplus(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.sigmoid())}}}))}}),ds=Ze({sqrt_:function(t){var e=je(t,"x","sqrt");return Ot.runKernelFunc((function(t,n){var r=t.sqrt(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat().sqrt().mul(2))}}}))}}),vs=Ze({step_:function(t,e){void 0===e&&(e=0);var n=je(t,"x","step");return Ot.runKernelFunc((function(t){return t.step(n,e)}),{$x:n},(function(t){return{$x:function(){return mn(t)}}}))}}),ms=Ze({tan_:function(t){var e=je(t,"x","tan");return Ot.runKernelFunc((function(t,n){var r=t.tan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.cos().square())}}}))}}),gs=Ze({tanh_:function(t){var e=je(t,"x","tanh");return Ot.runKernelFunc((function(t,n){var r=t.tanh(e);return n([r]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return an(1).sub(n.square()).mulStrict(t)}}}))}});function ys(t,e,n,r,o,i){var a,s,u=je(t,"x","batchNorm"),c=je(e,"mean","batchNorm"),l=je(n,"variance","batchNorm");return null!=o&&(a=je(o,"scale","batchNorm")),null!=r&&(s=je(r,"offset","batchNorm")),E(2===u.rank,(function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."})),E(2===c.rank||1===c.rank,(function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank "+c.rank+"."})),E(2===l.rank||1===l.rank,(function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank "+l.rank+"."})),null!=a&&E(2===a.rank||1===a.rank,(function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank "+a.rank+"."})),null!=s&&E(2===s.rank||1===s.rank,(function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."})),ws(u,c,l,s,a,i)}function bs(t,e,n,r,o,i){var a,s,u=je(t,"x","batchNorm"),c=je(e,"mean","batchNorm"),l=je(n,"variance","batchNorm");return null!=o&&(a=je(o,"scale","batchNorm")),null!=r&&(s=je(r,"offset","batchNorm")),E(3===u.rank,(function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."})),E(3===c.rank||1===c.rank,(function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank "+c.rank+"."})),E(3===l.rank||1===l.rank,(function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank "+l.rank+"."})),null!=a&&E(3===a.rank||1===a.rank,(function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank "+a.rank+"."})),null!=s&&E(3===s.rank||1===s.rank,(function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."})),ws(u,c,l,s,a,i)}function xs(t,e,n,r,o,i){var a,s,u=je(t,"x","batchNorm"),c=je(e,"mean","batchNorm"),l=je(n,"variance","batchNorm");return null!=o&&(a=je(o,"scale","batchNorm")),null!=r&&(s=je(r,"offset","batchNorm")),E(4===u.rank,(function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+u.rank+"."})),E(4===c.rank||1===c.rank,(function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank "+c.rank+"."})),E(4===l.rank||1===l.rank,(function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank "+l.rank+"."})),null!=a&&E(4===a.rank||1===a.rank,(function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank "+a.rank+"."})),null!=s&&E(4===s.rank||1===s.rank,(function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."})),ws(u,c,l,s,a,i)}function ws(t,e,n,r,o,i){null==i&&(i=.001);var a,s,u,c=je(t,"x","batchNorm"),l=je(e,"mean","batchNorm"),h=je(n,"variance","batchNorm");null!=o&&(a=je(o,"scale","batchNorm")),null!=r&&(s=je(r,"offset","batchNorm")),E(l.rank===h.rank,(function(){return"Batch normalization gradient requires mean and variance to have equal ranks."})),E(null==s||l.rank===s.rank,(function(){return"Batch normalization gradient requires mean and offset to have equal ranks."})),E(null==a||l.rank===a.rank,(function(){return"Batch normalization gradient requires mean and scale to have equal ranks."})),u=0===c.rank||1===c.rank?c.as4D(1,1,1,c.size):2===c.rank?c.as4D(1,1,c.shape[0],c.shape[1]):3===c.rank?c.as4D(1,c.shape[0],c.shape[1],c.shape[2]):c;var f=[c,l,h,a];return Ot.runKernelFunc((function(t,e){var n=t.batchNormalization(u,Es(l),Es(h),i,Es(a),Es(s));return e([c,l,h,a]),n}),{x:c,mean:l,variance:h,scale:a,offset:s},(function(t,e){var n=e,r=n[0],o=n[1],a=n[2],s=n[3],c=null==s?an(1):s,l=Or(o.shape,u.shape),h=[];if(1===o.rank){for(var f=0;f<u.shape.length-1;++f)h.push(u.shape[f]);h.push(1)}var p=r.sub(o),d=t.mul(c),v=is(a.add(an(i))),m=v.mul(v).mul(v).mul(an(-.5));return{x:function(){return 1===o.rank?t.mul(ir(v.as4D(1,1,1,o.shape[0]),h)).mul(c).reshape(r.shape):t.mul(v).mul(c).reshape(r.shape)},mean:function(){var t=v.mul(an(-1)).mul(d);return 1===o.rank&&(t=t.sum(l)),t.reshape(o.shape)},variance:function(){var t=m.mul(p).mul(d);return 1===o.rank&&(t=t.sum(l)),t.reshape(o.shape)},scale:function(){var e=p.mul(v),n=t.mul(e);return 1===o.rank&&(n=n.sum(l)),n.reshape(o.shape)},offset:function(){var e=t;return 1===o.rank&&(e=e.sum(l)),e.reshape(o.shape)}}}),"BatchNormalization",{varianceEpsilon:i},f).reshape(c.shape)}function Es(t){return null==t?null:0===t.rank?t.as1D():1===t.rank?t:2===t.rank?t.as4D(1,1,t.shape[0],t.shape[1]):3===t.rank?t.as4D(1,t.shape[0],t.shape[1],t.shape[2]):t}function Cs(){Me()}var _s=Ze({batchNormalization2d_:function(t,e,n,r,o,i){return void 0===r&&(r=.001),Cs(),ys(t,e,n,i,o,r)}}),Rs=Ze({batchNormalization3d_:function(t,e,n,r,o,i){return void 0===r&&(r=.001),Cs(),bs(t,e,n,i,o,r)}}),Is=Ze({batchNormalization4d_:function(t,e,n,r,o,i){return void 0===r&&(r=.001),Cs(),xs(t,e,n,i,o,r)}}),ks=Ze({batchNormalization_:function(t,e,n,r,o,i){return void 0===r&&(r=.001),Cs(),ws(t,e,n,i,o,r)}}),Ss=Ze({batchNorm_:ws}),As=Ze({batchNorm2d_:ys}),Os=Ze({batchNorm3d_:bs}),Ds=Ze({batchNorm4d_:xs}),Ts=Ze({logicalAnd_:function(t,e){var n=je(t,"a","logicalAnd","bool"),r=je(e,"b","logicalAnd","bool");return Dr(n.shape,r.shape),Ot.runKernelFunc((function(t){return t.logicalAnd(n,r)}),{$a:n,$b:r})}}),Ns=Ze({logicalNot_:function(t){var e=je(t,"x","logicalNot","bool");return Ot.runKernelFunc((function(t){return t.logicalNot(e)}),{$x:e})}}),Fs=Ze({logicalOr_:function(t,e){var n=je(t,"a","logicalOr","bool"),r=je(e,"b","logicalOr","bool");return Dr(n.shape,r.shape),Ot.runKernelFunc((function(t){return t.logicalOr(n,r)}),{$a:n,$b:r})}}),Ms=Ze({logicalXor_:function(t,e){var n=je(t,"a","logicalXor","bool"),r=je(e,"b","logicalXor","bool");return Dr(n.shape,r.shape),Fs(t,e).logicalAnd(Ts(t,e).logicalNot())}}),Ps=Ze({where_:function(t,e,n){var r=je(e,"a","where"),o=je(n,"b","where"),i=je(t,"condition","where","bool");return C(r.shape,o.shape,"Error in where: "),1===i.rank?E(i.shape[0]===r.shape[0],(function(){return"The first dimension of `a` must match the size of `condition`."})):C(i.shape,o.shape,"Error in where: "),Ot.runKernelFunc((function(t,e){var n=t.select(i,r,o);return e([i]),n}),{$condition:i,$a:r,$b:o},(function(t,e){var n=e[0];return{$condition:function(){return mn(n).toFloat()},$a:function(){return t.mul(n.cast(t.dtype))},$b:function(){return t.mul(n.logicalNot().cast(t.dtype))}}}))}}),Bs=function(t){return u(this,void 0,void 0,(function(){var e,n,r;return c(this,(function(o){switch(o.label){case 0:return[4,(e=je(t,"condition","whereAsync","bool")).data()];case 1:return n=o.sent(),r=no(e.shape,n),t!==e&&e.dispose(),[2,r]}}))}))},Ls=Ze({add_:function(t,e){var n,r=je(t,"a","add"),o=je(e,"b","add");n=_t(r,o),r=n[0],o=n[1];var i=Dr(r.shape,o.shape);return Ot.runKernelFunc((function(t){return t.add(r,o)}),{a:r,b:o},(function(t){return{a:function(){var e=t,n=Or(r.shape,i);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},b:function(){var e=t,n=Or(o.shape,i);return n.length>0&&(e=e.sum(n)),e.reshape(o.shape)}}}),"Add")}}),Ws=Ze({addN_:function(t){E(Array.isArray(t),(function(){return"The argument passed to tf.addN() must be a list of tensors"})),E(t.length>=1,(function(){return"Must pass at least one tensor to tf.addN(), but got "+t.length}));var e=t.map((function(t,e){return je(t,"tensors"+e,"addN")})),n=e[0];e.forEach((function(t){if(t.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")})),e.forEach((function(t){if(!k(t.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")}));var r=e;return Ot.runKernelFunc((function(t){return t.addN(e)}),r,(function(t){var n={};return e.forEach((function(e,r){n[r]=function(){return t.clone()}})),n}),"AddN")}}),Us=Ze({addStrict_:function(t,e){var n=je(t,"a","addStrict"),r=je(e,"b","addStrict");return C(n.shape,r.shape,"Error in addStrict: "),n.add(r)}}),js=Ze({atan2_:function(t,e){var n,r=je(t,"a","atan2"),o=je(e,"b","atan2");n=_t(r,o),r=n[0],o=n[1];var i=Dr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.atan2(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){var e=Ls(n.square(),r.square()),o=t.mul(r.div(e)),a=Or(n.shape,i);return a.length>0&&(o=o.sum(a)),o.reshape(n.shape)},$b:function(){var e=Ls(n.square(),r.square()),o=ns(t.mul(n.div(e))),a=Or(r.shape,i);return a.length>0&&(o=o.sum(a)),o.reshape(r.shape)}}}))}}),zs=Ze({div_:function(t,e){var n,r=je(t,"a","div"),o=je(e,"b","div");if(n=_t(r,o),r=n[0],o=n[1],"int32"===r.dtype&&"int32"===o.dtype)return Hs(r,o);var i=Dr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.realDivide(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.div(r.toFloat()),o=Or(n.shape,i);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Or(r.shape,i);o.length>0&&(e=e.sum(o).reshape(r.shape));var a=r.square();return e.div(a.toFloat()).neg()}}}),"Div")}}),Vs=Ze({divNoNan_:function(t,e){var n,r=je(t,"a","div"),o=je(e,"b","div");r=(n=_t(r,o))[0],o=n[1];var i=zs(r,o),a=mn(i),s=o.equal(a);return Ps(s,a,i)}}),Gs=Ze({divStrict_:function(t,e){var n=je(t,"a","div"),r=je(e,"b","div");return C(n.shape,r.shape,"Error in divideStrict: "),n.div(r)}}),Hs=Ze({floorDiv_:function(t,e){var n,r=je(t,"a","floorDiv"),o=je(e,"b","floorDiv");n=_t(r,o),r=n[0],o=n[1];var i=Dr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.floorDiv(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.div(r.toFloat()),o=Or(n.shape,i);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Or(r.shape,i);o.length>0&&(e=e.sum(o).reshape(r.shape));var a=r.square();return e.div(a.toFloat()).neg()}}}),"FloorDiv")}}),qs=Ze({maximum_:function(t,e){var n,r=je(t,"a","maximum"),o=je(e,"b","maximum");return n=_t(r,o),r=n[0],o=n[1],"bool"===r.dtype&&(r=r.toInt(),o=o.toInt()),Dr(r.shape,o.shape),Ot.runKernelFunc((function(t,e){var n=t.maximum(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){return t.mul(n.greaterEqual(r).toFloat())},$b:function(){return t.mul(n.less(r).toFloat())}}}))}}),Ks=Ze({maximumStrict_:function(t,e){var n=je(t,"a","maximumStrict"),r=je(e,"b","maximumStrict");return C(n.shape,r.shape,"Error in maximumStrict: "),n.maximum(r)}}),Xs=Ze({minimum_:function(t,e){var n,r=je(t,"a","minimum"),o=je(e,"b","minimum");return n=_t(r,o),r=n[0],o=n[1],"bool"===r.dtype&&(r=r.toInt(),o=o.toInt()),Dr(r.shape,o.shape),Ot.runKernelFunc((function(t,e){var n=t.minimum(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){return t.mul(n.lessEqual(r).toFloat())},$b:function(){return t.mul(n.greater(r).toFloat())}}}))}}),$s=Ze({minimumStrict_:function(t,e){var n=je(t,"a","minimumStrict"),r=je(e,"b","minimumStrict");return C(n.shape,r.shape,"Error in minimumStrict: "),n.minimum(r)}}),Ys=Ze({mod_:function(t,e){var n,r=je(t,"a","mod"),o=je(e,"b","mod");n=_t(r,o),r=n[0],o=n[1];var i=Dr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.mod(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){var e=Or(n.shape,i);return e.length>0?t.sum(e).reshape(n.shape):t},$b:function(){var e=t.mul(n.div(r).floor().neg()),o=Or(r.shape,i);return o.length>0?e.sum(o).reshape(r.shape):e}}}))}}),Js=Ze({modStrict_:function(t,e){var n=je(t,"a","modStrict"),r=je(e,"b","modStrict");return C(n.shape,r.shape,"Error in modStrict: "),n.mod(r)}}),Qs=Ze({mul_:function(t,e){var n,r=je(t,"a","mul"),o=je(e,"b","mul");n=_t(r,o),r=n[0],o=n[1];var i=Dr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.multiply(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.mul(r.toFloat()),o=Or(n.shape,i);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Or(r.shape,i);return o.length>0?e.sum(o).reshape(r.shape):e}}}),"Mul")}}),Zs=Ze({mulStrict_:function(t,e){var n=je(t,"a","mul"),r=je(e,"b","mul");return C(n.shape,r.shape,"Error in multiplyStrict: "),n.mul(r)}}),tu=Ze({pow_:function(t,e){var n=je(t,"base","pow"),r=je(e,"exp","pow"),o=Dr(n.shape,r.shape);return t=n.cast(Et(n.dtype,r.dtype)),e=r.cast(Et(n.dtype,r.dtype)),Ot.runKernelFunc((function(t,e){var o=t.pow(n,r);return e([n,r,o]),o}),{$base:n,$exp:r},(function(t,e){var n=e[0],r=e[1],i=e[2];return{$base:function(){var e=r.toFloat(),i=t.mul(e.mul(n.pow(e.sub(an(1))))),a=Or(n.shape,o);return a.length>0&&(i=i.sum(a)),i.reshape(n.shape)},$exp:function(){var e=n.greater(0),a=n.log().where(e,mn(n)),s=t.mul(i.mul(a)),u=Or(r.shape,o);return u.length>0&&(s=s.sum(u)),s.reshape(r.shape)}}}))}}),eu=Ze({powStrict_:function(t,e){return C(t.shape,e.shape,"Error in powStrict: "),t.pow(e)}}),nu=Ze({squaredDifference_:function(t,e){var n,r=je(t,"a","squaredDifference"),o=je(e,"b","squaredDifference");return n=_t(r,o),r=n[0],o=n[1],Dr(r.shape,o.shape),Ot.runKernelFunc((function(t,e){var n=t.squaredDifference(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1],o=an(2);return{$a:function(){return t.mul(n.sub(r).mul(o))},$b:function(){return t.mul(r.sub(n).mul(o))}}}))}}),ru=Ze({squaredDifferenceStrict_:function(t,e){var n=je(t,"a","squaredDifferenceStrict"),r=je(e,"b","squaredDifferenceStrict");return C(n.shape,r.shape,"Error in squaredDifferenceStrict: "),n.squaredDifference(r)}}),ou=Ze({sub_:function(t,e){var n,r=je(t,"a","sub"),o=je(e,"b","sub");n=_t(r,o),r=n[0],o=n[1];var i=Dr(r.shape,o.shape);return Ot.runKernelFunc((function(t){return t.subtract(r,o)}),{a:r,b:o},(function(t){return{a:function(){var e=t,n=Or(r.shape,i);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},b:function(){var e=t,n=Or(o.shape,i);return n.length>0&&(e=e.sum(n)),e.neg().reshape(o.shape)}}}),"Sub")}}),iu=Ze({subStrict_:function(t,e){var n=je(t,"a","subStrict"),r=je(e,"b","subStrict");return C(n.shape,r.shape,"Error in subStrict: "),n.sub(r)}}),au=Ze({equal_:function(t,e){var n,r=je(t,"a","equal"),o=je(e,"b","equal");return n=_t(r,o),r=n[0],o=n[1],Dr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.equal(r,o)}),{$a:r,$b:o})}}),su=Ze({equalStrict_:function(t,e){var n=je(t,"a","equalStrict"),r=je(e,"b","equalStrict");return C(n.shape,r.shape,"Error in equalStrict: "),n.equal(r)}}),uu=Ze({greater_:function(t,e){var n,r=je(t,"a","greater"),o=je(e,"b","greater");return n=_t(r,o),r=n[0],o=n[1],Dr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.greater(r,o)}),{$a:r,$b:o})}}),cu=Ze({greaterEqual_:function(t,e){var n,r=je(t,"a","greaterEqual"),o=je(e,"b","greaterEqual");return n=_t(r,o),r=n[0],o=n[1],Dr(r.shape,o.shape),Ot.runKernelFunc((function(t,e){var n=t.greaterEqual(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){return mn(n)},$b:function(){return mn(r)}}}))}}),lu=Ze({greaterEqualStrict_:function(t,e){var n=je(t,"a","greaterEqualStrict"),r=je(e,"b","greaterEqualStrict");return C(n.shape,r.shape,"Error in greaterEqualStrict: "),n.greaterEqual(r)}}),hu=Ze({greaterStrict_:function(t,e){var n=je(t,"a","greaterStrict"),r=je(e,"b","greaterStrict");return C(n.shape,r.shape,"Error in greaterStrict: "),n.greater(r)}}),fu=Ze({less_:function(t,e){var n,r=je(t,"a","less"),o=je(e,"b","less");return n=_t(r,o),r=n[0],o=n[1],Dr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.less(r,o)}),{$a:r,$b:o})}}),pu=Ze({lessEqual_:function(t,e){var n,r=je(t,"a","lessEqual"),o=je(e,"b","lessEqual");return n=_t(r,o),r=n[0],o=n[1],Dr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.lessEqual(r,o)}),{$a:r,$b:o})}}),du=Ze({lessEqualStrict_:function(t,e){var n=je(t,"a","lessEqualStrict"),r=je(e,"b","lessEqualStrict");return C(n.shape,r.shape,"Error in lessEqualStrict: "),n.lessEqual(r)}}),vu=Ze({lessStrict_:function(t,e){var n=je(t,"a","lessStrict"),r=je(e,"b","lessStrict");return C(n.shape,r.shape,"Error in lessStrict: "),n.less(r)}}),mu=Ze({notEqual_:function(t,e){var n,r=je(t,"a","notEqual"),o=je(e,"b","notEqual");return n=_t(r,o),r=n[0],o=n[1],Dr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.notEqual(r,o)}),{$a:r,$b:o})}}),gu=Ze({notEqualStrict_:function(t,e){var n=je(t,"a","notEqualStrict"),r=je(e,"b","notEqualStrict");return C(n.shape,r.shape,"Error in notEqualStrict: "),n.notEqual(r)}});function yu(t,e){for(var n=[],r=t;r<e;++r)n.push(r);return n}function bu(t){for(var e=[],n=0;n<t.length;++n)for(var r=0;r<t[n].length;++r)e.push(t[n][r]);return e}var xu=Ze({gather_:function(t,e,n){void 0===n&&(n=0);var r=je(t,"x","gather"),o=je(e,"indices","gather","int32");n=F(n,r.shape)[0];var i=function(t,e,n){for(var r=t.shape[n],o=[],i=1,a=1,s=0;s<n;s++)o.push(t.shape[s]),i*=t.shape[s];for(s=0;s<e.rank;s++)o.push(e.shape[s]);for(s=n+1;s<t.rank;s++)o.push(t.shape[s]),a*=t.shape[s];return{batchSize:i,sliceSize:a,dimSize:r,outputShape:o}}(r,o,n);return Ot.runKernelFunc((function(t,e){var i=t.gather(r,o.flatten(),n);return e([o]),i}),{$x:r},(function(t,e){var o=e[0];return{$x:function(){var e=r.shape,i=o.size,a=e.slice(0,n),s=a.length,u=e.slice(n,e.length).slice(1),c=u.length,l=yu(0,s),h=yu(s+1,s+1+c),f=bu([a,[i],u]),p=t.reshape(f),d=o.reshape([i]),v=bu([[s],l,h]),m=p.transpose(v),g=wu(m,d,r.shape[n]),y=$e(v);return g.transpose(y)}}})).reshape(i.outputShape)}}),wu=Ze({unsortedSegmentSum_:function(t,e,n){var r=je(t,"x","unsortedSegmentSum"),o=je(e,"segmentIds","unsortedSegmentSum","int32");return E(S(n),(function(){return"numSegments must be of dtype int"})),Ot.runKernelFunc((function(t,e){var i=t.unsortedSegmentSum(r,o,n);return e([o]),i}),{$x:r},(function(t,e){var n=e[0];return{$x:function(){return function(t,e){for(var n=qs(e,mn(e)),r=xu(t,n),o=cu(e,an(0,"int32")),i=r.rank-o.rank,a=0;a<i;++a)o=zn(o,a+1);o=Ts(o,hn(r.shape,"bool"));var s=mn(r);return Ps(o,r,s)}(t,n)}}}))}});function Eu(t,e,n,r,o,i,a){void 0===i&&(i="NHWC"),E(t.length===e.rank,(function(){return"Length of inShape ("+t.length+") and rank of dy ("+e.rank+") must match"}));var s=t,u=e,c=!1;3===e.rank&&(c=!0,u=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]),s=[1,t[0],t[1],t[2]]),E(4===s.length,(function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+s.length+"."})),E(4===u.rank,(function(){return"Error in conv2dDerInput: dy must be rank 4, but got rank "+u.rank})),E(4===n.rank,(function(){return"Error in conv2dDerInput: filter must be rank 4, but got rank "+n.rank}));var l="NHWC"===i?s[3]:s[1],h="NHWC"===i?u.shape[3]:u.shape[1];E(l===n.shape[2],(function(){return"Error in conv2dDerInput: depth of input ("+l+") must match input depth for filter "+n.shape[2]+"."})),E(h===n.shape[3],(function(){return"Error in conv2dDerInput: depth of output ("+h+") must match output depth for filter "+n.shape[3]+"."})),null!=a&&E(S(o),(function(){return"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."}));var f=Vr(i),p=Fr(s,n.shape,r,1,o,a,!1,f),d=Ot.runKernelFunc((function(t,e){var r=t.conv2dDerInput(u,n,p);return e([n,u]),r}),{dy4D:u,filter:n},(function(t,e){var n=e[0],s=e[1];return{dy4D:function(){return Iu(t,n,r,o,i,1,a)},filter:function(){return Su(t,s,n.shape,r,o,i,a)}}}));return c?d.as3D(d.shape[1],d.shape[2],d.shape[3]):d}function Cu(t){var e=function(t){return"number"==typeof t?[t,t,t]:2===t.length?[t[0],t[1],1]:t}(t),n=e[0],r=e[1],o=e[2];return 1===n&&1===r&&1===o}function _u(t,e,n,r,o){E(t.length===e.rank,(function(){return"Length of inShape ("+t.length+") and rank of dy ("+e.rank+") must match"}));var i=t,a=e,s=!1;4===e.rank&&(s=!0,a=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]),i=[1,t[0],t[1],t[2],t[3]]);var u=i[4],c=a.shape[4];E(5===i.length,(function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+i.length+"."})),E(5===a.rank,(function(){return"Error in conv3dDerInput: dy must be rank 5, but got rank "+a.rank})),E(5===n.rank,(function(){return"Error in conv3dDerInput: filter must be rank 5, but got rank "+n.rank})),E(u===n.shape[3],(function(){return"Error in conv3dDerInput: depth of input ("+u+") must match input depth for filter "+n.shape[3]+"."})),E(c===n.shape[4],(function(){return"Error in conv3dDerInput: depth of output ("+c+") must match output depth for filter "+n.shape[4]+"."}));var l=Mr(i,n.shape,r,1,o),h=Ot.runKernelFunc((function(t){return t.conv3dDerInput(a,n,l)}),{dy5D:a});return s?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}var Ru=Ze({conv1d_:function(t,e,n,r,o,i,a){void 0===o&&(o="NWC"),void 0===i&&(i=1);var s=je(t,"x","conv1d"),u=je(e,"filter","conv1d"),c=s,l=!1;2===s.rank&&(l=!0,c=s.as3D(1,s.shape[0],s.shape[1])),E(3===c.rank,(function(){return"Error in conv1d: input must be rank 3, but got rank "+c.rank+"."})),E(3===u.rank,(function(){return"Error in conv1d: filter must be rank 3, but got rank "+u.rank+"."})),null!=a&&E(S(r),(function(){return"Error in conv1d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+"."})),E(c.shape[2]===u.shape[1],(function(){return"Error in conv1d: depth of input ("+c.shape[2]+") must match input depth for filter "+u.shape[1]+"."})),E(zr(n,i),(function(){return"Error in conv1D: Either stride or dilation must be 1. Got stride "+n+" and dilation '"+i+"'"})),E("NWC"===o,(function(){return"Error in conv1d: got dataFormat of "+o+" but only NWC is currently supported."}));var h=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),f=c.as4D(c.shape[0],1,c.shape[1],c.shape[2]),p=Iu(f,h,[1,n],r,"NHWC",[1,i],a);return l?p.as2D(p.shape[2],p.shape[3]):p.as3D(p.shape[0],p.shape[2],p.shape[3])}}),Iu=Ze({conv2d_:function(t,e,n,r,o,i,a){void 0===o&&(o="NHWC"),void 0===i&&(i=[1,1]);var s=je(t,"x","conv2d"),u=je(e,"filter","conv2d"),c=s,l=!1;3===s.rank&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),E(4===c.rank,(function(){return"Error in conv2d: input must be rank 4, but got rank "+c.rank+"."})),E(4===u.rank,(function(){return"Error in conv2d: filter must be rank 4, but got rank "+u.rank+"."})),null!=a&&E(S(r),(function(){return"Error in conv2d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+"."}));var h="NHWC"===o?c.shape[3]:c.shape[1];E(h===u.shape[2],(function(){return"Error in conv2d: depth of input ("+h+") must match input depth for filter "+u.shape[2]+"."})),E(zr(n,i),(function(){return"Error in conv2D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"}));var f=Vr(o),p=Fr(c.shape,u.shape,n,i,r,a,!1,f),d=[u,c],v=Ot.runKernelFunc((function(t,e){var n=t.conv2d(c,u,p);return e([u,c]),n}),{x:c,filter:u},(function(t,e){var a=e,s=a[0],u=a[1];return E(jr(i),(function(){return"Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+i+"'"})),{x:function(){return Au(u.shape,t,s,n,r,o)},filter:function(){return Su(u,t,s.shape,n,r,o)}}}),"Conv2D",p,d);return l?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),ku=Ze({conv3d_:function(t,e,n,r,o,i){void 0===o&&(o="NDHWC"),void 0===i&&(i=[1,1,1]);var a=je(t,"x","conv3d"),s=je(e,"filter","conv3d"),u=a,c=!1;4===a.rank&&(c=!0,u=a.as5D(1,a.shape[0],a.shape[1],a.shape[2],a.shape[3])),E(5===u.rank,(function(){return"Error in conv3d: input must be rank 5, but got rank "+u.rank+"."})),E(5===s.rank,(function(){return"Error in conv3d: filter must be rank 5, but got rank "+s.rank+"."})),E(u.shape[4]===s.shape[3],(function(){return"Error in conv3d: depth of input ("+u.shape[4]+") must match input depth for filter "+s.shape[3]+"."})),E(function(t,e){return Cu(t)||Cu(e)}(n,i),(function(){return"Error in conv3D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"})),E("NDHWC"===o,(function(){return"Error in conv3d: got dataFormat of "+o+" but only NDHWC is currently supported."}));var l=Mr(u.shape,s.shape,n,i,r),h=Ot.runKernelFunc((function(t,e){var n=t.conv3d(u,s,l);return e([u,s]),n}),{x:u,$filter:s},(function(t,e){E(Cu(i),(function(){return"Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+i+"'"}));var o=e[0],a=e[1];return{x:function(){return _u(o.shape,t,a,n,r)},$filter:function(){return function(t,e,n,r,o){var i=t;4===t.rank&&(i=t.as5D(1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]));var a=e;4===a.rank&&(a=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3])),E(5===i.rank,(function(){return"Error in conv3dDerFilter: input must be rank 5, but got shape "+i.shape+"."})),E(5===a.rank,(function(){return"Error in conv3dDerFilter: dy must be rank 5, but got shape "+a.shape+"."})),E(5===n.length,(function(){return"Error in conv3dDerFilter: filterShape must be length 5, but got "+n+"."})),E(i.shape[4]===n[3],(function(){return"Error in conv3dDerFilter: depth of input "+i.shape[4]+") must match input depth in filter ("+n[3]+"."})),E(a.shape[4]===n[4],(function(){return"Error in conv3dDerFilter: depth of dy ("+a.shape[4]+") must match output depth for filter ("+n[4]+")."}));var s=Mr(i.shape,n,r,1,o);return Ot.runKernelFunc((function(t){return t.conv3dDerFilter(i,a,s)}),{x5D:i,dy5D:a})}(o,t,a.shape,n,r)}}}));return c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),Su=Ze({conv2dDerFilter_:function(t,e,n,r,o,i,a){void 0===i&&(i="NHWC");var s=t;3===t.rank&&(s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var u=e;3===u.rank&&(u=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),E(4===s.rank,(function(){return"Error in conv2dDerFilter: input must be rank 4, but got shape "+s.shape+"."})),E(4===u.rank,(function(){return"Error in conv2dDerFilter: dy must be rank 4, but got shape "+u.shape+"."})),E(4===n.length,(function(){return"Error in conv2dDerFilter: filterShape must be length 4, but got "+n+"."}));var c="NHWC"===i?s.shape[3]:s.shape[1],l="NHWC"===i?u.shape[3]:u.shape[1];E(c===n[2],(function(){return"Error in conv2dDerFilter: depth of input "+c+") must match input depth in filter ("+n[2]+"."})),E(l===n[3],(function(){return"Error in conv2dDerFilter: depth of dy ("+l+") must match output depth for filter ("+n[3]+")."})),null!=a&&E(S(o),(function(){return"Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."}));var h=Vr(i),f=Fr(s.shape,n,r,1,o,a,!1,h);return Ot.runKernelFunc((function(t){return t.conv2dDerFilter(s,u,f)}),{x4D:s,dy4D:u})}}),Au=Ze({conv2dDerInput_:Eu}),Ou=Ze({depthwiseConv2d_:function(t,e,n,r,o,i,a){void 0===o&&(o="NHWC"),void 0===i&&(i=[1,1]);var s=je(t,"x","depthwiseConv2d"),u=je(e,"filter","depthwiseConv2d"),c=s,l=!1;3===s.rank&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),E(4===c.rank,(function(){return"Error in depthwiseConv2d: input must be rank 4, but got rank "+c.rank+"."})),E(4===u.rank,(function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+u.rank+"."})),E(c.shape[3]===u.shape[2],(function(){return"Error in depthwiseConv2d: number of input channels ("+c.shape[3]+") must match the inChannels dimension in filter "+u.shape[2]+"."})),null==i&&(i=[1,1]),E(zr(n,i),(function(){return"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"})),null!=a&&E(S(r),(function(){return"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+r+"."}));var h=Fr(c.shape,u.shape,n,i,r,a,!0),f=[c,u],p=Ot.runKernelFunc((function(t,e){var n=t.depthwiseConv2D(c,u,h);return e([c,u]),n}),{x:c,filter:u},(function(t,e){E(jr(i),(function(){return"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+i+"'"}));var n=e[0],r=e[1];return{x:function(){return Du(n.shape,t,r,h)},filter:function(){return Tu(n,t,r.shape,h)}}}),"DepthwiseConv2dNative",h,f);return l?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}}),Du=Ze({depthwiseConv2dDerInput_:function(t,e,n,r){var o=e,i=!1;3===e.rank&&(i=!0,o=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var a=Ot.runKernelFunc((function(t){return t.depthwiseConv2DDerInput(o,n,r)}),{dy4D:o});return i?a.as3D(a.shape[1],a.shape[2],a.shape[3]):a}}),Tu=Ze({depthwiseConv2dDerFilter_:function(t,e,n,r){var o=t;3===t.rank&&(o=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var i=e;return 3===i.rank&&(i=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),Ot.runKernelFunc((function(t){return t.depthwiseConv2DDerFilter(o,i,r)}),{x4D:o,dy4D:i})}}),Nu=Ze({separableConv2d_:function(t,e,n,r,o,i,a){void 0===i&&(i=[1,1]),void 0===a&&(a="NHWC");var s=je(t,"x","separableConv2d"),u=je(e,"depthwiseFilter","separableConv2d"),c=je(n,"pointwiseFilter","separableConv2d"),l=s,h=!1;if(3===s.rank&&(h=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),"NCHW"===a)throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");E(4===l.rank,(function(){return"Error in separableConv2d: input must be rank 4, but got rank "+l.rank+"."})),E(4===u.rank,(function(){return"Error in separableConv2d: depthwise filter must be rank 4, but got rank "+u.rank+"."})),E(4===c.rank,(function(){return"Error in separableConv2d: pointwise filter must be rank 4, but got rank "+u.rank+"."})),E(1===c.shape[0],(function(){return"Error in separableConv2d: the first dimension of pointwise filter must be 1, but got "+c.shape[0]+"."})),E(1===c.shape[1],(function(){return"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got "+c.shape[1]+"."}));var f=u.shape[2],p=u.shape[3];E(c.shape[2]===f*p,(function(){return"Error in separableConv2d: the third dimension of pointwise filter must be "+f*p+", but got "+c.shape[2]+"."}));var d=Ou(l,u,r,o,a,i),v=Iu(d,c,1,"valid",a);return h?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),Fu=Ze({conv2dTranspose_:function(t,e,n,r,o,i){return Eu(n,je(t,"x","conv2dTranspose"),je(e,"filter","conv2dTranspose"),r,o,"NHWC",i)}}),Mu=Ze({conv3dTranspose_:function(t,e,n,r,o){return _u(n,je(t,"x","conv3dTranspose"),je(e,"filter","conv3dTranspose"),r,o)}}),Pu=Ze({matMul_:function(t,e,n,r){var o;void 0===n&&(n=!1),void 0===r&&(r=!1);var i=je(t,"a","matMul"),a=je(e,"b","matMul");o=_t(i,a),i=o[0],a=o[1];var s=n?i.shape[i.rank-2]:i.shape[i.rank-1],u=r?a.shape[a.rank-1]:a.shape[a.rank-2],c=n?i.shape[i.rank-1]:i.shape[i.rank-2],l=r?a.shape[a.rank-2]:a.shape[a.rank-1],h=i.shape.slice(0,-2),f=a.shape.slice(0,-2),p=I(h),d=I(f);E(i.rank>=2&&a.rank>=2&&i.rank===a.rank,(function(){return"Error in matMul: inputs must have the same rank of at least 2, got ranks "+i.rank+" and "+a.rank+"."})),E(k(h,f),(function(){return"Error in matMul: outer dimensions ("+h+") and ("+f+") of Tensors with shapes "+i.shape+" and "+a.shape+" must match."})),E(s===u,(function(){return"Error in matMul: inner shapes ("+s+") and ("+u+") of Tensors with shapes "+i.shape+" and "+a.shape+" and transposeA="+n+" and transposeB="+r+" must match."}));var v=i.shape.slice(0,-2).concat([c,l]),m=n?i.as3D(p,s,c):i.as3D(p,c,s),g=r?a.as3D(d,l,u):a.as3D(d,u,l),y={transposeA:n,transposeB:r};return Ot.runKernelFunc((function(t,e){var o=t.batchMatMul(m,g,n,r);return e([m,g]),o}),{a:m,b:g},(function(t,e){var o=e,i=o[0],a=o[1];return n||r?!n&&r?{a:function(){return t.matMul(a,!1,!1)},b:function(){return t.matMul(i,!0,!1)}}:n&&!r?{a:function(){return a.matMul(t,!1,!0)},b:function(){return i.matMul(t,!1,!1)}}:{a:function(){return a.matMul(t,!0,!0)},b:function(){return t.matMul(i,!0,!0)}}:{a:function(){return t.matMul(a,!1,!0)},b:function(){return i.matMul(t,!0,!1)}}}),"BatchMatMul",y).reshape(v)}}),Bu=Ze({dot_:function(t,e){var n=je(t,"t1","dot"),r=je(e,"t2","dot");E(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),(function(){return"Error in dot: inputs must all be rank 1 or 2, but got ranks "+n.rank+" and "+r.rank+"."}));var o=1===n.rank?n.size:n.shape[1],i=1===r.rank?r.size:r.shape[0];return E(o===i,(function(){return"Error in dot: inner dimensions of inputs must match, but got "+o+" and "+i+"."})),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),Lu=Ze({outerProduct_:function(t,e){var n=je(t,"v1","outerProduct"),r=je(e,"v2","outerProduct");return E(1===n.rank&&1===r.rank,(function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+n.rank+" and "+r.rank+"."})),n.as2D(-1,1).matMul(r.as2D(1,-1))}}),Wu=Ze({reverse_:function(t,e){var n=je(t,"x","reverse");if(0===n.rank)return n.clone();var r=F(e,n.shape);return Ot.runKernelFunc((function(t){return t.reverse(n,r)}),{$x:n},(function(t){return{$x:function(){return t.reverse(r)}}})).reshapeAs(n)}}),Uu=Ze({reverse1d_:function(t){var e=je(t,"x","reverse");return E(1===e.rank,(function(){return"Error in reverse1D: x must be rank 1 but got rank "+e.rank+"."})),Wu(e,0)}}),ju=Ze({reverse2d_:function(t,e){var n=je(t,"x","reverse");return E(2===n.rank,(function(){return"Error in reverse2D: x must be rank 2 but got rank "+n.rank+"."})),Wu(n,e)}}),zu=Ze({reverse3d_:function(t,e){var n=je(t,"x","reverse");return E(3===n.rank,(function(){return"Error in reverse3D: x must be rank 3 but got rank "+n.rank+"."})),Wu(n,e)}}),Vu=Ze({reverse4d_:function(t,e){var n=je(t,"x","reverse");return E(4===n.rank,(function(){return"Error in reverse4D: x must be rank 4 but got rank "+n.rank+"."})),Wu(n,e)}});function Gu(t,e,n,r,o,i){var a=je(t,"x","maxPool"),s=a,u=!1;3===a.rank&&(u=!0,s=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),null==r&&(r=[1,1]),E(4===s.rank,(function(){return"Error in maxPool: input must be rank 4 but got rank "+s.rank+"."})),E(zr(n,r),(function(){return"Error in maxPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"})),null!=i&&E(S(o),(function(){return"Error in maxPool: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+o+"."}));var c=Tr(s.shape,e,n,r,o,i);if(1===c.filterWidth&&1===c.filterHeight&&k(c.inShape,c.outShape))return a.clone();var l=[s],h=Ot.runKernelFunc((function(t,e){var n=t.maxPool(s,c);return e([s,n]),n}),{x:s},(function(t,i){var a=i[0],s=i[1];return{x:function(){return function(t,e,n,r,o,i,a,s){var u=je(t,"dy","maxPoolBackprop"),c=je(e,"input","maxPoolBackprop"),l=je(n,"output","maxPoolBackprop");E(c.rank===u.rank,(function(){return"Rank of input ("+c.rank+") does not match rank of dy ("+u.rank+")"})),null==i&&(i=[1,1]),E(zr(o,i),(function(){return"Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+i+"'"})),E(4===u.rank,(function(){return"Error in maxPoolBackprop: dy must be rank 4 but got rank "+u.rank+"."})),E(4===c.rank,(function(){return"Error in maxPoolBackprop: input must be rank 4 but got rank "+c.rank+"."}));var h=Tr(c.shape,r,o,i,a,s);return Ot.runKernelFunc((function(t){return t.maxPoolBackprop(u,c,l,h)}),{$dy:u,$input:c})}(t,a,s,e,n,r,o)}}}),"MaxPool",c,l);return u?h.as3D(h.shape[1],h.shape[2],h.shape[3]):h}function Hu(t,e,n,r,o,i){var a=je(t,"x","avgPool","float32");null==r&&(r=[1,1]),E(zr(n,r),(function(){return"Error in avgPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"}));var s=a,u=!1;3===a.rank&&(u=!0,s=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),E(4===s.rank,(function(){return"Error in avgPool: x must be rank 4 but got rank "+s.rank+"."})),null!=i&&E(S(o),(function(){return"Error in avgPool: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+o+"."}));var c=Tr(s.shape,e,n,r,o,i);if(1===c.filterWidth&&1===c.filterHeight&&k(c.inShape,c.outShape))return a.clone();var l=Ot.runKernelFunc((function(t){return t.avgPool(s,c)}),{x:s},(function(t){return{x:function(){return function(t,e,n,r,o,i){var a=je(t,"dy","avgPoolBackprop"),s=je(e,"input","avgPoolBackprop");E(s.rank===a.rank,(function(){return"Rank of input ("+s.rank+") does not match rank of dy ("+a.rank+")"})),null==o&&(o=[1,1]),E(zr(r,o),(function(){return"Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+o+"'"}));var u=s,c=a,l=!1;3===s.rank&&(l=!0,u=s.as4D(1,s.shape[0],s.shape[1],s.shape[2]),c=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),E(4===c.rank,(function(){return"Error in avgPoolBackprop: dy must be rank 4 but got rank "+c.rank+"."})),E(4===u.rank,(function(){return"Error in avgPoolBackprop: input must be rank 4 but got rank "+u.rank+"."}));var h=Tr(u.shape,n,r,o,i),f=Ot.runKernelFunc((function(t){return t.avgPoolBackprop(c,u,h)}),{dy4D:c,input4D:u});return l?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}(t,s,e,n,r,o)}}}),"AvgPool",c);return l=l.cast(a.dtype),u?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}var qu=Ze({maxPool_:function(t,e,n,r,o){return Gu(t,e,n,1,r,o)}}),Ku=Ze({avgPool_:function(t,e,n,r,o){return Hu(t,e,n,1,r,o)}}),Xu=Ze({pool_:function(t,e,n,r,o,i){null==o&&(o=[1,1]),null==i&&(i=1),0===r&&(r="valid");var a=je(t,"x","maxPool"),s=a,u=!1;3===a.rank&&(u=!0,s=a.as4D(1,a.shape[0],a.shape[1],a.shape[2])),E(zr(i,o),(function(){return"Error in pool: Either strides or dilations must be 1. Got strides "+i+" and dilations '"+o+"'"}));var c,l=Tr(s.shape,e,i,o,r),h=[l.dilationHeight,l.dilationWidth];c="same"===r?function(t,e){var n=t.map((function(t,n){return t+(t-1)*(e[n]-1)})).map((function(t){return t-1})),r=n.map((function(t){return Math.floor(t/2)})),o=n.map((function(t,e){return t-r[e]}));return n.map((function(t,e){return[r[e],o[e]]}))}([l.filterHeight,l.filterWidth],h):[[0,0],[0,0]];var f=1===h[0]&&1===h[1],p=function(t,e,n){var r=n.map((function(t){return t[0]})),o=n.map((function(t){return t[1]})),i=t.concat(r,o),a=e.map((function(t,e){return(t-i[e]%t)%t})),s=o.map((function(t,e){return t+a[e]}));return[e.map((function(t,e){return[r[e],s[e]]})),e.map((function(t,e){return[0,a[e]]}))]}([l.inHeight,l.inWidth],h,c),d=p[0],v=p[1],m=f?r:"valid",g=f?s:nr(s,h,d),y=("avg"===n?function(){return Hu(g,e,i,1,m)}:function(){return Gu(g,e,i,1,m)})(),b=f?y:Pn(y,h,v);return u?b.as3D(b.shape[1],b.shape[2],b.shape[3]):b}}),$u=Ze({maxPool3d_:function(t,e,n,r,o,i,a){void 0===i&&(i="NDHWC");var s=je(t,"x","maxPool3d"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==a&&(a=[1,1,1]),E(5===u.rank,(function(){return"Error in maxPool3d: x must be rank 5 but got rank "+u.rank+"."})),E("NDHWC"===i,(function(){return"Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of "+i})),E(zr(n,a),(function(){return"Error in maxPool3d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+a+"'"})),null!=o&&E(S(r),(function(){return"Error in maxPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."}));var l=Nr(u.shape,e,n,a,r,o,i),h=Ot.runKernelFunc((function(t,e){var n=t.maxPool3d(u,l);return e([u,n]),n}),{x:u},(function(t,i){var s=i[0],u=i[1];return{x:function(){return function(t,e,n,r,o,i,a,s){var u=je(t,"dy","maxPool3dBackprop"),c=je(e,"input","maxPool3dBackprop"),l=je(n,"output","maxPool3dBackprop"),h=u,f=c,p=l,d=!1;4===c.rank&&(d=!0,h=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]),f=c.as5D(1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]),p=l.as5D(1,l.shape[0],l.shape[1],l.shape[2],l.shape[3])),E(5===h.rank,(function(){return"Error in maxPool3dBackprop: dy must be rank 5 but got rank "+h.rank+"."})),E(5===f.rank,(function(){return"Error in maxPool3dBackprop: input must be rank 5 but got rank "+f.rank+"."})),E(5===p.rank,(function(){return"Error in maxPool3dBackprop: output must be rank 5 but got rank "+p.rank+"."})),null==i&&(i=[1,1,1]),E(zr(o,i),(function(){return"Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+i+"'"})),null!=s&&E(S(a),(function(){return"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+s+" but got pad "+a+"."}));var v=Nr(f.shape,r,o,i,a,s),m=Ot.runKernelFunc((function(t){return t.maxPool3dBackprop(h,f,p,v)}),{dy5D:h,input5D:f});return d?m.as4D(m.shape[1],m.shape[2],m.shape[3],m.shape[4]):m}(t,s,u,e,n,a,r,o)}}}));return c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),Yu=Ze({avgPool3d_:function(t,e,n,r,o,i,a){void 0===i&&(i="NDHWC");var s=je(t,"x","avgPool3d","float32"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==a&&(a=[1,1,1]),E(5===u.rank,(function(){return"Error in avgPool3d: x must be rank 5 but got rank "+u.rank+"."})),E("NDHWC"===i,(function(){return"Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of "+i})),E(zr(n,a),(function(){return"Error in avgPool3d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+a+"'"})),null!=o&&E(S(r),(function(){return"Error in avgPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."}));var l=Nr(u.shape,e,n,a,r,o,i),h=Ot.runKernelFunc((function(t){return t.avgPool3d(u,l)}),{x:u},(function(t){return{x:function(){return function(t,e,n,r,o,i,a){var s=je(t,"dy","avgPool3dBackprop"),u=je(e,"input","avgPool3dBackprop"),c=s,l=u,h=!1;4===u.rank&&(h=!0,c=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]),l=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3])),E(5===c.rank,(function(){return"Error in avgPool3dBackprop: dy must be rank 5 but got rank "+c.rank+"."})),E(5===l.rank,(function(){return"Error in avgPool3dBackprop: input must be rank 5 but got rank "+l.rank+"."})),null==o&&(o=[1,1,1]),E(zr(r,o),(function(){return"Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+o+"'"})),null!=a&&E(S(i),(function(){return"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+i+"."}));var f=Nr(l.shape,n,r,o,i,a),p=Ot.runKernelFunc((function(t){return t.avgPool3dBackprop(c,l,f)}),{dy5D:c,input5D:l});return h?p.as4D(p.shape[1],p.shape[2],p.shape[3],p.shape[4]):p}(t,u,e,n,a,r,o)}}}));return h=h.cast(u.dtype),c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),Ju=Ze({slice_:function(t,e,n){var r,o,i=je(t,"x","slice");if(0===i.rank)throw new Error("Slicing scalar is not possible");(r="number"==typeof e?[e].concat(new Array(i.rank-1).fill(0)):e.length<i.rank?e.concat(new Array(i.rank-e.length).fill(0)):e.slice()).forEach((function(t){E(-1!==t,(function(){return"slice() does not support negative begin indexing."}))})),o=(o=null==n?new Array(i.rank).fill(-1):"number"==typeof n?[n].concat(new Array(i.rank-1).fill(-1)):n.length<i.rank?n.concat(new Array(i.rank-n.length).fill(-1)):n).map((function(t,e){return t>=0?t:(E(-1===t,(function(){return"Negative size values should be exactly -1 but got "+t+" for the slice() size at index "+e+"."})),i.shape[e]-r[e])})),mr(i,r,o);var a=i.shape,s={begin:r,size:o};return Ot.runKernelFunc((function(t){return t.slice(i,r,o)}),{x:i},(function(t){for(var e=[],n=0;n<t.rank;n++)e.push([r[n],a[n]-r[n]-o[n]]);return{x:function(){return t.pad(e)}}}),"Slice",s)}}),Qu=Ze({slice1d_:function(t,e,n){var r=je(t,"x","slice1d");return E(1===r.rank,(function(){return"slice1d expects a rank-1 tensor, but got a rank-"+r.rank+" tensor"})),Ju(r,[e],[n])}}),Zu=Ze({slice2d_:function(t,e,n){var r=je(t,"x","slice2d");return E(2===r.rank,(function(){return"slice2d expects a rank-2 tensor, but got a rank-"+r.rank+" tensor"})),Ju(r,e,n)}}),tc=Ze({slice3d_:function(t,e,n){var r=je(t,"x","slice3d");return E(3===r.rank,(function(){return"slice3d expects a rank-3 tensor, but got a rank-"+r.rank+" tensor"})),Ju(r,e,n)}}),ec=Ze({slice4d_:function(t,e,n){var r=je(t,"x","slice4d");return E(4===r.rank,(function(){return"slice4d expects a rank-4 tensor, but got a rank-"+r.rank+" tensor"})),Ju(r,e,n)}});function nc(t,e,n,r,o){return e.rank<n.rank&&(e=e.reshape(qe(e.shape,r))),t.rank<n.rank&&(t=t.reshape(qe(t.shape,r))),{x:function(){var r=t.mul(n.equal(e).cast(t.dtype));return null==o?r:r.transpose(o)}}}var rc=Ze({all_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","all","bool"),o=F(e,r.shape),i=o,a=Xe(i,r.rank);null!=a&&(r=r.transpose(a),i=Ye(i.length,r.rank));var s=Ot.runKernelFunc((function(t){return t.all(r,i)}),{$x:r});if(n){var u=qe(s.shape,o);return s.reshape(u)}return s}}),oc=Ze({any_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","any","bool"),o=F(e,r.shape),i=o,a=Xe(i,r.rank);null!=a&&(r=r.transpose(a),i=Ye(i.length,r.rank));var s=Ot.runKernelFunc((function(t){return t.any(r,i)}),{$x:r});if(n){var u=qe(s.shape,o);return s.reshape(u)}return s}}),ic=Ze({argMax_:function(t,e){void 0===e&&(e=0);var n=je(t,"x","argMax");null==e&&(e=0);var r=F(e,n.shape),o=Xe(r,n.rank);null!=o&&(n=n.transpose(o),r=Ye(r.length,n.rank));var i={axis:r[0]},a=[n];return Ot.runKernelFunc((function(t,e){var o=t.argMax(n,r[0]);return e([n]),o}),{x:n},(function(t,e){var n=e[0];return{x:function(){return mn(n)}}}),"ArgMax",i,a)}}),ac=Ze({argMin_:function(t,e){void 0===e&&(e=0);var n=je(t,"x","argMin");null==e&&(e=0);var r=F(e,n.shape),o=Xe(r,n.rank);return null!=o&&(n=n.transpose(o),r=Ye(r.length,n.rank)),Ot.runKernelFunc((function(t,e){var o=t.argMin(n,r[0]);return e([n]),o}),{$x:n},(function(t,e){var n=e[0];return{$x:function(){return mn(n)}}}))}}),sc=Ze({logSumExp_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","logSumExp"),o=F(e,r.shape),i=r.max(o,!0),a=r.sub(i).exp().sum(o).log(),s=i.reshape(a.shape).add(a);if(n){var u=qe(s.shape,o);return s.reshape(u)}return s}}),uc=Ze({max_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","max"),o=r,i=F(e,r.shape),a=i,s=Xe(a,r.rank);null!=s&&(r=r.transpose(s),a=Ye(a.length,r.rank));var u=[r],c=Ot.runKernelFunc((function(t,e){var n=t.max(r,a);return e([o,n]),n}),{x:r},(function(t,e){return nc(t,e[1],e[0],i,s)}),"Max",{axes:a},u,[!0]);if(n){var l=qe(c.shape,i);c=c.reshape(l)}return c}}),cc=Ze({mean_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","mean"),o=F(e,r.shape),i=I(He(r.shape,o)[1]);return Cr((function(t){var r=an(i);return{value:(r.dtype===t.dtype?t:t.cast(r.dtype)).div(r).sum(e,n),gradFunc:function(e){var n=t.shape.slice();return o.forEach((function(t){n[t]=1})),e.reshape(n).mul(hn(t.shape,"float32")).div(i)}}}))(r)}}),lc=Ze({min_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","min"),o=r,i=F(e,r.shape),a=i,s=Xe(a,r.rank);null!=s&&(r=r.transpose(s),a=Ye(a.length,r.rank));var u=[r],c=Ot.runKernelFunc((function(t,e){var n=t.min(r,a);return e([o,n]),n}),{x:r},(function(t,e){return nc(t,e[1],e[0],i,s)}),"Min",{axes:a},u,[!0]);if(n){var l=qe(c.shape,i);c=c.reshape(l)}return c}}),hc=Ze({moments_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=F(e,(t=je(t,"x","moments")).shape),o=t.mean(r,n),i=o.shape;n||(i=qe(o.shape,r));var a=t.toFloat().sub(o.reshape(i)).square();return{mean:o,variance:a.mean(r,n)}}}),fc=Ze({sum_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","sum");"bool"===r.dtype&&(r=r.toInt());var o=F(e,r.shape);return Cr((function(t){var e=Xe(o,t.rank),r=o,i=t;null!=e&&(i=t.transpose(e),r=Ye(r.length,t.rank));var a=Ot.runKernelFunc((function(t){return t.sum(i,r)}),{permutedX:i});if(n){var s=qe(a.shape,o);a=a.reshape(s)}return{value:a,gradFunc:function(e){var n=t.shape.slice();return o.forEach((function(t){n[t]=1})),e.reshape(n).mul(hn(t.shape,"float32"))}}}))(r)}}),pc=Ze({prod_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","prod");"bool"===r.dtype&&(r=r.toInt());var o=F(e,r.shape),i=Xe(o,r.rank),a=o,s=r;null!=i&&(s=r.transpose(i),a=Ye(a.length,r.rank));var u=Ot.runKernelFunc((function(t){return t.prod(s,a)}),{permutedX:s});if(n){var c=qe(u.shape,o);u=u.reshape(c)}return u}}),dc=Ze({elu_:function(t){var e=je(t,"x","elu");return Ot.runKernelFunc((function(t,n){var r=t.elu(e);return n([r]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return Ot.runKernelFunc((function(e){return e.eluDer(t,n)}),{dy:t,y:n})}}}))}}),vc=Ze({leakyRelu_:function(t,e){void 0===e&&(e=.2);var n=je(t,"x","leakyRelu");return qs(an(e).mul(n),n)}}),mc=Ze({prelu_:function(t,e){var n=je(t,"x","prelu"),r=je(e,"alpha","prelu");return Ot.runKernelFunc((function(t,e){var o=t.prelu(n,r);return e([n,r]),o}),{x:n,alpha:r},(function(t,e){var n=e[0],r=e[1],o=n.greater(0);return{x:function(){return Ps(o,t,t.mul(r))},alpha:function(){var e=Ps(o,mn(t),t.mul(n)),i=Or(r.shape,t.shape);return i.length>0&&(e=e.sum(i)),e.reshape(r.shape)}}}),"Prelu")}}),gc=Ze({relu_:function(t){var e=je(t,"x","relu");return"bool"===e.dtype?e.toInt():Ot.runKernelFunc((function(t,n){var r=t.relu(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mulStrict(n.step().toFloat())}}}),"Relu")}}),yc=Ze({relu6_:function(t){var e=je(t,"x","relu6");return"bool"===e.dtype?e.toInt():Ot.runKernelFunc((function(t,n){var r=t.relu6(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0],r=n.lessEqual(6).mul(n.step());return{x:function(){return t.mulStrict(r.toFloat())}}}),"Relu6")}}),bc=Ze({selu_:function(t){var e=je(t,"x","selu");return Ot.runKernelFunc((function(t,n){var r=t.selu(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){var e=n.greater(an(0)),r=an(va),o=an(ma),i=t.mul(o),a=t.mul(r).mul(n.toFloat().exp());return Ps(e,i,a)}}}))}}),xc=Ze({transpose_:function(t,e){var n=je(t,"x","transpose");if(null==e&&(e=n.shape.map((function(t,e){return e})).reverse()),E(n.rank===e.length,(function(){return"Error in transpose: rank of input "+n.rank+" must match length of perm "+e+"."})),e.forEach((function(t){E(t>=0&&t<n.rank,(function(){return"All entries in 'perm' must be between 0 and "+(n.rank-1)+" but got "+e}))})),n.rank<=1)return n.clone();var r={perm:e};return Ot.runKernelFunc((function(t){return t.transpose(n,e)}),{x:n},(function(t){var n=$e(e);return{x:function(){return t.transpose(n)}}}),"Transpose",r)}}),wc=Ze({localResponseNormalization_:function(t,e,n,r,o){void 0===e&&(e=5),void 0===n&&(n=1),void 0===r&&(r=1),void 0===o&&(o=.5);var i=je(t,"x","localResponseNormalization");E(4===i.rank||3===i.rank,(function(){return"Error in localResponseNormalization: x must be rank 3 or 4 but got\n rank "+i.rank+"."})),E(S(e),(function(){return"Error in localResponseNormalization: depthRadius must be an integer but got depthRadius "+e+"."}));var a=i,s=!1;3===i.rank&&(s=!0,a=i.as4D(1,i.shape[0],i.shape[1],i.shape[2]));var u=Ot.runKernelFunc((function(t,i){var s=t.localResponseNormalization4D(a,e,n,r,o);return i([a,s]),s}),{x4D:a},(function(t,i){var a=i[0],s=i[1];return{x4D:function(){return Ot.runKernelFunc((function(i){return i.LRNGrad(t,a,s,e,n,r,o)}),{})}}}));return s?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Ec=Ze({norm_:function(t,e,n,r){void 0===e&&(e="euclidean"),void 0===n&&(n=null),void 0===r&&(r=!1);var o=function t(e,n,r){if(void 0===r&&(r=null),0===e.rank)return e.abs();if(1!==e.rank&&null===r)return t(e.reshape([-1]),n,r);if(1===e.rank||"number"==typeof r||Array.isArray(r)&&1===r.length){if(1===n)return e.abs().sum(r);if(n===1/0)return e.abs().max(r);if(n===-1/0)return e.abs().min(r);if("euclidean"===n||2===n)return e.abs().pow(an(2,"int32")).sum(r).sqrt();throw new Error("Error in norm: invalid ord value: "+n)}if(Array.isArray(r)&&2===r.length){if(1===n)return e.abs().sum(r[0]).max(r[1]-1);if(n===1/0)return e.abs().sum(r[1]).max(r[0]);if(n===-1/0)return e.abs().sum(r[1]).min(r[0]);if("fro"===n||"euclidean"===n)return e.square().sum(r).sqrt();throw new Error("Error in norm: invalid ord value: "+n)}throw new Error("Error in norm: invalid axis: "+r)}(t=je(t,"x","norm"),e,n),i=o.shape;if(r){var a=F(n,t.shape);i=qe(o.shape,a)}return o.reshape(i)}}),Cc=Ze({basicLSTMCell_:function(t,e,n,r,o,i){var a=je(t,"forgetBias","basicLSTMCell"),s=je(e,"lstmKernel","basicLSTMCell"),u=je(n,"lstmBias","basicLSTMCell"),c=je(r,"data","basicLSTMCell"),l=je(o,"c","basicLSTMCell"),h=je(i,"h","basicLSTMCell"),f=c.concat(h,1).matMul(s).add(u),p=f.shape[0],d=f.shape[1]/4,v=[p,d],m=f.slice([0,0],v),g=f.slice([0,d],v),y=f.slice([0,2*d],v),b=f.slice([0,3*d],v),x=m.sigmoid().mulStrict(g.tanh()).addStrict(l.mulStrict(a.add(y).sigmoid())),w=x.tanh().mulStrict(b.sigmoid());return[x,w]}}),_c=Ze({multiRNNCell_:function(t,e,n,r){for(var o=je(e,"data","multiRNNCell"),i=ze(n,"c","multiRNNCell"),a=ze(r,"h","multiRNNCell"),s=o,u=[],c=0;c<t.length;c++){var l=t[c](s,i[c],a[c]);u.push(l[0]),u.push(l[1]),s=l[1]}var h=[],f=[];for(c=0;c<u.length;c+=2)h.push(u[c]),f.push(u[c+1]);return[h,f]}}),Rc=Ze({movingAverage_:function(t,e,n,r,o){void 0===o&&(o=!0);var i=je(t,"v","movingAverage"),a=je(e,"x","movingAverage"),s=je(n,"decay","movingAverage");Rt(i,a),E(k(i.shape,a.shape),(function(){return"Shape mismatch in v and x"}));var u=an(1),c=u.sub(s),l=a.sub(i).mul(c);if(o){E(null!=r,(function(){return"When using zeroDebias: true, step is required."}));var h=je(r,"step","movingAverage");l=l.div(u.sub(tu(s,h)))}return i.add(l)}}),Ic=Ze({stridedSlice_:function(t,e,n,r,o,i,a,s,u){if(void 0===o&&(o=0),void 0===i&&(i=0),void 0===a&&(a=0),void 0===s&&(s=0),void 0===u&&(u=0),null==r&&(r=new Array(e.length)),0!==a)throw new Error("ellipsis mask is not yet supported");var c=je(t,"x","stridedSlice"),l=gr(s),h=c.shape.slice();l.forEach((function(t){e[t]=0,n[t]=1,h.splice(t,0,1)})),c=c.reshape(h);for(var f=0;f<c.rank;f++)e[f]=br(o,e,r,c.shape,f),n[f]=xr(i,n,r,c.shape,f),r[f]=r[f]||1;var p=gr(u);p.forEach((function(t){n[t]=e[t]+1,r[t]=1}));var d=yr(e,n,r),v=d.filter((function(t,e){return-1===p.indexOf(e)}));return r.every((function(t){return 1===t}))?Ju(c,e,d).reshape(v):Ot.runKernelFunc((function(t){return t.stridedSlice(c,e,n,r)}),{$x:c}).reshape(v)}}),kc=Ze({topk_:function(t,e,n){void 0===e&&(e=1),void 0===n&&(n=!0);var r=je(t,"x","topk");if(0===r.rank)throw new Error("topk() expects the input to be of rank 1 or higher");var o=r.shape[r.shape.length-1];if(e>o)throw new Error("'k' passed to topk() must be <= the last dimension ("+o+") but got "+e);var i=Ot.runKernelFunc((function(t){return t.topk(r,e,n)}),{$x:r});return{values:i[0],indices:i[1]}}}),Sc=Ze({scatterND_:function(t,e,n){var r=je(t,"indices","scatterND","int32"),o=je(e,"updates","scatterND");return function(t,e,n){if(e.rank<1)throw new Error("tf.scatterND() expects the indices to be rank 1 or higher, but the rank was "+e.rank+".");if(t.rank<1)throw new Error("tf.scatterND() expects the updates to be rank 1 or higher, but the rank was "+t.rank+".");if("int32"!==e.dtype)throw new Error("The dtype of 'indices' should be int32, but got dtype: "+e.dtype);if(n.length<1)throw new Error("Output rank must be greater or equal to 1, but got shape: "+n);if(0===n.length){if(0===e.size)throw new Error("Indices specified for empty output. indices shape: "+e.shape);if(0===t.size)throw new Error("Updates specified for empty output. updates shape: "+t.shape)}!function(t,e,n){var r=e.rank>1?e.shape[e.rank-1]:1,o=e.rank>1?e.rank-1:1,i="Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: "+n.shape+", indices.shape: "+e.shape+", shape: "+t+", sliceDim: "+r+", and batchDim: "+o+".";if(n.rank<o)throw new Error(i+" update.rank < "+o+". ");if(t.length<r+(n.rank-o))throw new Error(i+" Output shape length < "+(r+(n.rank-o)));if(n.rank!==o+t.length-r)throw new Error(i+" update.rank != "+(o+t.length-r));for(var a=0;a<o;++a)if(n.shape[a]!==e.shape[a])throw new Error(i+" updates.shape["+a+"] ("+n.shape[a]+") != indices.shape["+a+"] ("+e.shape[a]+").");for(a=0;a<n.rank-o;++a)if(n.shape[a+o]!==t[a+r])throw new Error(i+" updates.shape["+(a+o)+"] ("+n.shape[a+o]+") != shape["+(a+o)+"] ("+t[a+o]+")")}(n,e,t)}(o,r,n),Ot.runKernelFunc((function(t){return t.scatterND(r,o,n)}),{$indices:r,$updates:o})}}),Ac=Ze({fft_:function(t){E("complex64"===t.dtype,(function(){return"The dtype for tf.spectral.fft() must be complex64 but got "+t.dtype+"."}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Ot.runKernelFunc((function(t){return t.fft(r)}),{input:t}).reshape(t.shape)}}),Oc=Ze({ifft_:function(t){E("complex64"===t.dtype,(function(){return"The dtype for tf.spectral.ifft() must be complex64 but got "+t.dtype+"."}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Ot.runKernelFunc((function(t){return t.ifft(r)}),{input:t}).reshape(t.shape)}}),Dc=Ze({rfft_:function(t,e){E("float32"===t.dtype,(function(){return"The dtype for rfft() must be real value but got "+t.dtype}));var n,r=t.shape[t.shape.length-1],o=t.size/r;if(null!=e&&e<r){var i=t.shape.map((function(t){return 0})),a=t.shape.map((function(t){return t}));a[t.shape.length-1]=e,n=t.slice(i,a),r=e}else if(null!=e&&e>r){var s=t.shape.map((function(t){return t}));s[t.shape.length-1]=e-r,n=t.concat(fn(s),t.shape.length-1),r=e}else n=t;var u=n.zerosLike(),c=tn(n,u).as2D(o,r),l=Ac(c),h=Math.floor(r/2)+1,f=en(l),p=nn(l),d=f.split([h,r-h],f.shape.length-1),v=p.split([h,r-h],p.shape.length-1),m=n.shape.slice();return m[n.shape.length-1]=h,tn(d[0],v[0]).reshape(m)}}),Tc=Ze({irfft_:function(t){var e=t.shape[t.shape.length-1],n=t.size/e;if(e<=2){var r=t.as2D(n,e),o=Oc(r);return en(o)}var i=[n,2*(e-1)],a=en(t).as2D(n,e),s=nn(t).as2D(n,e),u=a.slice([0,1],[n,e-2]).reverse(1),c=s.slice([0,1],[n,e-2]).reverse(1).mul(an(-1)),l=a.concat(u,1),h=s.concat(c,1);return r=tn(l,h).as2D(i[0],i[1]),o=Oc(r),en(o)}}),Nc=Object.freeze({fft:Ac,ifft:Oc,rfft:Dc,irfft:Tc}),Fc=Ze({sparseToDense_:function(t,e,n,r){void 0===r&&(r=0);var o=je(t,"sparseIndices","sparseToDense","int32"),i=je(e,"sparseValues","sparseToDense"),a=je(r,"defaultValue","sparseToDense",i.dtype);return function(t,e,n,r){if("int32"!==t.dtype)throw new Error("tf.sparseToDense() expects the indices to be int32 type, but the dtype was "+t.dtype+".");if(t.rank>2)throw new Error("sparseIndices should be a scalar, vector, or matrix, but got shape "+t.shape+".");var o=t.rank>0?t.shape[0]:1,i=t.rank>1?t.shape[1]:1;if(n.length!==i)throw new Error("outputShape has incorrect number of elements:, "+n.length+", should be: "+i+".");var a=e.size;if(0!==e.rank&&(1!==e.rank||a!==o))throw new Error("sparseValues has incorrect shape "+e.shape+", should be [] or ["+o+"]");if(e.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(o,i,n,a),Ot.runKernelFunc((function(t){return t.sparseToDense(o,i,n,a)}),{$sparseIndices:o,$sparseValues:i,$defaultValue:a})}}),Mc=Ze({gatherND_:function(t,e){var n=je(e,"indices","gatherND","int32"),r=je(t,"x","gatherND");return Ot.runKernelFunc((function(t){return t.gatherND(r,n)}),{$x:r,$indices:n})}}),Pc=Ze({diag_:function(t){var e=je(t,"x","diag").flatten(),n=t.shape.concat(t.shape);return Ot.runKernelFunc((function(t){return t.diag(e)}),{$x:e}).reshape(n)}}),Bc=Ze({dropout_:function(t,e,n,r){var o=je(t,"x","dropout");if(E("float32"===o.dtype,(function(){return"x has to be a floating point tensor since it's going to be scaled, but got a "+o.dtype+" tensor instead."})),E(e>=0&&e<1,(function(){return"rate must be a float in the range [0, 1), but got "+e+"."})),0===e)return t instanceof dt?o.clone():o;var i=function(t,e){if(null==e)return t.shape.slice();if(k(t.shape,e))return e;if(t.shape.length===e.length){for(var n=[],r=0;r<t.shape.length;r++)null==e[r]&&null!=t.shape[r]?n.push(t.shape[r]):n.push(e[r]);return n}return e}(o,n),a=1-e,s=tr(i,0,1,"float32",r).add(a).floor().div(a);return o.mul(s)}});function Lc(t,e,n){for(var r=1-t%2,o=new Float32Array(t),i=0;i<t;++i){var a=2*Math.PI*i/(t+r-1);o[i]=e-n*Math.cos(a)}return sn(o,"float32")}var Wc,Uc=Ze({hannWindow_:function(t){return Lc(t,.5,.5)}}),jc=Ze({hammingWindow_:function(t){return Lc(t,.54,.46)}}),zc=Ze({frame_:function(t,e,n,r,o){void 0===r&&(r=!1),void 0===o&&(o=0);for(var i=0,a=[];i+e<=t.size;)a.push(Ju(t,i,e)),i+=n;if(r)for(;i<t.size;){var s=i+e-t.size,u=gn([Ju(t,i,e-s),pn([s],o)]);a.push(u),i+=n}return 0===a.length?un([],[0,e]):gn(a).as2D(a.length,e)}}),Vc=Ze({stft_:function(t,e,n,r,o){var i;void 0===o&&(o=Uc),null==r&&(i=e,r=Math.floor(Math.pow(2,Math.ceil(Math.log(i)/Math.log(2)))));for(var a=zc(t,e,n),s=Qs(a,o(e)),u=[],c=0;c<a.shape[0];c++)u.push(Dc(s.slice([c,0],[1,e]),r));return gn(u)}}),Gc=Object.freeze({hannWindow:Uc,hammingWindow:jc,frame:zc,stft:Vc});!function(t){t[t.NONE=0]="NONE",t[t.MEAN=1]="MEAN",t[t.SUM=2]="SUM",t[t.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(Wc||(Wc={}));var Hc=Ze({absoluteDifference_:function(t,e,n,r){void 0===r&&(r=Wc.SUM_BY_NONZERO_WEIGHTS);var o=je(t,"labels","absoluteDifference"),i=je(e,"predictions","absoluteDifference"),a=null;null!=n&&(a=je(n,"weights","absoluteDifference")),C(o.shape,i.shape,"Error in absoluteDifference: ");var s=o.sub(i).abs();return qc(s,a,r)}}),qc=Ze({computeWeightedLoss_:function(t,e,n){void 0===n&&(n=Wc.SUM_BY_NONZERO_WEIGHTS);var r=je(t,"losses","computeWeightedLoss"),o=null;null!=e&&(o=je(e,"weights","computeWeightedLoss"));var i=null==o?r:r.mul(o);if(n===Wc.NONE)return i;if(n===Wc.SUM)return i.sum();if(n===Wc.MEAN){if(null==o)return i.mean();var a=r.size/o.size,s=i.sum().div(o.sum());return a>1?s.div(an(a)):s}if(n===Wc.SUM_BY_NONZERO_WEIGHTS){if(null==o)return i.sum().div(an(r.size));var u=o.mul(hn(r.shape)).notEqual(an(0)).sum().toFloat();return i.sum().div(u)}throw Error("Unknown reduction: "+n)}}),Kc=Ze({cosineDistance_:function(t,e,n,r,o){void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var i=je(t,"labels","cosineDistance"),a=je(e,"predictions","cosineDistance"),s=null;null!=r&&(s=je(r,"weights","cosineDistance")),C(i.shape,a.shape,"Error in cosineDistance: ");var u=an(1).sub(i.mul(a).sum(n,!0));return qc(u,s,o)}}),Xc=Ze({hingeLoss_:function(t,e,n,r){void 0===r&&(r=Wc.SUM_BY_NONZERO_WEIGHTS);var o=je(t,"labels","hingeLoss"),i=je(e,"predictions","hingeLoss"),a=null;null!=n&&(a=je(n,"weights","hingeLoss")),C(o.shape,i.shape,"Error in hingeLoss: ");var s=an(1);o=an(2).mul(o).sub(s);var u=s.sub(o.mul(i)).relu();return qc(u,a,r)}}),$c=Ze({huberLoss_:function(t,e,n,r,o){void 0===r&&(r=1),void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var i=je(t,"labels","huberLoss"),a=je(e,"predictions","huberLoss"),s=null;null!=n&&(s=je(n,"weights","huberLoss")),C(i.shape,a.shape,"Error in huberLoss: ");var u=an(r),c=a.sub(i).abs(),l=Xs(c,u),h=c.sub(l),f=an(.5).mul(l.square()).add(u.mul(h));return qc(f,s,o)}}),Yc=Ze({logLoss_:function(t,e,n,r,o){void 0===r&&(r=1e-7),void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var i=je(t,"labels","logLoss"),a=je(e,"predictions","logLoss"),s=null;null!=n&&(s=je(n,"weights","logLoss")),C(i.shape,a.shape,"Error in logLoss: ");var u=an(1),c=an(r),l=i.mul(a.add(c).log()).neg().sub(u.sub(i).mul(u.sub(a).add(c).log()));return qc(l,s,o)}}),Jc=Ze({meanSquaredError_:function(t,e,n,r){void 0===r&&(r=Wc.SUM_BY_NONZERO_WEIGHTS);var o=je(t,"labels","meanSquaredError"),i=je(e,"predictions","meanSquaredError"),a=null;null!=n&&(a=je(n,"weights","meanSquaredError")),C(o.shape,i.shape,"Error in meanSquaredError: ");var s=o.squaredDifference(i);return qc(s,a,r)}}),Qc=Ze({sigmoidCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var i=je(t,"multiClassLabels","sigmoidCrossEntropy"),a=je(e,"logits","sigmoidCrossEntropy"),s=null;if(null!=n&&(s=je(n,"weights","sigmoidCrossEntropy")),C(i.shape,a.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=an(r),c=an(1),l=an(.5);i=i.mul(c.sub(u)).add(l.mul(u))}var h=function(t,e){var n=je(t,"labels","sigmoidCrossEntropyWithLogits"),r=je(e,"logits","sigmoidCrossEntropyWithLogits");C(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var o=r.relu(),i=r.mul(n),a=r.abs().neg().exp().log1p();return o.sub(i).add(a)}(i,a);return qc(h,s,o)}}),Zc=Ze({softmaxCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var i=je(t,"onehotLabels","softmaxCrossEntropy"),a=je(e,"logits","softmaxCrossEntropy"),s=null;if(null!=n&&(s=je(n,"weights","softmaxCrossEntropy")),C(i.shape,a.shape,"Error in softmaxCrossEntropy: "),r>0){var u=an(r),c=an(1),l=an(i.shape[1]);i=i.mul(c.sub(u)).add(u.div(l))}var h=function(t,e,n){if(void 0===n&&(n=-1),-1===n&&(n=e.rank-1),n!==e.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+e.rank+" and dim was "+n);return Cr((function(t,e,r){var o=e.logSumExp([n],!0),i=e.toFloat().sub(o);return r([t,i]),{value:i.mul(t).neg().sum([n]),gradFunc:function(t,e){var r=e[0],o=e[1],i=qe(t.shape,[n]);return[t.reshape(i).mul(r.toFloat().sub(o.exp())),t.reshape(i).mul(o.exp().sub(r.toFloat()))]}}}))(t,e)}(i,a);return qc(h,s,o)}}),tl=Object.freeze({get Reduction(){return Wc},absoluteDifference:Hc,computeWeightedLoss:qc,cosineDistance:Kc,hingeLoss:Xc,huberLoss:$c,logLoss:Yc,meanSquaredError:Jc,sigmoidCrossEntropy:Qc,softmaxCrossEntropy:Zc});function el(t,e){return void 0===e&&(e=!1),Ot.tidy((function(){if(2!==t.shape.length)throw new Error("qr2d() requires a 2D Tensor, but got a "+t.shape.length+"D Tensor.");for(var n=t.shape[0],r=t.shape[1],o=Vn(n),i=t.clone(),a=un([[1]],[1,1]),s=a.clone(),u=n>=r?r:n,c=function(t){var e,u=i,c=s,l=o;e=Ot.tidy((function(){var e=i.slice([t,t],[n-t,1]),u=e.norm(),c=i.slice([t,t],[1,1]),l=un([[-1]]).where(c.greater(0),un([[1]])),h=c.sub(l.mul(u)),f=e.div(h);s=1===f.shape[0]?a.clone():a.concat(f.slice([1,0],[f.shape[0]-1,f.shape[1]]),0);var p=l.matMul(h).div(u).neg(),d=i.slice([t,0],[n-t,r]),v=p.mul(s);if(0===t)i=d.sub(v.matMul(s.transpose().matMul(d)));else{var m=d.sub(v.matMul(s.transpose().matMul(d)));i=i.slice([0,0],[t,r]).concat(m,0)}var g=o.slice([0,t],[n,o.shape[1]-t]);if(0===t)o=g.sub(g.matMul(s).matMul(v.transpose()));else{var y=g.sub(g.matMul(s).matMul(v.transpose()));o=o.slice([0,0],[n,t]).concat(y,1)}return[s,i,o]})),s=e[0],i=e[1],o=e[2],Be([u,c,l])},l=0;l<u;++l)c(l);return!e&&n>r&&(o=o.slice([0,0],[n,r]),i=i.slice([0,0],[r,r])),[o,i]}))}var nl=Ze({bandPart_:function(t,e,n){if(e%1!=0)throw new Error("bandPart(): numLower must be an integer, got "+e+".");if(n%1!=0)throw new Error("bandPart(): numUpper must be an integer, got "+n+".");var r=je(t,"a","bandPart");if(r.rank<2)throw new Error("bandPart(): Rank must be at least 2, got "+r.rank+".");var o=r.shape,i=r.shape.slice(-2),a=i[0],s=i[1];if(!(e<=a))throw new Error("bandPart(): numLower ("+e+") must not be greater than the number of rows ("+a+").");if(!(n<=s))throw new Error("bandPart(): numUpper ("+n+") must not be greater than the number of columns ("+s+").");e<0&&(e=a),n<0&&(n=s);var u=dn(0,a,1,"int32").reshape([-1,1]),c=dn(0,s,1,"int32"),l=ou(u,c),h=Ts(l.lessEqual(an(+e,"int32")),l.greaterEqual(an(-n,"int32"))),f=fn([a,s],r.dtype);return or(sr(r.reshape([-1,a,s])).map((function(t){return Ps(h,t,f)}))).reshape(o)}}),rl=Ze({gramSchmidt_:function(t){var e;if(Array.isArray(t)){e=!1,E(null!=t&&t.length>0,(function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"}));for(var n=t[0].shape[0],r=function(e){E(t[e].shape[0]===n,(function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: ("+t[e].shape[0]+" vs. "+n+")"}))},o=1;o<t.length;++o)r(o)}else e=!0,t=En(t,t.shape[0],0).map((function(t){return rr(t,[0])}));E(t.length<=t[0].shape[0],(function(){return"Gram-Schmidt: Number of vectors ("+t.length+") exceeds number of dimensions ("+t[0].shape[0]+")."}));var i=[],a=t,s=function(t){i.push(Ot.tidy((function(){var e=a[t];if(t>0)for(var n=0;n<t;++n){var r=fc(i[n].mulStrict(e)).mul(i[n]);e=e.sub(r)}return e.div(Ec(e,"euclidean"))})))};for(o=0;o<t.length;++o)s(o);return e?or(i,0):i}}),ol=Ze({qr_:function(t,e){if(void 0===e&&(e=!1),t.rank<2)throw new Error("qr() requires input tensor to have a rank >= 2, but got rank "+t.rank);if(2===t.rank)return el(t,e);var n=t.shape.slice(0,t.shape.length-2).reduce((function(t,e){return t*e})),r=sr(t.reshape([n,t.shape[t.shape.length-2],t.shape[t.shape.length-1]]),0),o=[],i=[];return r.forEach((function(t){var n=el(t,e),r=n[0],a=n[1];o.push(r),i.push(a)})),[or(o,0).reshape(t.shape),or(i,0).reshape(t.shape)]}}),il=Object.freeze({bandPart:nl,gramSchmidt:rl,qr:ol});function al(t,e,n,r,o){null==r&&(r=.5),null==o&&(o=Number.NEGATIVE_INFINITY);var i=t.shape[0];return n=Math.min(n,i),E(0<=r&&r<=1,(function(){return"iouThreshold must be in [0, 1], but was '"+r+"'"})),E(2===t.rank,(function(){return"boxes must be a 2D tensor, but was of rank '"+t.rank+"'"})),E(4===t.shape[1],(function(){return"boxes must have 4 columns, but 2nd dimension was "+t.shape[1]})),E(1===e.rank,(function(){return"scores must be a 1D tensor"})),E(e.shape[0]===i,(function(){return"scores has incompatible shape with boxes. Expected "+i+", but was "+e.shape[0]})),{maxOutputSize:n,iouThreshold:r,scoreThreshold:o}}var sl=Ze({resizeBilinear_:function(t,e,n){void 0===n&&(n=!1);var r=je(t,"images","resizeBilinear");E(3===r.rank||4===r.rank,(function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got rank "+r.rank+"."})),E(2===e.length,(function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+e+"."}));var o=r,i=!1;3===r.rank&&(i=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var a=e[0],s=e[1],u=Ot.runKernelFunc((function(t,e){return e([o]),t.resizeBilinear(o,a,s,n)}),{x:o},(function(t,e){return{x:function(){return Ot.runKernelFunc((function(r){return r.resizeBilinearBackprop(t,e[0],n)}),{})}}}),"ResizeBilinear",{alignCorners:n,newHeight:a,newWidth:s});return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),ul=Ze({resizeNearestNeighbor_:function(t,e,n){void 0===n&&(n=!1);var r=je(t,"images","resizeNearestNeighbor");E(3===r.rank||4===r.rank,(function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+r.rank+"."})),E(2===e.length,(function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+e+"."})),E("float32"===r.dtype||"int32"===r.dtype,(function(){return"`images` must have `int32` or `float32` as dtype"}));var o=r,i=!1;3===r.rank&&(i=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var a=e[0],s=e[1],u=Ot.runKernelFunc((function(t,e){return e([o]),t.resizeNearestNeighbor(o,a,s,n)}),{batchImages:o},(function(t,e){return{batchImages:function(){return Ot.runKernelFunc((function(r){return r.resizeNearestNeighborBackprop(t,e[0],n)}),{})}}}));return i?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),cl=Ze({nonMaxSuppression_:function(t,e,n,r,o){void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY);var i=je(t,"boxes","nonMaxSuppression"),a=je(e,"scores","nonMaxSuppression"),s=al(i,a,n,r,o);n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold;var u={maxOutputSize:n,iouThreshold:r,scoreThreshold:o};return Ot.runKernelFunc((function(t){return t.nonMaxSuppression(i,a,n,r,o)}),{boxes:i,scores:a},null,"NonMaxSuppressionV3",u)}}),ll=Ze({cropAndResize_:function(t,e,n,r,o,i){var a=je(t,"image","cropAndResize"),s=je(e,"boxes","cropAndResize","float32"),u=je(n,"boxInd","cropAndResize","int32");o=o||"bilinear",i=i||0;var c=s.shape[0];return E(4===a.rank,(function(){return"Error in cropAndResize: image must be rank 4,but got rank "+a.rank+"."})),E(2===s.rank&&4===s.shape[1],(function(){return"Error in cropAndResize: boxes must be have size ["+c+",4] but had shape "+s.shape+"."})),E(1===u.rank&&u.shape[0]===c,(function(){return"Error in cropAndResize: boxInd must be have size ["+c+"] but had shape "+s.shape+"."})),E(2===r.length,(function(){return"Error in cropAndResize: cropSize must be of length 2, but got length "+r.length+"."})),E(r[0]>=1&&r[1]>=1,(function(){return"cropSize must be atleast [1,1], but was "+r})),E("bilinear"===o||"nearest"===o,(function(){return"method must be bilinear or nearest, but was "+o})),Ot.runKernelFunc((function(t,e){return t.cropAndResize(a,s,u,r,o,i)}),{images:a,boxes:s,boxInd:u},null,"CropAndResize",{method:o,extrapolationValue:i,cropSize:r})}}),hl=Object.freeze({resizeBilinear:sl,resizeNearestNeighbor:ul,nonMaxSuppression:cl,nonMaxSuppressionAsync:function(t,e,n,r,o){return void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY),u(this,void 0,void 0,(function(){var i,a,s,u,l,h,f;return c(this,(function(c){switch(c.label){case 0:return i=je(t,"boxes","nonMaxSuppressionAsync"),a=je(e,"scores","nonMaxSuppressionAsync"),s=al(i,a,n,r,o),n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold,[4,Promise.all([i.data(),a.data()])];case 1:return u=c.sent(),l=u[0],h=u[1],f=Jr(l,h,n,r,o),i!==t&&i.dispose(),a!==e&&a.dispose(),[2,f]}}))}))},cropAndResize:ll}),fl=function(t,e){return!(t>0)||"linear"===e},pl=function(t,e,n){if(null==n||"linear"===n)return t;if("relu"===n)return t.mul(e.step());throw new Error("Gradient for activation "+n+" has not been implemented yet.")},dl=function(t,e){var n=e,r=Or(t.shape,e.shape);return r.length>0&&(n=n.sum(r)),n.reshape(t.shape)},vl=function(t,e,n){if("linear"===e)return t;if("relu"===e)return gc(t);if("elu"===e)return dc(t);if("relu6"===e)return yc(t);if("prelu"===e)return mc(t,n);throw new Error("Unknown fused activation "+e+".")},ml=Ze({fusedMatMul_:function(t){var e,n=t.a,r=t.b,o=t.transposeA,i=void 0!==o&&o,a=t.transposeB,s=void 0!==a&&a,u=t.bias,c=t.activation,l=void 0===c?"linear":c,h=t.preluActivationWeights;if(!1===fl(Ot.state.gradientDepth,l)){var f=Pu(n,r,i,s);return null!=u&&(f=Ls(f,u)),vl(f,l,h)}var p=je(n,"a","fused matMul"),d=je(r,"b","fused matMul");e=_t(p,d),p=e[0],d=e[1];var v=i?p.shape[p.rank-2]:p.shape[p.rank-1],m=s?d.shape[d.rank-1]:d.shape[d.rank-2],g=i?p.shape[p.rank-1]:p.shape[p.rank-2],y=s?d.shape[d.rank-2]:d.shape[d.rank-1],b=p.shape.slice(0,-2),x=d.shape.slice(0,-2),w=I(b),C=I(x);E(p.rank>=2&&d.rank>=2&&p.rank===d.rank,(function(){return"Error in fused matMul: inputs must have the same rank of at least 2, got ranks "+p.rank+" and "+d.rank+"."})),E(k(b,x),(function(){return"Error in fused matMul: outer dimensions ("+b+") and ("+x+") of Tensors with shapes "+p.shape+" and "+d.shape+" must match."})),E(v===m,(function(){return"Error in fused matMul: inner shapes ("+v+") and ("+m+") of Tensors with shapes "+p.shape+" and "+d.shape+" and transposeA="+i+" and transposeB="+s+" must match."}));var _,R,S=p.shape.slice(0,-2).concat([g,y]),A=i?p.as3D(w,v,g):p.as3D(w,g,v),O=s?d.as3D(C,y,m):d.as3D(C,m,y);null!=u&&Dr(S,(_=_t(_=je(u,"bias","fused matMul"),p)[0]).shape),null!=h&&(R=je(h,"prelu weights","fused matMul"));var D={$a:A,$b:O};return null!=u&&(D.$bias=_),null!=h&&(D.$preluActivationWeights=R),Ot.runKernelFunc((function(t,e){var n=t.fusedBatchMatMul({a:A,b:O,transposeA:i,transposeB:s,bias:_,activation:l,preluActivationWeights:R});return e([A,O,n]),n}),D,(function(t,e){var n=e[0],r=e[1],o=e[2],a=pl(t,o,l),c={};return null!=u&&(c={$bias:function(){return dl(_,a)}}),i||s?!i&&s?Object.assign({$a:function(){return a.matMul(r,!1,!1)},$b:function(){return a.matMul(n,!0,!1)}},c):i&&!s?Object.assign({$a:function(){return r.matMul(a,!1,!0)},$b:function(){return n.matMul(a,!1,!1)}},c):Object.assign({$a:function(){return r.matMul(a,!0,!0)},$b:function(){return a.matMul(n,!0,!0)}},c):Object.assign({$a:function(){return a.matMul(r,!1,!0)},$b:function(){return n.matMul(a,!0,!1)}},c)})).reshape(S)}}),gl=Ze({fusedConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,i=t.dataFormat,a=void 0===i?"NHWC":i,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,h=t.activation,f=void 0===h?"linear":h,p=t.preluActivationWeights;if(f=f||"linear",!1===fl(Ot.state.gradientDepth,f)){var d=Iu(e,n,r,o,a,u,c);return null!=l&&(d=Ls(d,l)),vl(d,f,p)}var v=je(e,"x","conv2d"),m=je(n,"filter","conv2d"),g=v,y=!1;3===v.rank&&(y=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),E(4===g.rank,(function(){return"Error in fused conv2d: input must be rank 4, but got rank "+g.rank+"."})),E(4===m.rank,(function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+m.rank+"."})),null!=c&&E(S(o),(function(){return"Error in fused conv2d: pad must be an integer when using, dimRoundingMode "+c+" but got pad "+o+"."})),E(g.shape[3]===m.shape[2],(function(){return"Error in conv2d: depth of input ("+g.shape[3]+") must match input depth for filter "+m.shape[2]+"."})),E(zr(r,u),(function(){return"Error in conv2D: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+u+"'"})),E("NHWC"===a,(function(){return"Error in conv2d: got dataFormat of "+a+" but only NHWC is currently supported."}));var b,x,w=Fr(g.shape,m.shape,r,u,o,c);null!=l&&(b=_t(b=je(l,"bias","fused conv2d"),v)[0],Dr(w.outShape,b.shape)),null!=p&&(x=je(p,"prelu weights","fused conv2d"));var C={x:g,filter:m};null!=l&&(C.bias=b),null!=p&&(C.preluActivationWeights=x);var _=[m,g],R=Ot.runKernelFunc((function(t,e){var n=t.fusedConv2d({input:g,filter:m,convInfo:w,bias:b,activation:f,preluActivationWeights:x});return e([m,g,n]),n}),C,(function(t,e){var n=e,i=n[0],a=n[1],s=n[2],c=pl(t,s,f);E(jr(u),(function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+u+"'"}));var h={};return null!=l&&(h={bias:function(){return dl(b,c)}}),Object.assign({x:function(){return Au(a.shape,c,i,r,o)},filter:function(){return Su(a,c,i.shape,r,o)}},h)}),"FusedConv2D",{convInfo:w,activation:f},_,[!0]);return y?R.as3D(R.shape[1],R.shape[2],R.shape[3]):R}}),yl=Ze({fusedDepthwiseConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,i=t.dataFormat,a=void 0===i?"NHWC":i,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,h=t.activation,f=void 0===h?"linear":h,p=t.preluActivationWeights;if(!1===fl(Ot.state.gradientDepth,f)){var d=Ou(e,n,r,o,a,u,c);return null!=l&&(d=Ls(d,l)),vl(d,f,p)}var v=je(e,"x","depthwiseConv2d"),m=je(n,"filter","depthwiseConv2d"),g=v,y=!1;3===v.rank&&(y=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),E(4===g.rank,(function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got rank "+g.rank+"."})),E(4===m.rank,(function(){return"Error in fused depthwiseConv2d: filter must be rank 4, but got rank "+m.rank+"."})),E(g.shape[3]===m.shape[2],(function(){return"Error in fused depthwiseConv2d: number of input channels ("+g.shape[3]+") must match the inChannels dimension in filter "+m.shape[2]+"."})),null==u&&(u=[1,1]),E(zr(r,u),(function(){return"Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+u+"'"})),null!=c&&E(S(o),(function(){return"Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode "+c+" but got pad "+o+"."}));var b,x,w=Fr(g.shape,m.shape,r,u,o,c,!0);null!=l&&(b=_t(b=je(l,"bias","fused conv2d"),v)[0],Dr(w.outShape,b.shape)),null!=p&&(x=je(p,"prelu weights","fused depthwiseConv2d"));var C={x:g,filter:m};null!=l&&(C.bias=b),null!=p&&(C.preluActivationWeights=x);var _=[m,g],R=Ot.runKernelFunc((function(t,e){var n=t.fusedDepthwiseConv2D({input:g,filter:m,convInfo:w,bias:b,activation:f,preluActivationWeights:x});return e([m,g,n]),n}),C,(function(t,e){E(jr(u),(function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+u+"'"}));var n=e[0],r=e[1],o=e[2],i=pl(t,o,f),a={};return null!=l&&(a={bias:function(){return dl(b,i)}}),Object.assign({x:function(){return Du(r.shape,i,n,w)},filter:function(){return Tu(r,i,n.shape,w)}},a)}),"FusedDepthwiseConv2D",{convInfo:w,activation:f},_,[!0]);return y?R.as3D(R.shape[1],R.shape[2],R.shape[3]):R}}),bl=Object.freeze({matMul:ml,conv2d:gl,depthwiseConv2d:yl}),xl=Object.freeze({image:hl,linalg:il,losses:tl,spectral:Nc,fused:bl,signal:Gc,square:Ba,conv1d:Ru,conv2d:Iu,conv3d:ku,depthwiseConv2d:Ou,separableConv2d:Nu,conv2dTranspose:Fu,conv3dTranspose:Mu,op:Ze,batchNormalization2d:_s,batchNormalization3d:Rs,batchNormalization4d:Is,batchNormalization:ks,batchNorm:Ss,batchNorm2d:As,batchNorm3d:Os,batchNorm4d:Ds,booleanMaskAsync:function(t,e,n){return u(this,void 0,void 0,(function(){var r,o,i,a,s,u,l,h,f,p,d,v,m;return c(this,(function(c){switch(c.label){case 0:for(r=je(t,"tensor","boolMask"),o=je(e,"mask","boolMask","bool"),i=null==n?0:n,a=o.rank,s=r.shape,E(a>0,(function(){return"mask cannot be scalar"})),C(s.slice(i,i+a),o.shape,"mask's shape must match the first K dimensions of tensor's shape,"),u=1,l=i;l<i+a;l++)u*=s[l];return h=s.slice(0,i).concat([u],s.slice(i+a)),f=r.reshape(h),p=o.reshape([-1]),[4,Bs(p)];case 1:return d=c.sent(),v=d.squeeze([1]),m=xu(f,v,i),t!==r&&r.dispose(),e!==o&&o.dispose(),v.dispose(),f.dispose(),p.dispose(),d.dispose(),[2,m]}}))}))},complex:tn,real:en,imag:nn,concat:gn,concat1d:yn,concat2d:bn,concat3d:xn,concat4d:wn,split:En,matMul:Pu,dot:Bu,outerProduct:Lu,reverse:Wu,reverse1d:Uu,reverse2d:ju,reverse3d:zu,reverse4d:Vu,maxPool:qu,avgPool:Ku,pool:Xu,maxPool3d:$u,avgPool3d:Yu,slice:Ju,slice1d:Qu,slice2d:Zu,slice3d:tc,slice4d:ec,abs:La,acos:Wa,acosh:Ua,asin:ja,asinh:za,atan:Va,atanh:Ga,ceil:Ha,clipByValue:qa,cos:Ka,cosh:Xa,erf:$a,exp:Ya,expm1:Ja,floor:Qa,log:Za,log1p:ts,logSigmoid:es,neg:ns,reciprocal:rs,round:os,rsqrt:is,sigmoid:as,sign:ss,isNaN:us,isInf:cs,isFinite:ls,sin:hs,sinh:fs,softplus:ps,sqrt:ds,step:vs,tan:ms,tanh:gs,all:rc,any:oc,argMax:ic,argMin:ac,logSumExp:sc,max:uc,mean:cc,min:lc,moments:hc,sum:fc,prod:pc,equal:au,equalStrict:su,greater:uu,greaterEqual:cu,greaterEqualStrict:lu,greaterStrict:hu,less:fu,lessEqual:pu,lessEqualStrict:du,lessStrict:vu,notEqual:mu,notEqualStrict:gu,add:Ls,addN:Ws,addStrict:Us,atan2:js,div:zs,divNoNan:Vs,divStrict:Gs,floorDiv:Hs,maximum:qs,maximumStrict:Ks,minimum:Xs,minimumStrict:$s,mod:Ys,modStrict:Js,mul:Qs,mulStrict:Zs,pow:tu,powStrict:eu,squaredDifference:nu,squaredDifferenceStrict:ru,sub:ou,subStrict:iu,elu:dc,leakyRelu:vc,prelu:mc,relu:gc,relu6:yc,selu:bc,logicalAnd:Ts,logicalNot:Ns,logicalOr:Fs,logicalXor:Ms,where:Ps,whereAsync:Bs,buffer:Mn,print:function(t,e){void 0===e&&(e=!1)},batchToSpaceND:Pn,broadcastTo:Bn,cast:Ln,clone:Wn,cumsum:Un,depthToSpace:jn,expandDims:zn,eye:Vn,multinomial:Gn,oneHot:Hn,pad:qn,pad1d:Kn,pad2d:Xn,pad3d:$n,pad4d:Yn,rand:Jn,randomNormal:Qn,randomGamma:Zn,randomUniform:tr,reshape:er,spaceToBatchND:nr,squeeze:rr,stack:or,tile:ir,truncatedNormal:ar,unstack:sr,setdiff1dAsync:function(t,e){return u(this,void 0,void 0,(function(){var n,r,o,i,a,s,u,l,h,f;return c(this,(function(c){switch(c.label){case 0:return n=je(t,"x","setdiff1d"),r=je(e,"y","setdiff1d"),E(n.dtype===r.dtype,(function(){return"x and y should have the same dtype, but got x ("+n.dtype+") and y ("+r.dtype+")."})),E(1===n.rank,(function(){return"x should be 1D tensor, but got x ("+n.shape+")."})),E(1===r.rank,(function(){return"y should be 1D tensor, but got y ("+r.shape+")."})),[4,n.data()];case 1:return o=c.sent(),[4,r.data()];case 2:for(i=c.sent(),a=new Set(i),s=0,h=0;h<o.length;h++)a.has(o[h])||s++;for(u=new lt([s],n.dtype),l=new lt([s],"int32"),h=0,f=0;h<o.length;h++)a.has(o[h])||(u.values[f]=o[h],l.values[f]=h,f++);return[2,[u.toTensor(),l.toTensor()]]}}))}))},fill:pn,linspace:function(t,e,n){if(n<=0)throw new Error("The number of values should be positive.");return Ot.runKernelFunc((function(r){return r.linspace(t,e,n)}),{})},ones:hn,range:dn,scalar:an,tensor:rn,tensor1d:sn,tensor2d:un,tensor3d:cn,tensor4d:ln,tensor5d:function(t,e,n){if(_(t),null!=e&&5!==e.length)throw new Error("tensor5d() requires shape to have five numbers");var r=We(t,n);if(5!==r.length&&1!==r.length)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return on(t,e,r,n)},tensor6d:function(t,e,n){if(_(t),null!=e&&6!==e.length)throw new Error("tensor6d() requires shape to have six numbers");var r=We(t,n);if(6!==r.length&&1!==r.length)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return on(t,e=e||r,r,n)},variable:function(t,e,n,r){return void 0===e&&(e=!0),Ot.makeVariable(t,e,n,r)},zeros:fn,onesLike:vn,zerosLike:mn,transpose:xc,softmax:_r,logSoftmax:Rr,localResponseNormalization:wc,norm:Ec,gather:xu,unsortedSegmentSum:wu,basicLSTMCell:Cc,multiRNNCell:_c,movingAverage:Rc,stridedSlice:Ic,topk:kc,scatterND:Sc,fft:Ac,ifft:Oc,rfft:Dc,irfft:Tc,sparseToDense:Fc,gatherND:Mc,diag:Pc,dropout:Bc,hannWindow:Uc,hammingWindow:jc,frame:zc,stft:Vc,inTopKAsync:function(t,e,n){return void 0===n&&(n=1),u(this,void 0,void 0,(function(){var r,o,i,a,s,u,l,h,f,p,d,v,m,g;return c(this,(function(c){switch(c.label){case 0:return r=je(t,"predictions","inTopK"),o=je(e,"targets","inTopK"),E(r.rank>1,(function(){return"inTopK() expects the predictions to be of rank 2 or higher, but got "+r.rank})),E(r.rank-1===o.rank,(function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+r.rank+" and targets rank "+o.rank})),C(r.shape.slice(0,r.shape.length-1),o.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),i=r.shape[r.shape.length-1],E(n>0&&n<=i,(function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last dimension ("+i+"), but got "+n})),[4,r.data()];case 1:return a=c.sent(),[4,o.data()];case 2:for(s=c.sent(),u=[a.length/i,i],h=u[1],f=P("bool",l=u[0]),p=0;p<l;p++){for(d=p*h,v=a.subarray(d,d+h),m=[],g=0;g<v.length;g++)m.push({value:v[g],index:g});for(m.sort((function(t,e){return e.value-t.value})),f[p]=0,g=0;g<n;g++)if(m[g].index===s[p]){f[p]=1;break}}return t!==r&&r.dispose(),e!==o&&o.dispose(),[2,rn(f,o.shape,"bool")]}}))}))}});function wl(t,e){Array.isArray(t)||(t=[t]),t.forEach((function(t){null!=t&&E("complex64"!==t.dtype,(function(){return e+" does not support complex64 tensors."}))}))}function El(t,e,n,r){if("linear"===n)return t.linear(e);if("relu"===n)return t.relu(e);if("elu"===n)return t.elu(e);if("relu6"===n)return t.relu6(e);if("prelu"===n)return t.prelu(e,r);throw new Error("Activation "+n+" has not been implemented for the CPU backend.")}var Cl=function(t){function e(){var e=t.call(this)||this;return e.blockSize=48,e.firstUse=!0,e.data=new Ir(e,Ot),e}return s(e,t),e.prototype.write=function(t,e,n){this.firstUse&&(this.firstUse=!1,h().get("IS_NODE")&&Le("\n============================\nHi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================\n"));var r={};return this.data.set(r,{values:t,dtype:n}),r},e.prototype.move=function(t,e,n,r){this.data.set(t,{values:e,dtype:r})},e.prototype.numDataIds=function(){return this.data.numDataIds()},e.prototype.read=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){return[2,this.readSync(t)]}))}))},e.prototype.readSync=function(t){var e=this.data.get(t),n=e.dtype,r=e.complexTensors;return"complex64"===n?Kr(this.readSync(r.real.dataId),this.readSync(r.imag.dataId)):this.data.get(t).values},e.prototype.bufferSync=function(t){var e=this.readSync(t.dataId),n=e;if("string"===t.dtype)try{n=e.map((function(t){return ot(t)}))}catch(t){throw new Error("Failed to decode encoded string bytes into utf-8")}return Mn(t.shape,t.dtype,n)},e.prototype.makeOutput=function(t,e,n){var r=this.write(t,e,n);return Ot.makeTensorFromDataId(r,e,n,this)},e.prototype.disposeData=function(t){if(this.data.has(t)){var e=this.data.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.data.delete(t)}},e.prototype.time=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){return e=et(),t(),[2,{kernelMs:et()-e}]}))}))},e.prototype.memory=function(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}},e.prototype.complex=function(t,e){var n=this.makeOutput(null,t.shape,"complex64");return this.data.get(n.dataId).complexTensors={real:Ot.keep(t.clone()),imag:Ot.keep(e.clone())},n},e.prototype.real=function(t){return this.data.get(t.dataId).complexTensors.real.clone()},e.prototype.imag=function(t){return this.data.get(t.dataId).complexTensors.imag.clone()},e.prototype.slice=function(t,e,n){if(wl(t,"slice"),wr(t.shape,e,n)){var r=Er(e,t.strides),o=I(n);return rn(this.readSync(t.dataId).subarray(r,r+o),n,t.dtype)}for(var i=Mn(n,t.dtype),a=this.bufferSync(t),s=0;s<i.size;++s){var u=i.indexToLoc(s).map((function(t,n){return t+e[n]}));i.values[s]=a.get.apply(a,u)}return i.toTensor()},e.prototype.stridedSlice=function(t,e,n,r){wl(t,"stridedSlice");var o=yr(e,n,r);if(o.some((function(t){return 0===t})))return rn([],o);for(var i=Mn(o,t.dtype),a=this.bufferSync(t),s=0;s<i.size;s++){for(var u=i.indexToLoc(s),c=new Array(u.length),l=0;l<c.length;l++)c[l]=u[l]*r[l]+e[l];i.set.apply(i,[a.get.apply(a,c)].concat(u))}return i.toTensor()},e.prototype.diag=function(t){for(var e=this.readSync(t.dataId),n=Mn([t.size,t.size],t.dtype),r=n.values,o=0;o<e.length;o++)r[o*t.size+o]=e[o];return n.toTensor()},e.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,i=0;i<t.rank;i++)i!==e&&(r[o++]=t.shape[i]);var a=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(i=0;i<u.length;i++)a[e]=i,u[i]=this.slice(t,a,s).reshape(r);return u},e.prototype.reverse=function(t,e){wl(t,"reverse");for(var n=Mn(t.shape,t.dtype),r=this.bufferSync(t),o=function(o){var i=n.indexToLoc(o),a=i.slice();e.forEach((function(e){return a[e]=t.shape[e]-1-a[e]})),n.set.apply(n,[r.get.apply(r,a)].concat(i))},i=0;i<n.size;i++)o(i);return n.toTensor()},e.prototype.concat=function(t,e){var n=this;if("complex64"===t[0].dtype){var r=t.map((function(t){return en(t)})),o=t.map((function(t){return nn(t)}));return tn(this.concat(r,e),this.concat(o,e))}var i=t.map((function(t){var n=I(t.shape.slice(e));return t.as2D(-1,n)})),a=Qe(i.map((function(t){return t.shape})),1),s=Mn(a,t[0].dtype).values;if(1===i[0].shape[0]){var u=0;i.forEach((function(t){s.set(n.readSync(t.dataId),u),u+=t.size}))}else{var c=0;i.forEach((function(t){for(var e=n.readSync(t.dataId),r=0,o=0;o<t.shape[0];++o)for(var i=o*a[1]+c,u=0;u<t.shape[1];++u)s[i+u]=e[r++];c+=t.shape[1]}))}var l=Qe(t.map((function(t){return t.shape})),e);return rn(s,l,t[0].dtype)},e.prototype.neg=function(t){return wl(t,"neg"),this.multiply(an(-1),t)},e.prototype.add=function(t,e){return"complex64"===t.dtype||"complex64"===e.dtype?this.broadcastedBinaryComplexOp(t.cast("complex64"),e.cast("complex64"),(function(t,e,n,r){return{real:t+n,imag:e+r}})):this.broadcastedBinaryOp(t,e,Et(t.dtype,e.dtype),(function(t,e){return t+e}))},e.prototype.addN=function(t){var e=this;wl(t,"addN");for(var n=t.map((function(t){return e.readSync(t.dataId)})),r=Mn(t[0].shape,t[0].dtype),o=r.values,i=0;i<t.length;i++)for(var a=n[i],s=0;s<o.length;s++)o[s]+=a[s];return r.toTensor()},e.prototype.subtract=function(t,e){return"complex64"===t.dtype||"complex64"===e.dtype?this.broadcastedBinaryComplexOp(t.cast("complex64"),e.cast("complex64"),(function(t,e,n,r){return{real:t-n,imag:e-r}})):this.broadcastedBinaryOp(t,e,Et(t.dtype,e.dtype),(function(t,e){return t-e}))},e.prototype.pow=function(t,e){return wl([t,e],"pow"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.pow(t,e)}))},e.prototype.batchMatMul=function(t,e,n,r){wl([t,e],"matMul");for(var o=n?t.shape[1]:t.shape[2],i=n?t.shape[2]:t.shape[1],a=r?e.shape[1]:e.shape[2],s=t.shape[0],u=this.readSync(t.dataId),c=this.readSync(e.dataId),l=n?[t.strides[0],1,t.strides[1]]:[t.strides[0],t.strides[1],1],h=l[0],f=l[1],p=l[2],d=r?[1,e.strides[1],e.strides[0]]:[e.strides[1],1,e.strides[0]],v=d[0],m=d[1],g=d[2],y=i*a,b=Mn([s,i,a],t.dtype),x=b.values,w=this.blockSize,E=0;E<s;E++)for(var C=0;C<i;C+=w)for(var _=0;_<a;_+=w)for(var R=0;R<o;R+=w)for(var I=Math.min(C+w,i),k=Math.min(_+w,a),S=Math.min(R+w,o),A=C;A<I;A++)for(var O=_;O<k;O++){for(var D=0,T=R;T<S;T++)D+=u[E*h+A*f+T*p]*c[T*v+O*m+E*g];x[E*y+(A*a+O)]+=D}return b.toTensor()},e.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,i=t.bias,a=t.activation,s=t.preluActivationWeights,u=this.batchMatMul(e,n,r,o);return i&&(u=this.add(u,i)),a&&(u=El(this,u,a,s)),u},e.prototype.multiply=function(t,e){return"complex64"===t.dtype||"complex64"===e.dtype?this.broadcastedBinaryComplexOp(t.cast("complex64"),e.cast("complex64"),(function(t,e,n,r){return{real:t*n-e*r,imag:t*r+e*n}})):this.broadcastedBinaryOp(t,e,Et(t.dtype,e.dtype),(function(t,e){return t*e}))},e.prototype.realDivide=function(t,e){return wl([t,e],"realDivide"),this.broadcastedBinaryOp(t,e,"float32",(function(t,e){return t/e}))},e.prototype.floorDiv=function(t,e){return wl([t,e],"floorDiv"),this.broadcastedBinaryOp(t,e,"int32",(function(t,e){return Math.floor(t/e)}))},e.prototype.sum=function(t,e){wl(t,"sum"),Ke("sum",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],i=fn(r,Et(t.dtype,"int32")),a=I(o),s=this.readSync(i.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*a,h=0,f=0;f<a;++f)h+=u[l+f];s[c]=h}return i},e.prototype.prod=function(t,e){wl(t,"sum");for(var n=He(t.shape,e),r=n[0],o=n[1],i=fn(r,Et(t.dtype,"int32")),a=I(o),s=this.readSync(i.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*a,h=1,f=0;f<a;++f)h*=u[l+f];s[c]=h}return i},e.prototype.unsortedSegmentSum=function(t,e,n){wl(t,"unsortedSegmentSum");for(var r=[],o=t.rank-e.rank,i=0;i<o;++i)e=e.expandDims(i+1);for(i=0;i<n;++i){var a=an(i,"int32"),s=au(a,e).asType("float32").mul(t).sum(0);r.push(s)}return or(r)},e.prototype.argMin=function(t,e){wl(t,"argMin");var n=[e];Ke("argMin",n,t.rank);for(var r=He(t.shape,n),o=r[0],i=r[1],a=fn(o,"int32"),s=I(i),u=this.readSync(a.dataId),c=this.readSync(t.dataId),l=0;l<u.length;++l){for(var h=l*s,f=c[h],p=0,d=0;d<s;++d){var v=c[h+d];v<f&&(f=v,p=d)}u[l]=p}return a},e.prototype.argMax=function(t,e){wl(t,"argMax");var n=[e];Ke("argMax",n,t.rank);for(var r=He(t.shape,n),o=r[0],i=r[1],a=fn(o,"int32"),s=I(i),u=this.readSync(a.dataId),c=this.readSync(t.dataId),l=0;l<u.length;++l){for(var h=l*s,f=c[h],p=0,d=0;d<s;++d){var v=c[h+d];v>f&&(f=v,p=d)}u[l]=p}return a},e.prototype.cumsum=function(t,e,n,r){if(wl(t,"cumsum"),e!==t.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(t.rank-1)+" but got axis="+e);for(var o=Et(t.dtype,"int32"),i=fn(t.shape,o),a=this.readSync(i.dataId),s=this.readSync(t.dataId),u=t.shape[t.rank-1],c=r?function(t,e){return t+u-e-1}:function(t,e){return t+e},l=0;l<s.length;l+=u)for(var h=0;h<u;h++){var f=c(l,h);if(0===h)a[f]=n?0:s[f];else{var p=c(l,h-1);a[f]=n?s[p]+a[p]:s[f]+a[p]}}return i},e.prototype.equal=function(t,e){return wl([t,e],"equal"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t===e?1:0}))},e.prototype.notEqual=function(t,e){return wl([t,e],"notEqual"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t!==e?1:0}))},e.prototype.less=function(t,e){return wl([t,e],"less"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t<e?1:0}))},e.prototype.lessEqual=function(t,e){return wl([t,e],"lessEqual"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t<=e?1:0}))},e.prototype.greater=function(t,e){return wl([t,e],"greater"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t>e?1:0}))},e.prototype.greaterEqual=function(t,e){return wl([t,e],"greaterEqual"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t>=e?1:0}))},e.prototype.logicalNot=function(t){wl(t,"logicalNot");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)n[r]=e[r]?0:1;return this.makeOutput(n,t.shape,"bool")},e.prototype.logicalAnd=function(t,e){return wl([t,e],"logicalAnd"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t&&e}))},e.prototype.logicalOr=function(t,e){return wl([t,e],"logicalOr"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t||e}))},e.prototype.select=function(t,e,n){wl([t,e,n],"select");for(var r=this.readSync(t.dataId),o=this.readSync(e.dataId),i=this.readSync(n.dataId),a=fn(e.shape,Et(e.dtype,n.dtype)),s=this.readSync(a.dataId),u=0,c=0===t.rank||t.rank>1||1===e.rank?1:I(e.shape.slice(1)),l=0;l<r.length;l++)for(var h=0;h<c;h++)1===r[l]?s[u++]=o[l]:s[u++]=i[l];return a},e.prototype.where=function(t){wl([t],"where");var e=this.readSync(t.dataId);return no(t.shape,e)},e.prototype.topk=function(t,e,n){return wl(t,"topk"),eo(this.readSync(t.dataId),t.shape,t.dtype,e)},e.prototype.min=function(t,e){wl(t,"min"),Ke("min",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],i=fn(r,t.dtype),a=I(o),s=this.readSync(i.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*a,h=u[l],f=0;f<a;++f){var p=u[l+f];p<h&&(h=p)}s[c]=h}return i},e.prototype.minimum=function(t,e){return wl([t,e],"minimum"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.min(t,e)}))},e.prototype.mod=function(t,e){return wl([t,e],"mod"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){var n=t%e;return t<0&&e<0||t>=0&&e>=0?n:(n+e)%e}))},e.prototype.max=function(t,e){wl(t,"max"),Ke("max",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],i=fn(r,t.dtype),a=I(o),s=this.readSync(i.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*a,h=u[l],f=0;f<a;++f){var p=u[l+f];p>h&&(h=p)}s[c]=h}return i},e.prototype.maximum=function(t,e){return wl([t,e],"maximum"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.max(t,e)}))},e.prototype.all=function(t,e){wl(t,"all"),Ke("all",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],i=fn(r,t.dtype),a=I(o),s=this.readSync(i.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*a,h=u[l],f=0;f<a;++f){var p=u[l+f];h=h&&p}s[c]=h}return i},e.prototype.any=function(t,e){wl(t,"any"),Ke("any",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],i=fn(r,t.dtype),a=I(o),s=this.readSync(i.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*a,h=u[l],f=0;f<a;++f){var p=u[l+f];h=h||p}s[c]=h}return i},e.prototype.squaredDifference=function(t,e){return wl([t,e],"squaredDifference"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){var n=t-e;return n*n}))},e.prototype.ceil=function(t){wl(t,"ceil");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.ceil(e[r]);return this.makeOutput(n,t.shape,"float32")},e.prototype.floor=function(t){wl(t,"floor");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.floor(e[r]);return this.makeOutput(n,t.shape,"float32")},e.prototype.sign=function(t){wl(t,"x");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)e[r]<0?n[r]=-1:e[r]>0?n[r]=1:n[r]=0;return this.makeOutput(n,t.shape,"float32")},e.prototype.isNaN=function(t){wl(t,"x");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Number.isNaN(e[r])&&(n[r]=1);return this.makeOutput(n,t.shape,"bool")},e.prototype.isInf=function(t){wl(t,"x");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Math.abs(e[r])===1/0&&(n[r]=1);return this.makeOutput(n,t.shape,"bool")},e.prototype.isFinite=function(t){wl(t,"x");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Number.isFinite(e[r])&&(n[r]=1);return this.makeOutput(n,t.shape,"bool")},e.prototype.round=function(t){wl(t,"round");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=Math.floor(e[r]);e[r]-o<.5?n[r]=Math.floor(e[r]):e[r]-o>.5?n[r]=Math.ceil(e[r]):n[r]=o%2==0?o:o+1}return this.makeOutput(n,t.shape,"float32")},e.prototype.exp=function(t){wl(t,"exp");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.exp(e[r]);return this.makeOutput(n,t.shape,"float32")},e.prototype.expm1=function(t){wl(t,"expm1");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.expm1(e[r]);return this.makeOutput(n,t.shape,"float32")},e.prototype.log=function(t){wl(t,"log");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.log(o)}return this.makeOutput(n,t.shape,"float32")},e.prototype.log1p=function(t){wl(t,"log1p");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.log1p(o)}return this.makeOutput(n,t.shape,"float32")},e.prototype.sqrt=function(t){wl(t,"sqrt");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.sqrt(o)}return this.makeOutput(n,t.shape,"float32")},e.prototype.rsqrt=function(t){wl(t,"rsqrt");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=1/Math.sqrt(o)}return this.makeOutput(n,t.shape,"float32")},e.prototype.reciprocal=function(t){wl(t,"reciprocal");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=1/e[r];return this.makeOutput(n,t.shape,"float32")},e.prototype.linear=function(t){return t},e.prototype.relu=function(t){wl(t,"relu");for(var e=fn(t.shape,t.dtype),n=this.readSync(e.dataId),r=this.readSync(t.dataId),o=0;o<r.length;++o)n[o]=Math.max(0,r[o]);return e},e.prototype.relu6=function(t){wl(t,"relu");for(var e=fn(t.shape,t.dtype),n=this.readSync(e.dataId),r=this.readSync(t.dataId),o=0;o<r.length;++o)n[o]=Math.min(Math.max(0,r[o]),6);return e},e.prototype.prelu=function(t,e){return wl([t,e],"prelu"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return t<0?e*t:t}))},e.prototype.elu=function(t){wl(t,"elu");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=n[r];e[r]=o>=0?o:Math.exp(o)-1}return this.makeOutput(e,t.shape,"float32")},e.prototype.eluDer=function(t,e){wl([t,e],"eluDer");for(var n=new Float32Array(e.size),r=this.readSync(e.dataId),o=this.readSync(t.dataId),i=0;i<r.length;++i){var a=r[i];n[i]=a>=1?o[i]:o[i]*(a+1)}return this.makeOutput(n,e.shape,"float32")},e.prototype.selu=function(t){wl(t,"selu");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=n[r];e[r]=o>=0?1.0507009873554805*o:1.7580993408473768*(Math.exp(o)-1)}return this.makeOutput(e,t.shape,"float32")},e.prototype.clip=function(t,e,n){wl(t,"clip");for(var r=new Float32Array(t.size),o=this.readSync(t.dataId),i=0;i<o.length;++i){var a=o[i];r[i]=a>n?n:a<e?e:a}return this.makeOutput(r,t.shape,"float32")},e.prototype.abs=function(t){for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.abs(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.complexAbs=function(t){for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<t.size;++r){var o=n[2*r],i=n[2*r+1];e[r]=Math.hypot(o,i)}return this.makeOutput(e,t.shape,"float32")},e.prototype.int=function(t){wl(t,"int");for(var e=new Int32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=n[r];return this.makeOutput(e,t.shape,"int32")},e.prototype.sigmoid=function(t){wl(t,"sigmoid");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=1/(1+Math.exp(-n[r]));return this.makeOutput(e,t.shape,"float32")},e.prototype.softplus=function(t){wl(t,"softplus");for(var e=Math.log(1.1920928955078125e-7)+2,n=new Float32Array(t.size),r=this.readSync(t.dataId),o=0;o<r.length;++o){var i,a=r[o]>-e,s=r[o]<e,u=Math.exp(r[o]);i=s?u:a?r[o]:Math.log(1+u),n[o]=i}return this.makeOutput(n,t.shape,"float32")},e.prototype.sin=function(t){wl(t,"sin");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.sin(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.cos=function(t){wl(t,"cos");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.cos(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.tan=function(t){wl(t,"tan");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.tan(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.asin=function(t){wl(t,"asin");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.asin(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.acos=function(t){wl(t,"acos");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.acos(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.atan=function(t){wl(t,"atan");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.atan(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.atan2=function(t,e){return wl([t,e],"atan2"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.atan2(t,e)}))},e.prototype.sinh=function(t){wl(t,"sinh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.sinh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.cosh=function(t){wl(t,"cosh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.cosh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.tanh=function(t){wl(t,"tanh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=A(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.asinh=function(t){wl(t,"asinh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.asinh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.acosh=function(t){wl(t,"acosh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.acosh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.atanh=function(t){wl(t,"atanh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.atanh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.erf=function(t){wl(t,"erf");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=Math.sign(n[r]),i=Math.abs(n[r]),a=1/(1+.3275911*i);e[r]=o*(1-((((1.061405429*a-1.453152027)*a+1.421413741)*a-.284496736)*a+.254829592)*a*Math.exp(-i*i))}return this.makeOutput(e,t.shape,"float32")},e.prototype.step=function(t,e){void 0===e&&(e=0),wl(t,"step");for(var n=new Float32Array(t.size),r=this.readSync(t.dataId),o=0;o<r.length;++o){var i=r[o];isNaN(i)?n[o]=NaN:n[o]=i>0?1:e}return this.makeOutput(n,t.shape,"float32")},e.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,i=t.activation,a=t.preluActivationWeights,s=this.conv2d(e,n,r);return o&&(s=this.add(s,o)),i&&(s=El(this,s,i,a)),s},e.prototype.conv2d=function(t,e,n){wl([t,e],"conv2d");for(var r=n.filterHeight,o=n.filterWidth,i=n.dilationHeight,a=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,c="channelsLast"===n.dataFormat,l=Mn(n.outShape,t.dtype),h=t.strides[0],f=c?t.strides[1]:t.strides[2],p=c?t.strides[2]:1,d=c?1:t.strides[1],v=l.strides[0],m=c?l.strides[1]:l.strides[2],g=c?l.strides[2]:1,y=c?1:l.strides[1],b=this.readSync(t.dataId),x=this.readSync(e.dataId),w=l.values,E=0;E<n.batchSize;++E)for(var C=E*h,_=E*v,R=0;R<n.outHeight;++R)for(var I=_+R*m,k=R*n.strideHeight-u,S=0;S<r;S++){var A=k+S*i;if(!(A<0||A>=n.inHeight))for(var O=S*e.strides[0],D=C+A*f,T=0;T<n.outWidth;++T)for(var N=I+T*g,F=T*n.strideWidth-s,M=0;M<o;M++){var P=F+M*a;if(!(P<0||P>=n.inWidth))for(var B=D+P*p,L=O+M*e.strides[1],W=0;W<n.inChannels;++W){for(var U=b[B+W*d],j=0;j<n.outChannels;++j)w[N+j*y]+=U*x[L+j];L+=n.outChannels}}}return l.toTensor()},e.prototype.conv3d=function(t,e,n){for(var r=n.filterDepth,o=n.filterHeight,i=n.filterWidth,a=n.dilationDepth,s=n.dilationHeight,u=n.dilationWidth,c=n.padInfo.front,l=n.padInfo.left,h=n.padInfo.top,f=Mn(n.outShape,t.dtype),p=this.readSync(t.dataId),d=this.readSync(e.dataId),v=f.values,m=0;m<n.batchSize;++m)for(var g=m*t.strides[0],y=m*f.strides[0],b=0;b<n.outDepth;++b)for(var x=y+b*f.strides[1],w=b*n.strideDepth-c,E=0;E<r;E++){var C=w+E*a;if(!(C<0||C>=n.inDepth))for(var _=E*e.strides[0],R=g+C*t.strides[1],I=0;I<n.outHeight;++I)for(var k=x+I*f.strides[2],S=I*n.strideHeight-h,A=0;A<o;A++){var O=S+A*s;if(!(O<0||O>=n.inHeight))for(var D=_+A*e.strides[1],T=R+O*t.strides[2],N=0;N<n.outWidth;++N)for(var F=k+N*n.outChannels,M=N*n.strideWidth-l,P=0;P<i;P++){var B=M+P*u;if(!(B<0||B>=n.inWidth))for(var L=D+P*e.strides[2],W=T+B*n.inChannels,U=L,j=0;j<n.inChannels;++j){for(var z=p[W+j],V=0;V<n.outChannels;++V)v[F+V]+=z*d[U+V];U+=n.outChannels}}}}return f.toTensor()},e.prototype.conv2dDerInput=function(t,e,n){wl([t,e],"conv2dDerInput");for(var r=Mn(n.inShape,"float32"),o=r.values,i=this.readSync(t.dataId),a=this.readSync(e.dataId),s=e.strides,u=s[0],c=s[1],l=s[2],h=n.batchSize,f=n.filterHeight,p=n.filterWidth,d=n.inChannels,v=n.inHeight,m=n.inWidth,g=n.outChannels,y=n.outHeight,b=n.outWidth,x=n.strideHeight,w=n.strideWidth,E=n.dataFormat,C=f-1-n.padInfo.top,_=p-1-n.padInfo.left,R="channelsLast"===E,I=r.strides[0],k=R?r.strides[1]:r.strides[2],S=R?r.strides[2]:1,A=R?1:r.strides[1],O=t.strides[0],D=R?t.strides[1]:t.strides[2],T=R?t.strides[2]:1,N=R?1:t.strides[1],F=0;F<h;++F)for(var M=0;M<d;++M)for(var P=0;P<v;++P)for(var B=P-C,L=Math.max(0,Math.ceil(B/x)),W=Math.min(y,(f+B)/x),U=0;U<m;++U){for(var j=U-_,z=Math.max(0,Math.ceil(j/w)),V=Math.min(b,(p+j)/w),G=0,H=L;H<W;++H)for(var q=H*x-B,K=z;K<V;++K)for(var X=O*F+D*H+T*K,$=u*(f-1-q)+c*(p-1-(K*w-j))+l*M,Y=0;Y<g;++Y)G+=i[X+N*Y]*a[$+Y];o[I*F+k*P+S*U+A*M]=G}return r.toTensor()},e.prototype.conv3dDerInput=function(t,e,n){for(var r=Mn(n.inShape,"float32"),o=r.values,i=r.strides,a=i[0],s=i[1],u=i[2],c=i[3],l=this.readSync(t.dataId),h=t.strides,f=h[0],p=h[1],d=h[2],v=h[3],m=this.readSync(e.dataId),g=e.strides,y=g[0],b=g[1],x=g[2],w=g[3],E=n.batchSize,C=n.filterDepth,_=n.filterHeight,R=n.filterWidth,I=n.inChannels,k=n.inDepth,S=n.inHeight,A=n.inWidth,O=n.outChannels,D=n.outDepth,T=n.outHeight,N=n.outWidth,F=n.strideDepth,M=n.strideHeight,P=n.strideWidth,B=C-1-n.padInfo.front,L=_-1-n.padInfo.top,W=R-1-n.padInfo.left,U=0;U<E;++U)for(var j=0;j<I;++j)for(var z=0;z<k;++z)for(var V=z-B,G=Math.max(0,Math.ceil(V/F)),H=Math.min(D,(C+V)/F),q=0;q<S;++q)for(var K=q-L,X=Math.max(0,Math.ceil(K/M)),$=Math.min(T,(_+K)/M),Y=0;Y<A;++Y){for(var J=Y-W,Q=Math.max(0,Math.ceil(J/P)),Z=Math.min(N,(R+J)/P),tt=0,et=G;et<H;++et)for(var nt=et*F-V,rt=X;rt<$;++rt)for(var ot=rt*M-K,it=Q;it<Z;++it)for(var at=f*U+p*et+d*rt+v*it,st=y*(C-1-nt)+b*(_-1-ot)+x*(R-1-(it*P-J))+w*j,ut=0;ut<O;++ut)tt+=l[at+ut]*m[st+ut];o[a*U+s*z+u*q+c*Y+j]=tt}return r.toTensor()},e.prototype.conv2dDerFilter=function(t,e,n){wl([t,e],"conv2dDerFilter");for(var r=n.strideHeight,o=n.strideWidth,i=n.filterHeight,a=n.filterWidth,s="channelsLast"===n.dataFormat,u=Mn(n.filterShape,"float32"),c=n.padInfo.left,l=n.padInfo.top,h=this.bufferSync(t),f=this.bufferSync(e),p=0;p<i;++p)for(var d=Math.max(0,Math.ceil((l-p)/r)),v=Math.min(n.outHeight,(n.inHeight+l-p)/r),m=0;m<a;++m)for(var g=Math.max(0,Math.ceil((c-m)/o)),y=Math.min(n.outWidth,(n.inWidth+c-m)/o),b=0;b<n.inChannels;++b)for(var x=0;x<n.outChannels;++x){for(var w=0,E=0;E<n.batchSize;++E)for(var C=d;C<v;++C)for(var _=p+C*r-l,R=g;R<y;++R){var I=m+R*o-c;w+=s?h.get(E,_,I,b)*f.get(E,C,R,x):h.get(E,b,_,I)*f.get(E,x,C,R)}u.set(w,p,m,b,x)}return u.toTensor()},e.prototype.conv3dDerFilter=function(t,e,n){for(var r=n.strideDepth,o=n.strideHeight,i=n.strideWidth,a=n.filterDepth,s=n.filterHeight,u=n.filterWidth,c=Mn(n.filterShape,"float32"),l=c.values,h=c.strides,f=h[0],p=h[1],d=h[2],v=h[3],m=this.readSync(e.dataId),g=e.strides,y=g[0],b=g[1],x=g[2],w=g[3],E=this.readSync(t.dataId),C=t.strides,_=C[0],R=C[1],I=C[2],k=C[3],S=n.padInfo.front,A=n.padInfo.left,O=n.padInfo.top,D=0;D<a;++D)for(var T=Math.max(0,Math.ceil((S-D)/r)),N=Math.min(n.outDepth,(n.inDepth+S-D)/r),F=D*f,M=0;M<s;++M)for(var P=Math.max(0,Math.ceil((O-M)/o)),B=Math.min(n.outHeight,(n.inHeight+O-M)/o),L=M*p+F,W=0;W<u;++W)for(var U=Math.max(0,Math.ceil((A-W)/i)),j=Math.min(n.outWidth,(n.inWidth+A-W)/i),z=W*d+L,V=0;V<n.inChannels;++V)for(var G=V*v+z,H=0;H<n.outChannels;++H){for(var q=0,K=0;K<n.batchSize;++K)for(var X=K*_,$=K*y,Y=T;Y<N;++Y)for(var J=(D+Y*r-S)*R+X,Q=Y*b+$,Z=P;Z<B;++Z)for(var tt=(M+Z*o-O)*I+J,et=Z*x+Q,nt=U;nt<j;++nt){var rt=nt*w+et;q+=E[(W+nt*i-A)*k+tt+V]*m[rt+H]}l[G+H]=q}return c.toTensor()},e.prototype.fusedDepthwiseConv2D=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,i=t.activation,a=t.preluActivationWeights,s=this.depthwiseConv2D(e,n,r);return o&&(s=this.add(s,o)),i&&(s=El(this,s,i,a)),s},e.prototype.depthwiseConv2D=function(t,e,n){wl([t,e],"depthwiseConv2D");for(var r=n.filterHeight,o=n.filterWidth,i=n.dilationHeight,a=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,c=n.outChannels/n.inChannels,l=Mn(n.outShape,t.dtype),h=this.readSync(t.dataId),f=this.readSync(e.dataId),p=l.values,d=0;d<n.batchSize;++d)for(var v=d*t.strides[0],m=d*l.strides[0],g=0;g<n.outHeight;++g)for(var y=m+g*l.strides[1],b=g*n.strideHeight-s,x=0;x<r;++x){var w=b+x*i;if(!(w<0||w>=n.inHeight))for(var E=x*e.strides[0],C=v+w*t.strides[1],_=0;_<n.outWidth;++_)for(var R=y+_*l.strides[2],I=_*n.strideWidth-u,k=0;k<o;++k){var S=I+k*a;if(!(S<0||S>=n.inWidth))for(var A=E+k*e.strides[1],O=C+S*n.inChannels,D=R,T=A,N=0;N<n.inChannels;++N){for(var F=h[O+N],M=0;M<c;++M)p[D+M]+=F*f[T+M];D+=c,T+=c}}}return l.toTensor()},e.prototype.depthwiseConv2DDerInput=function(t,e,n){wl([t,e],"depthwiseConv2DDerInput");for(var r=Mn(n.inShape,"float32"),o=r.values,i=r.strides,a=i[0],s=i[1],u=i[2],c=this.readSync(t.dataId),l=t.strides,h=l[0],f=l[1],p=l[2],d=this.readSync(e.dataId),v=e.strides,m=v[0],g=v[1],y=v[2],b=n.batchSize,x=n.filterHeight,w=n.filterWidth,E=n.inChannels,C=n.inHeight,_=n.inWidth,R=n.outChannels,I=n.outHeight,k=n.outWidth,S=n.strideHeight,A=n.strideWidth,O=x-1-n.padInfo.top,D=w-1-n.padInfo.left,T=R/E,N=0;N<b;++N)for(var F=0;F<E;++F)for(var M=0;M<C;++M)for(var P=M-O,B=Math.max(0,Math.ceil(P/S)),L=Math.min(I,(x+P)/S),W=0;W<_;++W){for(var U=W-D,j=Math.max(0,Math.ceil(U/A)),z=Math.min(k,(w+U)/A),V=0,G=B;G<L;++G)for(var H=G*S-P,q=j;q<z;++q)for(var K=h*N+f*G+p*q,X=m*(x-1-H)+g*(w-1-(q*A-U))+y*F,$=0;$<T;++$)V+=c[K+(F*T+$)]*d[X+$];o[a*N+s*M+u*W+F]=V}return r.toTensor()},e.prototype.depthwiseConv2DDerFilter=function(t,e,n){wl([t,e],"depthwiseConv2DDerFilter");for(var r=n.strideHeight,o=n.strideWidth,i=n.filterHeight,a=n.filterWidth,s=Mn(n.filterShape,"float32"),u=n.padInfo.left,c=n.padInfo.top,l=n.outChannels/n.inChannels,h=this.bufferSync(t),f=this.bufferSync(e),p=0;p<i;++p)for(var d=Math.max(0,Math.ceil((c-p)/r)),v=Math.min(n.outHeight,(n.inHeight+c-p)/r),m=0;m<a;++m)for(var g=Math.max(0,Math.ceil((u-m)/o)),y=Math.min(n.outWidth,(n.inWidth+u-m)/o),b=0;b<n.outChannels;++b){for(var x=Math.trunc(b/l),w=b%l,E=0,C=0;C<n.batchSize;++C)for(var _=d;_<v;++_)for(var R=p+_*r-c,I=g;I<y;++I){var k=m+I*o-u;E+=h.get(C,R,k,x)*f.get(C,_,I,b)}s.set(E,p,m,x,w)}return s.toTensor()},e.prototype.tile=function(t,e){return wl(t,"tile"),to(this.bufferSync(t),e)},e.prototype.pad=function(t,e,n){wl(t,"pad");var r=e.map((function(e,n){return e[0]+t.shape[n]+e[1]})),o=e.map((function(t){return t[0]})),i=this.bufferSync(t),a=Mn(r,t.dtype);0!==n&&a.values.fill(n);for(var s=0;s<t.size;s++){var u=i.indexToLoc(s),c=u.map((function(t,e){return t+o[e]}));a.set.apply(a,[i.get.apply(i,u)].concat(c))}return a.toTensor()},e.prototype.transpose=function(t,e){wl(t,"transpose");for(var n=new Array(t.rank),r=0;r<n.length;r++)n[r]=t.shape[e[r]];var o=this.readSync(t.dataId),i=Mn(n,t.dtype),a=this.bufferSync(t);for(r=0;r<t.size;++r){for(var s=a.indexToLoc(r),u=new Array(s.length),c=0;c<u.length;c++)u[c]=s[e[c]];var l=i.locToIndex(u);i.values[l]=o[r]}return i.toTensor()},e.prototype.gather=function(t,e,n){wl([t,e],"gather");var r=t.shape.slice(),o=this.readSync(e.dataId);r[n]=o.length;for(var i=Mn(r,t.dtype),a=this.bufferSync(t),s=0;s<i.size;++s){var u=i.indexToLoc(s),c=u.slice();c[n]=o[u[n]];var l=a.locToIndex(c);i.values[s]=a.values[l]}return i.toTensor()},e.prototype.batchToSpaceND=function(t,e,n){wl([t],"batchToSpaceND");var r=e.reduce((function(t,e){return t*e})),o=ur(t.shape,e,r),i=cr(o.length,e.length),a=lr(t.shape,e,r),s=hr(n,e.length),u=fr(a,n,e.length);return t.reshape(o).transpose(i).reshape(a).slice(s,u)},e.prototype.spaceToBatchND=function(t,e,n){wl([t],"spaceToBatchND");var r=e.reduce((function(t,e){return t*e})),o=[[0,0]];o.push.apply(o,n);for(var i=1+e.length;i<t.shape.length;++i)o.push([0,0]);var a=t.pad(o),s=ur(a.shape,e,r,!1),u=cr(s.length,e.length,!1),c=lr(a.shape,e,r,!1);return a.reshape(s).transpose(u).reshape(c)},e.prototype.pool=function(t,e,n){wl(t,"pool");for(var r=e.strideHeight,o=e.strideWidth,i=e.dilationHeight,a=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=e.padInfo.top,l=e.padInfo.left,h="max"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,f=this.readSync(t.dataId),p=Mn(e.outShape,t.dtype),d=p.values,v=e.outShape[1]*e.outShape[2]*e.outShape[3],m=e.outShape[2]*e.outShape[3],g=e.outShape[3],y=0;y<e.batchSize;++y)for(var b=y*v,x=y*t.strides[0],w=0;w<e.inChannels;++w)for(var E=0;E<e.outHeight;++E)for(var C=E*r-c,_=Math.max(0,C),R=Math.min(e.inHeight,s+C),I=b+E*m,k=0;k<e.outWidth;++k){for(var S=k*o-l,A=Math.max(0,S),O=Math.min(e.inWidth,u+S),D=h,T=0,N=0,F=_;F<R;F+=i){for(var M=x+F*t.strides[1],P=A;P<O;P+=a){var B=f[M+P*t.strides[2]+w];"max"===n&&B>D?D=B:"avg"===n&&(T+=B,N++)}if(isNaN(D))break}d[I+k*g+w]="avg"===n?T/N:D}return p.toTensor()},e.prototype.maxPool=function(t,e){return this.pool(t,e,"max")},e.prototype.maxPoolPositions=function(t,e){for(var n=Mn(e.outShape,"int32"),r=e.strideHeight,o=e.strideWidth,i=e.dilationHeight,a=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=e.padInfo.top,l=e.padInfo.left,h=this.bufferSync(t),f=0;f<e.batchSize;++f)for(var p=0;p<e.inChannels;++p)for(var d=0;d<e.outHeight;++d){for(var v=d*r-c,m=v;m<0;)m+=i;for(var g=Math.min(e.inHeight,s+v),y=0;y<e.outWidth;++y){for(var b=y*o-l,x=b;x<0;)x+=a;for(var w=Math.min(e.inWidth,u+b),E=Number.NEGATIVE_INFINITY,C=-1,_=m;_<g;_+=i)for(var R=_-v,I=x;I<w;I+=a){var k=I-b,S=h.get(f,_,I,p);S>E&&(E=S,C=R*u+k)}n.set(C,f,d,y,p)}}return n.toTensor()},e.prototype.maxPoolBackprop=function(t,e,n,r){wl([e,n],"maxPoolBackprop");for(var o=this.maxPoolPositions(e,r),i=r.strideHeight,a=r.strideWidth,s=r.dilationHeight,u=r.dilationWidth,c=r.effectiveFilterHeight,l=r.effectiveFilterWidth,h=l-1-r.padInfo.left,f=c-1-r.padInfo.top,p=Mn(e.shape,"float32"),d=this.bufferSync(o),v=this.bufferSync(t),m=0;m<r.batchSize;++m)for(var g=0;g<r.inChannels;++g)for(var y=0;y<r.inHeight;++y)for(var b=0;b<r.inWidth;++b){for(var x=y-f,w=b-h,E=0,C=0;C<c;C+=s){var _=(x+C)/i;if(!(_<0||_>=r.outHeight||Math.floor(_)!==_))for(var R=0;R<l;R+=u){var I=(w+R)/a;if(!(I<0||I>=r.outWidth||Math.floor(I)!==I)){var k=c*l-1-d.get(m,_,I,g)===C*l+R?1:0;0!==k&&(E+=v.get(m,_,I,g)*k)}}}p.set(E,m,y,b,g)}return p.toTensor()},e.prototype.avgPoolBackprop=function(t,e,n){wl([t,e],"avgPoolBackprop");for(var r=n.strideHeight,o=n.strideWidth,i=n.filterHeight,a=n.filterWidth,s=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,h=l-1-n.padInfo.left,f=c-1-n.padInfo.top,p=Mn(e.shape,"float32"),d=1/(i*a),v=this.bufferSync(t),m=0;m<n.batchSize;++m)for(var g=0;g<n.inChannels;++g)for(var y=0;y<n.inHeight;++y)for(var b=0;b<n.inWidth;++b){for(var x=y-f,w=b-h,E=0,C=0;C<c;C+=s){var _=(x+C)/r;if(!(_<0||_>=n.outHeight||Math.floor(_)!==_))for(var R=0;R<l;R+=u){var I=(w+R)/o;I<0||I>=n.outWidth||Math.floor(I)!==I||(E+=v.get(m,_,I,g))}}p.set(E*d,m,y,b,g)}return p.toTensor()},e.prototype.pool3d=function(t,e,n){wl(t,"pool3d");for(var r=e.strideDepth,o=e.strideHeight,i=e.strideWidth,a=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,h=e.effectiveFilterWidth,f=e.padInfo.front,p=e.padInfo.top,d=e.padInfo.left,v="max"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=this.readSync(t.dataId),g=Mn(e.outShape,t.dtype),y=g.values,b=e.outShape[1]*e.outShape[2]*e.outShape[3]*e.outShape[4],x=e.outShape[2]*e.outShape[3]*e.outShape[4],w=e.outShape[3]*e.outShape[4],E=e.outShape[4],C=0;C<e.batchSize;++C)for(var _=C*b,R=C*t.strides[0],I=0;I<e.inChannels;++I)for(var k=0;k<e.outDepth;++k){for(var S=k*r-f,A=S;A<0;)A+=a;for(var O=Math.min(e.inDepth,c+S),D=_+k*x,T=0;T<e.outHeight;++T){for(var N=T*o-p,F=N;F<0;)F+=s;for(var M=Math.min(e.inHeight,l+N),P=D+T*w,B=0;B<e.outWidth;++B){for(var L=B*i-d,W=L;W<0;)W+=u;for(var U=Math.min(e.inWidth,h+L),j=P+B*E,z=v,V=0,G=0,H=A;H<O;H+=a){for(var q=R+H*t.strides[1],K=F;K<M;K+=s){for(var X=q+K*t.strides[2],$=W;$<U;$+=u){var Y=m[X+$*t.strides[3]+I];if("max"===n&&Y>z?z=Y:"avg"===n&&(V+=Y,G++),isNaN(z))break}if(isNaN(z))break}if(isNaN(z))break}y[j+I]="avg"===n?V/G:z}}}return g.toTensor()},e.prototype.avgPool3d=function(t,e){return wl(t,"avgPool3d"),this.pool3d(t,e,"avg").toFloat()},e.prototype.avgPool3dBackprop=function(t,e,n){wl([t,e],"avgPool3dBackprop");for(var r=n.strideDepth,o=n.strideHeight,i=n.strideWidth,a=n.filterDepth,s=n.filterHeight,u=n.filterWidth,c=n.dilationDepth,l=n.dilationHeight,h=n.dilationWidth,f=n.effectiveFilterDepth,p=n.effectiveFilterHeight,d=n.effectiveFilterWidth,v=f-1-n.padInfo.front,m=d-1-n.padInfo.left,g=p-1-n.padInfo.top,y=Mn(e.shape,"float32"),b=1/(a*s*u),x=this.bufferSync(t),w=0;w<n.batchSize;++w)for(var E=0;E<n.inChannels;++E)for(var C=0;C<n.inDepth;++C)for(var _=0;_<n.inHeight;++_)for(var R=0;R<n.inWidth;++R){for(var I=C-v,k=_-g,S=R-m,A=0,O=0;O<f;O+=c){var D=(I+O)/r;if(!(D<0||D>=n.outDepth||Math.floor(D)!==D))for(var T=0;T<p;T+=l){var N=(k+T)/o;if(!(N<0||N>=n.outHeight||Math.floor(N)!==N))for(var F=0;F<d;F+=h){var M=(S+F)/i;M<0||M>=n.outWidth||Math.floor(M)!==M||(A+=x.get(w,D,N,M,E))}}}y.set(A*b,w,C,_,R,E)}return y.toTensor()},e.prototype.maxPool3d=function(t,e){return wl(t,"maxPool3d"),this.pool3d(t,e,"max").toFloat()},e.prototype.maxPool3dPositions=function(t,e){for(var n=Mn(e.outShape,"int32"),r=e.strideDepth,o=e.strideHeight,i=e.strideWidth,a=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,h=e.effectiveFilterWidth,f=e.padInfo.front,p=e.padInfo.top,d=e.padInfo.left,v=this.bufferSync(t),m=0;m<e.batchSize;++m)for(var g=0;g<e.inChannels;++g)for(var y=0;y<e.outDepth;++y){for(var b=y*r-f,x=b;x<0;)x+=a;for(var w=Math.min(e.inDepth,c+b),E=0;E<e.outHeight;++E){for(var C=E*o-p,_=C;_<0;)_+=s;for(var R=Math.min(e.inHeight,l+C),I=0;I<e.outWidth;++I){for(var k=I*i-d,S=k;S<0;)S+=u;for(var A=Math.min(e.inWidth,h+k),O=Number.NEGATIVE_INFINITY,D=-1,T=x;T<w;T+=a)for(var N=T-b,F=_;F<R;F+=s)for(var M=F-C,P=S;P<A;P+=u){var B=P-k,L=v.get(m,T,F,P,g);L>=O&&(O=L,D=N*l*h+M*l+B)}n.set(D,m,y,E,I,g)}}}return n.toTensor()},e.prototype.maxPool3dBackprop=function(t,e,n,r){wl([e,n],"maxPool3dBackprop");for(var o=this.maxPool3dPositions(e,r),i=r.strideDepth,a=r.strideHeight,s=r.strideWidth,u=r.dilationDepth,c=r.dilationHeight,l=r.dilationWidth,h=r.effectiveFilterDepth,f=r.effectiveFilterHeight,p=r.effectiveFilterWidth,d=h-1-r.padInfo.front,v=p-1-r.padInfo.left,m=f-1-r.padInfo.top,g=Mn(e.shape,"float32"),y=this.bufferSync(o),b=this.bufferSync(t),x=0;x<r.batchSize;++x)for(var w=0;w<r.inChannels;++w)for(var E=0;E<r.inDepth;++E)for(var C=0;C<r.inHeight;++C)for(var _=0;_<r.inWidth;++_){for(var R=E-d,I=C-m,k=_-v,S=0,A=0;A<h;A+=u){var O=(R+A)/i;if(!(O<0||O>=r.outDepth||Math.floor(O)!==O))for(var D=0;D<f;D+=c){var T=(I+D)/a;if(!(T<0||T>=r.outHeight||Math.floor(T)!==T))for(var N=0;N<p;N+=l){var F=(k+N)/s;if(!(F<0||F>=r.outWidth||Math.floor(F)!==F)){var M=h*f*p-1-y.get(x,O,T,F,w)===A*f*p+D*p+N?1:0;0!==M&&(S+=b.get(x,O,T,F,w)*M)}}}}g.set(S,x,E,C,_,w)}return g.toTensor()},e.prototype.cast=function(t,e){return Gr(t,e,this)},e.prototype.reshape=function(t,e){return Hr(t,e)},e.prototype.avgPool=function(t,e){return wl(t,"avgPool"),this.pool(t,e,"avg").toFloat()},e.prototype.resizeBilinear=function(t,e,n,r){wl(t,"resizeBilinear");for(var o=t.shape,i=o[0],a=o[1],s=o[2],u=o[3],c=this.readSync(t.dataId),l=new Float32Array(I([i,e,n,u])),h=[r&&e>1?a-1:a,r&&n>1?s-1:s],f=[r&&e>1?e-1:e,r&&n>1?n-1:n],p=0,d=h[0]/f[0],v=h[1]/f[1],m=0;m<i;m++)for(var g=0;g<e;g++)for(var y=d*g,b=Math.floor(y),x=y-b,w=Math.min(a-1,Math.ceil(y)),E=m*t.strides[0]+b*t.strides[1],C=m*t.strides[0]+w*t.strides[1],_=0;_<n;_++)for(var R=v*_,k=Math.floor(R),S=R-k,A=Math.min(s-1,Math.ceil(R)),O=E+k*t.strides[2],D=C+k*t.strides[2],T=E+A*t.strides[2],N=C+A*t.strides[2],F=0;F<u;F++){var M=c[O+F],P=c[D+F],B=M+(c[T+F]-M)*S,L=B+(P+(c[N+F]-P)*S-B)*x;l[p++]=L}return rn(l,[i,e,n,u])},e.prototype.resizeBilinearBackprop=function(t,e,n){wl([t,e],"resizeBilinearBackprop");for(var r=e.shape,o=r[0],i=r[1],a=r[2],s=r[3],u=t.shape,c=u[1],l=u[2],h=new Float32Array(o*i*a*s),f=[n&&c>1?i-1:i,n&&l>1?a-1:a],p=[n&&c>1?c-1:c,n&&l>1?l-1:l],d=f[0]/p[0],v=f[1]/p[1],m=this.readSync(t.dataId),g=0,y=0;y<o;y++)for(var b=y*e.strides[0],x=0;x<c;x++)for(var w=x*d,E=Math.floor(w),C=Math.min(Math.ceil(w),i-1),_=b+E*e.strides[1],R=b+C*e.strides[1],I=w-E,k=1-I,S=0;S<l;S++)for(var A=S*v,O=Math.floor(A),D=Math.min(Math.ceil(A),a-1),T=A-O,N=1-T,F=_+O*e.strides[2],M=_+D*e.strides[2],P=R+O*e.strides[2],B=R+D*e.strides[2],L=k*N,W=k*T,U=I*N,j=I*T,z=0;z<s;z++){var V=m[g++];h[F+z]+=V*L,h[M+z]+=V*W,h[P+z]+=V*U,h[B+z]+=V*j}return ln(h,[o,a,i,s],e.dtype)},e.prototype.resizeNearestNeighbor=function(t,e,n,r){wl(t,"resizeNearestNeighbor");for(var o=t.shape,i=o[0],a=o[1],s=o[2],u=o[3],c=this.readSync(t.dataId),l=new Float32Array(i*e*n*u),h=[r&&e>1?a-1:a,r&&n>1?s-1:s],f=[r&&e>1?e-1:e,r&&n>1?n-1:n],p=h[0]/f[0],d=h[1]/f[1],v=0,m=0;m<i;m++)for(var g=m*t.strides[0],y=0;y<e;y++)for(var b=p*y,x=g+Math.min(a-1,r?Math.round(b):Math.floor(b))*t.strides[1],w=0;w<n;w++)for(var E=d*w,C=x+Math.min(s-1,r?Math.round(E):Math.floor(E))*t.strides[2],_=0;_<u;_++){var R=c[C+_];l[v++]=R}return rn(l,[i,e,n,u],t.dtype)},e.prototype.resizeNearestNeighborBackprop=function(t,e,n){wl([t,e],"resizeNearestNeighborBackprop");for(var r=e.shape,o=r[0],i=r[1],a=r[2],s=r[3],u=t.shape,c=u[1],l=u[2],h=new Float32Array(o*i*a*s),f=this.readSync(t.dataId),p=[n&&c>1?i-1:i,n&&l>1?a-1:a],d=[n&&c>1?c-1:c,n&&l>1?l-1:l],v=p[0]/d[0],m=p[1]/d[1],g=1/v,y=1/m,b=2*Math.ceil(g)+2,x=2*Math.ceil(y)+2,w=0;w<o;w++)for(var E=w*e.strides[0],C=0;C<i;C++)for(var _=E+C*e.strides[1],R=Math.floor(C*g),I=Math.floor(R-b/2),k=0;k<a;k++)for(var S=_+k*e.strides[2],A=Math.floor(k*y),O=Math.floor(A-x/2),D=0;D<s;D++){for(var T=0,N=0;N<b;N++){var F=N+I;if(!(F<0||F>=c)){var M=E+F*t.strides[1],P=F*v;if(C===Math.min(i-1,n?Math.round(P):Math.floor(P)))for(var B=0;B<x;B++){var L=B+O;if(!(L<0||L>=l)){var W=M+L*t.strides[2],U=L*m;k===Math.min(a-1,n?Math.round(U):Math.floor(U))&&(T+=f[W+D])}}}}h[S+D]=T}return ln(h,e.shape,e.dtype)},e.prototype.batchNormalization=function(t,e,n,r,o,i){wl([t,e,n,o,i],"batchNorm");for(var a=this.readSync(t.dataId),s=this.readSync(e.dataId),u=this.readSync(n.dataId),c=o?this.readSync(o.dataId):new Float32Array([1]),l=i?this.readSync(i.dataId):new Float32Array([0]),h=new Float32Array(a.length),f=l.length,p=c.length,d=u.length,v=s.length,m=0,g=0,y=0,b=0,x=0;x<a.length;++x)h[x]=l[m++]+(a[x]-s[g++])*c[y++]/Math.sqrt(u[b++]+r),m>=f&&(m=0),g>=v&&(g=0),y>=p&&(y=0),b>=d&&(b=0);return ln(h,t.shape)},e.prototype.localResponseNormalization4D=function(t,e,n,r,o){wl(t,"localResponseNormalization4D");var i=t.shape[3],a=i-1,s=this.readSync(t.dataId),u=t.size,c=new Float32Array(u);function l(t){for(var n=t%i,r=t-n+Math.max(0,n-e),o=t-n+Math.min(n+e,a),u=0;r<=o;r++){var c=s[r];u+=c*c}return u}for(var h=0;h<u;h++){var f=l(h),p=s[h]*Math.pow(n+r*f,-o);c[h]=p}return ln(c,t.shape)},e.prototype.LRNGrad=function(t,e,n,r,o,i,a){wl(t,"LRNGrad");for(var s=t.shape[3],u=this.readSync(t.dataId),c=this.readSync(e.dataId),l=this.readSync(n.dataId),h=new Float32Array(t.size),f=t.size,p=0;p<f;p++){for(var d=p%s,v=p-d+Math.max(0,d-r),m=p-d+Math.min(s,d+r+1),g=0,y=v;y<m;y++)g+=Math.pow(c[y],2);for(g=i*g+o,y=v;y<m;y++){var b=-2*i*a*c[y]*l[p]/g;p===y&&(b+=Math.pow(g,-a)),b*=u[p],h[y]+=b}}return ln(h,t.shape)},e.prototype.multinomial=function(t,e,n,r){wl(t,"multinomial");for(var o=e?t:_r(t),i=o.shape[0],a=o.shape[1],s=fn([i,n],"int32"),u=this.readSync(s.dataId),c=this.readSync(o.dataId),l=0;l<i;++l){var h=l*a,f=new Float32Array(a-1);f[0]=c[h];for(var p=1;p<f.length;++p)f[p]=f[p-1]+c[h+p];for(var d=Dn(r.toString()),v=l*n,m=0;m<n;++m){var g=d();u[v+m]=f.length;for(var y=0;y<f.length;y++)if(g<f[y]){u[v+m]=y;break}}}return s},e.prototype.oneHot=function(t,e,n,r){wl(t,"oneHot");var o=new Float32Array(t.size*e);o.fill(r);for(var i=this.readSync(t.dataId),a=0;a<t.size;++a)i[a]>=0&&i[a]<e&&(o[a*e+i[a]]=n);return un(o,[t.size,e],"int32")},e.prototype.nonMaxSuppression=function(t,e,n,r,o){return wl(t,"nonMaxSuppression"),Jr(this.readSync(t.dataId),this.readSync(e.dataId),n,r,o)},e.prototype.fft=function(t){return this.fftBatch(t,!1)},e.prototype.ifft=function(t){return this.fftBatch(t,!0)},e.prototype.fftBatch=function(t,e){for(var n=t.shape[0],r=t.shape[1],o=Mn(t.shape,"float32"),i=Mn(t.shape,"float32"),a=en(t).as2D(n,r),s=nn(t).as2D(n,r),u=0;u<n;u++)for(var c=a.slice([u,0],[1,r]),l=s.slice([u,0],[1,r]),h=tn(c,l),f=this.readSync(this.fftImpl(h,e).dataId),p=0;p<r;p++){var d=Xr(f,p);o.values[u*r+p]=d.real,i.values[u*r+p]=d.imag}return tn(o.toTensor(),i.toTensor()).as2D(n,r)},e.prototype.fftImpl=function(t,e){var n=t.as1D(),r=n.size;if(this.isExponentOf2(r)){var o=this.fftRadix2(n,r,e).as2D(t.shape[0],t.shape[1]);return e&&(o=tn(en(o).div(an(r)),nn(o).div(an(r)))),o}var i=this.readSync(t.dataId),a=function(t){for(var e=new Float32Array(t.length/2),n=new Float32Array(t.length/2),r=0;r<t.length;r+=2)e[r/2]=t[r],n[r/2]=t[r+1];return{real:e,imag:n}}(this.fourierTransformByMatmul(i,r,e));return tn(a.real,a.imag).as2D(t.shape[0],t.shape[1])},e.prototype.isExponentOf2=function(t){return 0==(t&t-1)},e.prototype.fftRadix2=function(t,e,n){if(1===e)return t;var r=this.readSync(t.dataId),o=e/2,i=function(t){for(var e=Math.ceil(t.length/4),n=new Float32Array(e),r=new Float32Array(e),o=0;o<t.length;o+=4)n[Math.floor(o/4)]=t[o],r[Math.floor(o/4)]=t[o+1];return{real:n,imag:r}}(r),a=tn(i.real,i.imag).as1D(),s=function(t){for(var e=Math.floor(t.length/4),n=new Float32Array(e),r=new Float32Array(e),o=2;o<t.length;o+=4)n[Math.floor(o/4)]=t[o],r[Math.floor(o/4)]=t[o+1];return{real:n,imag:r}}(r),u=tn(s.real,s.imag).as1D();a=this.fftRadix2(a,o,n),u=this.fftRadix2(u,o,n);var c=function(t,e){for(var n=new Float32Array(t/2),r=new Float32Array(t/2),o=0;o<Math.ceil(t/2);o++){var i=(e?2:-2)*Math.PI*(o/t);n[o]=Math.cos(i),r[o]=Math.sin(i)}return{real:n,imag:r}}(e,n),l=tn(c.real,c.imag).mul(u),h=a.add(l),f=a.sub(l),p=en(h).concat(en(f)),d=nn(h).concat(nn(f));return tn(p,d).as1D()},e.prototype.fourierTransformByMatmul=function(t,e,n){for(var r=new Float32Array(2*e),o=0;o<e;o++){for(var i=0,a=0,s=0;s<e;s++){var u=Yr(o*s,e,n),c=Xr(t,s);i+=c.real*u.real-c.imag*u.imag,a+=c.real*u.imag+c.imag*u.real}n&&(i/=e,a/=e),$r(r,i,a,o)}return r},e.prototype.depthToSpace=function(t,e,n){E("NHWC"===n,(function(){return"Only NHWC dataFormat supported on CPU for depthToSpace. Got "+n})),E(e>1,(function(){return"blockSize should be > 1 for depthToSpace, but was: "+e}));for(var r=t.shape[0],o=t.shape[1],i=t.shape[2],a=t.shape[3],s=o*e,u=i*e,c=a/(e*e),l=this.readSync(t.dataId),h=new Float32Array(r*s*u*c),f=0,p=0;p<r;++p)for(var d=0;d<s;++d)for(var v=Math.floor(d/e),m=d%e,g=0;g<u;++g)for(var y=Math.floor(g/e),b=(m*e+g%e)*c,x=0;x<c;++x){var w=x+b+a*(y+i*(v+o*p));h[f++]=l[w]}return ln(h,[r,s,u,c])},e.prototype.broadcastedBinaryOp=function(t,e,n,r){var o=Dr(t.shape,e.shape),i=Mn(o,n),a=this.readSync(t.dataId),s=this.readSync(e.dataId),u=Ar(t.shape,o),c=Ar(e.shape,o),l=i.values;if(u.length+c.length===0)for(var h=0;h<l.length;++h)l[h]=r(a[h%a.length],s[h%s.length]);else{var f=this.bufferSync(t),p=this.bufferSync(e),d=function(n){var o=i.indexToLoc(n),h=o.slice(-t.rank);u.forEach((function(t){return h[t]=0}));var d=f.locToIndex(h),v=o.slice(-e.rank);c.forEach((function(t){return v[t]=0}));var m=p.locToIndex(v);l[n]=r(a[d],s[m])};for(h=0;h<l.length;++h)d(h)}return i.toTensor()},e.prototype.broadcastedBinaryComplexOp=function(t,e,n){var r=Dr(t.shape,e.shape),o=Mn(r,"float32"),i=Mn(r,"float32"),a=this.readSync(t.dataId),s=this.readSync(e.dataId),u=Ar(t.shape,r),c=Ar(e.shape,r),l=o.values,h=i.values;if(u.length+c.length===0)for(var f=0;f<l.length;f++){var p=f%a.length,d=f%s.length,v=n(a[2*p],a[2*p+1],s[2*d],s[2*d+1]);l[f]=v.real,h[f]=v.imag}else{var m=this.bufferSync(this.data.get(t.dataId).complexTensors.real),g=this.bufferSync(this.data.get(e.dataId).complexTensors.real),y=function(r){var i=o.indexToLoc(r),f=i.slice(-t.rank);u.forEach((function(t){return f[t]=0}));var p=m.locToIndex(f),d=i.slice(-e.rank);c.forEach((function(t){return d[t]=0}));var v=g.locToIndex(d),y=n(a[2*p],a[2*p+1],s[2*v],s[2*v+1]);l[r]=y.real,h[r]=y.imag};for(f=0;f<l.length;f++)y(f)}return this.complex(o.toTensor(),i.toTensor())},e.prototype.split=function(t,e,n){return Zr(t,e,n)},e.prototype.dispose=function(){},e.prototype.floatPrecision=function(){return 32},e.prototype.epsilon=function(){return 1e-7},e.prototype.cropAndResize=function(t,e,n,r,o,i){for(var a=t.shape,s=a[0],u=a[1],c=a[2],l=a[3],h=e.shape[0],f=r[0],p=r[1],d=Mn([h,f,p,l],"float32"),v=this.readSync(e.dataId),m=this.readSync(n.dataId),g=this.readSync(t.dataId),y=t.strides,b=d.strides,x=0;x<h;x++){var w=4*x,E=v[w],C=v[w+1],_=v[w+2],R=v[w+3],I=m[x];if(!(I>=s))for(var k=f>1?(_-E)*(u-1)/(f-1):0,S=p>1?(R-C)*(c-1)/(p-1):0,A=0;A<f;A++){var O=f>1?E*(u-1)+A*k:.5*(E+_)*(u-1);if(O<0||O>u-1)for(var D=0;D<p;D++)for(var T=0;T<l;T++){var N=T+D*b[2]+A*b[1]+x*b[0];d.values[N]=i}else if("bilinear"===o){var F=Math.floor(O),M=Math.ceil(O),P=O-F;for(D=0;D<p;D++)if((H=p>1?C*(c-1)+D*S:.5*(C+R)*(c-1))<0||H>c-1)for(T=0;T<l;T++)N=T+D*b[2]+A*b[1]+x*b[0],d.values[N]=i;else{var B=Math.floor(H),L=Math.ceil(H),W=H-B;for(T=0;T<l;T++){var U=g[N=T+B*y[2]+F*y[1]+I*y[0]],j=g[N=T+L*y[2]+F*y[1]+I*y[0]],z=g[N=T+B*y[2]+M*y[1]+I*y[0]],V=U+(j-U)*W,G=z+(g[N=T+L*y[2]+M*y[1]+I*y[0]]-z)*W;N=T+D*b[2]+A*b[1]+x*b[0],d.values[N]=V+(G-V)*P}}}else for(D=0;D<p;++D){var H;if((H=p>1?C*(c-1)+D*S:.5*(C+R)*(c-1))<0||H>c-1)for(T=0;T<l;T++)N=T+D*b[2]+A*b[1]+x*b[0],d.values[N]=i;else{var q=Math.round(H),K=Math.round(O);for(T=0;T<l;T++){var X=T+q*y[2]+K*y[1]+I*y[0],$=T+D*b[2]+A*b[1]+x*b[0];d.values[$]=g[X]}}}}}return d.toTensor()},e.prototype.sparseToDense=function(t,e,n,r){var o=vr(0,t,n),i=o.sliceRank,a=o.numUpdates,s=o.sliceSize,u=o.strides,c=o.outputSize;return this.scatter(t,e,n,c,s,a,i,u,r,!1)},e.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=pr(t,e),i=o[0],a=o[1],s=o[2],u=o[3];if(0===a)return rn([],i,t.dtype);for(var c=new lt([a,s],t.dtype),l=this.readSync(e.dataId),h=this.readSync(t.dataId),f=0;f<a;f++){for(var p=[],d=0,v=0;v<r;v++){var m=l[f*r+v];d+=m*u[v],p.push(m)}if(d<0||d>=t.size/s)throw new Error("Invalid indices: "+p+" does not index into "+t.shape);for(var g=0;g<s;g++)c.values[f*s+g]=h[d*s+g]}return c.toTensor().reshape(i)},e.prototype.scatterND=function(t,e,n){var r=vr(0,t,n),o=r.sliceRank,i=r.numUpdates,a=r.sliceSize,s=r.strides,u=r.outputSize,c=an(0);return this.scatter(t,e,n,u,a,i,o,s,c,!0)},e.prototype.fill=function(t,e,n){var r=B(n=n||K(e),I(t));return r.fill(e),Ot.makeTensor(r,t,n,this)},e.prototype.onesLike=function(t){if("string"===t.dtype)throw new Error("onesLike is not supported for string tensors");return this.fill(t.shape,1,t.dtype)},e.prototype.zerosLike=function(t){var e=B(t.dtype,I(t.shape));return this.makeOutput(e,t.shape,t.dtype)},e.prototype.linspace=function(t,e,n){return qr(t,e,n)},e.prototype.scatter=function(t,e,n,r,o,i,a,s,u,c){var l=[r/o,o],h=this.readSync(t.dataId),f=this.readSync(e.dataId);if(0===r)return rn([],n,e.dtype);var p=new lt(l,e.dtype);p.values.fill(this.readSync(u.dataId)[0]);for(var d=0;d<i;d++){for(var v=[],m=0,g=0;g<a;g++){var y=h[d*a+g];v.push(y),m+=y*s[g]}if(m<0||m>=r/o)throw new Error("Invalid indices: "+v+" does not index into "+n);for(var b=0;b<o;b++)c?p.values[m*o+b]+=f[d*o+b]:p.values[m*o+b]=0===e.rank?f[0]:f[d*o+b]}return p.toTensor().reshape(n)},e}(kr);Ot.registerBackend("cpu",(function(){return new Cl}),1),m({kernelName:"Square",backendName:"cpu",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e.x,o=n;wl(r,"square");for(var i=o.data.get(r.dataId).values,a=new Float32Array(i.length),s=0;s<i.length;++s){var u=i[s];a[s]=u*u}return{dataId:o.write(a,r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}}),m({kernelName:"Square",backendName:"webgl",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e.x,o=n,i=new ga(r.shape,"return x * x;");return o.runWebGLProgram(i,[r],r.dtype)}});var _l,Rl=function(t){this.variableNames=["A"];var e=uo(),n=t[0],r=t[1];this.outputShape=t,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+r+".0, "+n+".0);\n\n vec4 values = "+e.texture2D+"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n setOutput(floor(value * 255.0 + 0.5));\n }\n "},Il=function(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var e=uo(),n=t[0],r=t[1];this.outputShape=t,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n\n vec4 result = vec4(0.);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n texC = coords[1] + row;\n depth = coords[2] + col;\n\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+r+".0, "+n+".0);\n vec4 values = "+e.texture2D+"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n result[row * 2 + col] = floor(value * 255.0 + 0.5);\n }\n }\n\n "+e.output+" = result;\n }\n "};m({kernelName:"FromPixels",backendName:"webgl",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=t.attrs,o=e.pixels,i=r.numChannels,a="undefined"!=typeof HTMLVideoElement&&o instanceof HTMLVideoElement,s="undefined"!=typeof HTMLImageElement&&o instanceof HTMLImageElement,u=a?[o.videoWidth,o.videoHeight]:[o.width,o.height],c=u[0],l=u[1],f=[l,c],p=[l,c,i];(s||a)&&(null==_l&&(_l=document.createElement("canvas").getContext("2d")),_l.canvas.width=c,_l.canvas.height=l,_l.drawImage(o,0,0,c,l),o=_l.canvas);var d=n.makeTensorInfo(f,"int32");n.texData.get(d.dataId).usage=Ft.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(d.dataId),o);var v=h().getBool("WEBGL_PACK")?new Il(p):new Rl(p),m=n.runWebGLProgram(v,[d],"int32");return n.disposeData(d.dataId),m}});var kl=function(){function t(){}return t.prototype.fetch=function(t,e){return fetch(t,e)},t.prototype.now=function(){return performance.now()},t.prototype.encode=function(t,e){if("utf-8"!==e&&"utf8"!==e)throw new Error("Browser's encoder only supports utf-8, but got "+e);return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(t)},t.prototype.decode=function(t,e){return new TextDecoder(e).decode(t)},t}();h().get("IS_BROWSER")&&h().setPlatform("browser",new kl);var Sl,Al=function(){function t(){this.util=n(48),this.textEncoder=new this.util.TextEncoder}return t.prototype.fetch=function(t,e){return null!=h().global.fetch?h().global.fetch(t,e):(null==Sl&&(Sl=n(47)),Sl(t,e))},t.prototype.now=function(){var t=r.hrtime();return 1e3*t[0]+t[1]/1e6},t.prototype.encode=function(t,e){if("utf-8"!==e&&"utf8"!==e)throw new Error("Node built-in encoder only supports utf-8, but got "+e);return this.textEncoder.encode(t)},t.prototype.decode=function(t,e){return 0===t.length?"":new this.util.TextDecoder(e).decode(t)},t}();h().get("IS_NODE")&&h().setPlatform("node",new Al);var Ol={float32:4,int32:4,uint16:2,uint8:1,bool:1};function Dl(t,e){for(var n={},r=0,o=function(e){var o=e.name,i=e.dtype,a=e.shape,s=I(a),u=void 0;if("quantization"in e){var c=e.quantization;if("uint8"!==c.dtype&&"uint16"!==c.dtype)throw new Error("Weight "+e.name+" has unknown quantization dtype "+c.dtype+". Supported quantization dtypes are: 'uint8' and 'uint16'.");var l=Ol[c.dtype],h=t.slice(r,r+s*l),f="uint8"===c.dtype?new Uint8Array(h):new Uint16Array(h);if("float32"===i)u=Float32Array.from(f,(function(t){return t*c.scale+c.min}));else{if("int32"!==i)throw new Error("Unsupported dtype in weight '"+o+"': "+i);u=Int32Array.from(f,(function(t){return Math.round(t*c.scale+c.min)}))}r+=s*l}else if("string"===i){var p=I(e.shape);u=[];for(var d=0;d<p;d++){var v=new Uint32Array(t.slice(r,r+4))[0];r+=4;var m=new Uint8Array(t.slice(r,r+v));u.push(m),r+=v}}else{var g=Ol[i];if(h=t.slice(r,r+s*g),"float32"===i)u=new Float32Array(h);else if("int32"===i)u=new Int32Array(h);else{if("bool"!==i)throw new Error("Unsupported dtype in weight '"+o+"': "+i);u=new Uint8Array(h)}r+=s*g}n[o]=rn(u,a,i)},i=0,a=e;i<a.length;i++)o(a[i]);return n}function Tl(t){if(null===t)throw new Error("Invalid input value: "+JSON.stringify(t));var e=0,n=[];t.forEach((function(t){if(e+=t.byteLength,n.push(t.byteLength===t.buffer.byteLength?t:new t.constructor(t)),!(t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+t.constructor.name)}));var r=new Uint8Array(e),o=0;return n.forEach((function(t){r.set(new Uint8Array(t.buffer),o),o+=t.byteLength})),r.buffer}var Nl=void 0!==o&&("undefined"==typeof Blob||"undefined"==typeof atob||"undefined"==typeof btoa);function Fl(t){return Nl?o.byteLength(t):new Blob([t]).size}function Ml(t){var e=0;t.forEach((function(t){e+=t.byteLength}));var n=new Uint8Array(e),r=0;return t.forEach((function(t){n.set(new Uint8Array(t),r),r+=t.byteLength})),n.buffer}function Pl(t){for(t=t.trim();t.endsWith("/");)t=t.slice(0,t.length-1);var e=t.split("/");return e[e.length-1]}function Bl(t){if(t.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:null==t.modelTopology?0:Fl(JSON.stringify(t.modelTopology)),weightSpecsBytes:null==t.weightSpecs?0:Fl(JSON.stringify(t.weightSpecs)),weightDataBytes:null==t.weightData?0:t.weightData.byteLength}}var Ll=function(){function t(){this.saveRouters=[],this.loadRouters=[]}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerSaveRouter=function(e){t.getInstance().saveRouters.push(e)},t.registerLoadRouter=function(e){t.getInstance().loadRouters.push(e)},t.getSaveHandlers=function(e){return t.getHandlers(e,"save")},t.getLoadHandlers=function(e,n){return t.getHandlers(e,"load",n)},t.getHandlers=function(e,n,r){var o=[];return("load"===n?t.getInstance().loadRouters:t.getInstance().saveRouters).forEach((function(t){var n=t(e,r);null!==n&&o.push(n)})),o},t}(),Wl="://",Ul=function(){function t(){this.managers={}}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerManager=function(e,n){E(null!=e,(function(){return"scheme must not be undefined or null."})),e.endsWith(Wl)&&(e=e.slice(0,e.indexOf(Wl))),E(e.length>0,(function(){return"scheme must not be an empty string."}));var r=t.getInstance();E(null==r.managers[e],(function(){return"A model store manager is already registered for scheme '"+e+"'."})),r.managers[e]=n},t.getManager=function(t){var e=this.getInstance().managers[t];if(null==e)throw new Error("Cannot find model manager for scheme '"+t+"'");return e},t.getSchemes=function(){return Object.keys(this.getInstance().managers)},t}();function jl(t){if(-1===t.indexOf(Wl))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+Ul.getSchemes().join(","));return{scheme:t.split(Wl)[0],path:t.split(Wl)[1]}}function zl(t,e,n){return void 0===n&&(n=!1),u(this,void 0,void 0,(function(){var r,o,i,a,s,u,l,h,f;return c(this,(function(c){switch(c.label){case 0:return E(t!==e,(function(){return"Old path and new path are the same: '"+t+"'"})),E((r=Ll.getLoadHandlers(t)).length>0,(function(){return"Copying failed because no load handler is found for source URL "+t+"."})),E(r.length<2,(function(){return"Copying failed because more than one ("+r.length+") load handlers for source URL "+t+"."})),o=r[0],E((i=Ll.getSaveHandlers(e)).length>0,(function(){return"Copying failed because no save handler is found for destination URL "+e+"."})),E(i.length<2,(function(){return"Copying failed because more than one ("+r.length+") save handlers for destination URL "+e+"."})),a=i[0],s=jl(t).scheme,u=jl(t).path,l=s===jl(t).scheme,[4,o.load()];case 1:return h=c.sent(),n&&l?[4,Ul.getManager(s).removeModel(u)]:[3,3];case 2:c.sent(),c.label=3;case 3:return[4,a.save(h)];case 4:return f=c.sent(),!n||l?[3,6]:[4,Ul.getManager(s).removeModel(u)];case 5:c.sent(),c.label=6;case 6:return[2,f.modelArtifactsInfo]}}))}))}var Vl="models_store",Gl="model_info_store";function Hl(){if(!h().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var t=window,e=t.indexedDB||t.mozIndexedDB||t.webkitIndexedDB||t.msIndexedDB||t.shimIndexedDB;if(null==e)throw new Error("The current browser does not appear to support IndexedDB.");return e}function ql(t){var e=t.result;e.createObjectStore(Vl,{keyPath:"modelPath"}),e.createObjectStore(Gl,{keyPath:"modelPath"})}var Kl=function(){function t(t){if(this.indexedDB=Hl(),null==t||!t)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=t}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,t)]}))}))},t.prototype.load=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){return[2,this.databaseAction(this.modelPath)]}))}))},t.prototype.databaseAction=function(t,e){var n=this;return new Promise((function(t,r){var o=n.indexedDB.open("tensorflowjs",1);o.onupgradeneeded=function(){return ql(o)},o.onsuccess=function(){var i=o.result;if(null==e){var a=i.transaction(Vl,"readonly"),s=a.objectStore(Vl).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return i.close(),r(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));t(s.result.modelArtifacts)},s.onerror=function(t){return i.close(),r(s.error)},a.oncomplete=function(){return i.close()}}else{var u,c=Bl(e),l=i.transaction(Gl,"readwrite"),h=l.objectStore(Gl),f=h.put({modelPath:n.modelPath,modelArtifactsInfo:c});f.onsuccess=function(){var o=(u=i.transaction(Vl,"readwrite")).objectStore(Vl).put({modelPath:n.modelPath,modelArtifacts:e,modelArtifactsInfo:c});o.onsuccess=function(){return t({modelArtifactsInfo:c})},o.onerror=function(t){var e=(h=l.objectStore(Gl)).delete(n.modelPath);e.onsuccess=function(){return i.close(),r(o.error)},e.onerror=function(t){return i.close(),r(o.error)}}},f.onerror=function(t){return i.close(),r(f.error)},l.oncomplete=function(){null==u?i.close():u.oncomplete=function(){return i.close()}}}},o.onerror=function(t){return r(o.error)}}))},t.URL_SCHEME="indexeddb://",t}(),Xl=function(t){return h().getBool("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(Kl.URL_SCHEME)?(e=t.slice(Kl.URL_SCHEME.length),new Kl(e)):null;var e};Ll.registerSaveRouter(Xl),Ll.registerLoadRouter(Xl);var $l=function(){function t(){this.indexedDB=Hl()}return t.prototype.listModels=function(){return u(this,void 0,void 0,(function(){var t=this;return c(this,(function(e){return[2,new Promise((function(e,n){var r=t.indexedDB.open("tensorflowjs",1);r.onupgradeneeded=function(){return ql(r)},r.onsuccess=function(){var t=r.result,o=t.transaction(Gl,"readonly"),i=o.objectStore(Gl).getAll();i.onsuccess=function(){for(var t={},n=0,r=i.result;n<r.length;n++){var o=r[n];t[o.modelPath]=o.modelArtifactsInfo}e(t)},i.onerror=function(e){return t.close(),n(i.error)},o.oncomplete=function(){return t.close()}},r.onerror=function(t){return n(r.error)}}))]}))}))},t.prototype.removeModel=function(t){return u(this,void 0,void 0,(function(){var e=this;return c(this,(function(n){var r;return t=(r=t).startsWith(Kl.URL_SCHEME)?r.slice(Kl.URL_SCHEME.length):r,[2,new Promise((function(n,r){var o=e.indexedDB.open("tensorflowjs",1);o.onupgradeneeded=function(){return ql(o)},o.onsuccess=function(){var e,i=o.result,a=i.transaction(Gl,"readwrite"),s=a.objectStore(Gl),u=s.get(t);u.onsuccess=function(){if(null==u.result)return i.close(),r(new Error("Cannot find model with path '"+t+"' in IndexedDB."));var o=s.delete(t),a=function(){var o=(e=i.transaction(Vl,"readwrite")).objectStore(Vl).delete(t);o.onsuccess=function(){return n(u.result.modelArtifactsInfo)},o.onerror=function(t){return r(u.error)}};o.onsuccess=a,o.onerror=function(t){return a(),i.close(),r(u.error)}},u.onerror=function(t){return i.close(),r(u.error)},a.oncomplete=function(){null==e?i.close():e.oncomplete=function(){return i.close()}}},o.onerror=function(t){return r(o.error)}}))]}))}))},t}();if(h().getBool("IS_BROWSER"))try{Ul.registerManager(Kl.URL_SCHEME,new $l)}catch(a){}var Yl="/",Jl="tensorflowjs_models",Ql="info",Zl="model_topology",th="weight_specs",eh="weight_data",nh="model_metadata";function rh(t){return{info:[Jl,t,Ql].join(Yl),topology:[Jl,t,Zl].join(Yl),weightSpecs:[Jl,t,th].join(Yl),weightData:[Jl,t,eh].join(Yl),modelMetadata:[Jl,t,nh].join(Yl)}}function oh(t){var e=t.split(Yl);if(e.length<3)throw new Error("Invalid key format: "+t);return e.slice(1,e.length-1).join(Yl)}var ih=function(){function t(t){if(!h().getBool("IS_BROWSER")||void 0===window.localStorage)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==t||!t)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=t,this.keys=rh(this.modelPath)}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){var e,n,r;return c(this,(function(i){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");e=JSON.stringify(t.modelTopology),n=JSON.stringify(t.weightSpecs),r=Bl(t);try{return this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,e),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,(a=t.weightData,Nl?o.from(a).toString("base64"):btoa(String.fromCharCode.apply(null,new Uint8Array(a))))),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata})),[2,{modelArtifactsInfo:r}]}catch(t){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error("Failed to save model '"+this.modelPath+"' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes="+r.modelTopologyBytes+", weightSpecsBytes="+r.weightSpecsBytes+", weightDataBytes="+r.weightDataBytes+".")}var a;return[2]}))}))},t.prototype.load=function(){return u(this,void 0,void 0,(function(){var t,e,n,r,i,a,s;return c(this,(function(u){if(null==(t=JSON.parse(this.LS.getItem(this.keys.info))))throw new Error("In local storage, there is no model with name '"+this.modelPath+"'");if("JSON"!==t.modelTopologyType)throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");if(e={},null==(n=JSON.parse(this.LS.getItem(this.keys.topology))))throw new Error("In local storage, the topology of model '"+this.modelPath+"' is missing.");if(e.modelTopology=n,null==(r=JSON.parse(this.LS.getItem(this.keys.weightSpecs))))throw new Error("In local storage, the weight specs of model '"+this.modelPath+"' are missing.");if(e.weightSpecs=r,null!=(i=this.LS.getItem(this.keys.modelMetadata))&&(a=JSON.parse(i),e.format=a.format,e.generatedBy=a.generatedBy,e.convertedBy=a.convertedBy,e.userDefinedMetadata=a.userDefinedMetadata),null==(s=this.LS.getItem(this.keys.weightData)))throw new Error("In local storage, the binary weight values of model '"+this.modelPath+"' are missing.");return e.weightData=function(t){if(Nl){var e=o.from(t,"base64");return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}for(var n=atob(t),r=new Uint8Array(n.length),i=0;i<n.length;++i)r.set([n.charCodeAt(i)],i);return r.buffer}(s),[2,e]}))}))},t.URL_SCHEME="localstorage://",t}(),ah=function(t){return h().getBool("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(ih.URL_SCHEME)?(e=t.slice(ih.URL_SCHEME.length),new ih(e)):null;var e};Ll.registerSaveRouter(ah),Ll.registerLoadRouter(ah);var sh=function(){function t(){E(h().getBool("IS_BROWSER"),(function(){return"Current environment is not a web browser"})),E(void 0!==window.localStorage,(function(){return"Current browser does not appear to support localStorage"})),this.LS=window.localStorage}return t.prototype.listModels=function(){return u(this,void 0,void 0,(function(){var t,e,n,r,o,i;return c(this,(function(a){for(t={},e=Jl+Yl,n=Yl+Ql,r=0;r<this.LS.length;++r)(o=this.LS.key(r)).startsWith(e)&&o.endsWith(n)&&(i=oh(o),t[i]=JSON.parse(this.LS.getItem(o)));return[2,t]}))}))},t.prototype.removeModel=function(t){return u(this,void 0,void 0,(function(){var e,n;return c(this,(function(r){var o;if(t=(o=t).startsWith(ih.URL_SCHEME)?o.slice(ih.URL_SCHEME.length):o,e=rh(t),null==this.LS.getItem(e.info))throw new Error("Cannot find model at path '"+t+"'");return n=JSON.parse(this.LS.getItem(e.info)),this.LS.removeItem(e.info),this.LS.removeItem(e.topology),this.LS.removeItem(e.weightSpecs),this.LS.removeItem(e.weightData),[2,n]}))}))},t}();if(h().getBool("IS_BROWSER"))try{Ul.registerManager(ih.URL_SCHEME,new sh)}catch(a){}function uh(t){return new Promise((function(t){return setTimeout(t)})).then(t)}var ch=function(){function t(e){if(!h().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(t.URL_SCHEME)&&(e=e.slice(t.URL_SCHEME.length)),null!=e&&0!==e.length||(e="model"),this.modelTopologyFileName=e+".json",this.weightDataFileName=e+".weights.bin"}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o,i,a;return c(this,(function(s){switch(s.label){case 0:if("undefined"==typeof document)throw new Error("Browser downloads are not supported in this environment since `document` is not present");if(e=window.URL.createObjectURL(new Blob([t.weightData],{type:"application/octet-stream"})),!(t.modelTopology instanceof ArrayBuffer))return[3,1];throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");case 1:return n=[{paths:["./"+this.weightDataFileName],weights:t.weightSpecs}],r={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,weightsManifest:n},o=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),(i=null==this.jsonAnchor?document.createElement("a"):this.jsonAnchor).download=this.modelTopologyFileName,i.href=o,[4,uh((function(){return i.dispatchEvent(new MouseEvent("click"))}))];case 2:return s.sent(),null==t.weightData?[3,4]:((a=null==this.weightDataAnchor?document.createElement("a"):this.weightDataAnchor).download=this.weightDataFileName,a.href=e,[4,uh((function(){return a.dispatchEvent(new MouseEvent("click"))}))]);case 3:s.sent(),s.label=4;case 4:return[2,{modelArtifactsInfo:Bl(t)}]}}))}))},t.URL_SCHEME="downloads://",t}(),lh=function(){function t(t){if(null==t||t.length<1)throw new Error("When calling browserFiles, at least 1 file is required, but received "+t);this.files=t}return t.prototype.load=function(){return u(this,void 0,void 0,(function(){var t,e,n=this;return c(this,(function(r){return t=this.files[0],e=this.files.slice(1),[2,new Promise((function(r,o){var i=new FileReader;i.onload=function(i){var a=JSON.parse(i.target.result),s=a.modelTopology;if(null!=s){0===e.length&&r({modelTopology:s});var u=a.weightsManifest;if(null!=u){var c;try{c=n.checkManifestAndWeightFiles(u,e)}catch(t){return void o(t)}var l=[],h=[],f=[];u.forEach((function(t){t.paths.forEach((function(t){h.push(t),f.push(null)})),l.push.apply(l,t.weights)})),u.forEach((function(t){t.paths.forEach((function(t){var e=new FileReader;e.onload=function(e){var n=e.target.result,o=h.indexOf(t);f[o]=n,-1===f.indexOf(null)&&r({modelTopology:s,weightSpecs:l,weightData:Ml(f),format:a.format,generatedBy:a.generatedBy,convertedBy:a.convertedBy,userDefinedMetadata:a.userDefinedMetadata})},e.onerror=function(e){return o("Failed to weights data from file of path '"+t+"'.")},e.readAsArrayBuffer(c[t])}))}))}else o(new Error("weightManifest field is missing from file "+t.name))}else o(new Error("modelTopology field is missing from file "+t.name))},i.onerror=function(e){return o("Failed to read model topology and weights manifest JSON from file '"+t.name+"'. BrowserFiles supports loading Keras-style tf.Model artifacts only.")},i.readAsText(t)}))]}))}))},t.prototype.checkManifestAndWeightFiles=function(t,e){for(var n=[],r=e.map((function(t){return Pl(t.name)})),o={},i=0,a=t;i<a.length;i++)a[i].paths.forEach((function(t){var i=Pl(t);if(-1!==n.indexOf(i))throw new Error("Duplicate file basename found in weights manifest: '"+i+"'");if(n.push(i),-1===r.indexOf(i))throw new Error("Weight file with basename '"+i+"' is not provided.");o[t]=e[r.indexOf(i)]}));if(n.length!==e.length)throw new Error("Mismatch in the number of files in weights manifest ("+n.length+") and the number of weight files provided ("+e.length+").");return o},t}();function hh(t,e,n,r){!function(t){E(null!=t&&Array.isArray(t)&&t.length>0,(function(){return"promises must be a none empty array"}))}(t),function(t,e){E(t>=0&&t<=1,(function(){return"Progress fraction must be in range [0, 1], but got startFraction "+t})),E(e>=0&&e<=1,(function(){return"Progress fraction must be in range [0, 1], but got endFraction "+e})),E(e>=t,(function(){return"startFraction must be no more than endFraction, but got startFraction "+t+" and endFraction "+e}))}(n=null==n?0:n,r=null==r?1:r);var o=0;return Promise.all(t.map((function(i){return i.then((function(i){var a=n+ ++o/t.length*(r-n);return e(a),i})),i})))}function fh(t,e){return u(this,void 0,void 0,(function(){var n,r,o,i,a,s,u,l,f;return c(this,(function(c){switch(c.label){case 0:return null==e&&(e={}),n=null==e.fetchFunc?h().platform.fetch:e.fetchFunc,r=t.map((function(t){return n(t,e.requestInit,{isBinary:!0})})),o=0,i=.5,null!=e.onProgress?[3,2]:[4,Promise.all(r)];case 1:return a=c.sent(),[3,4];case 2:return[4,hh(r,e.onProgress,o,i)];case 3:a=c.sent(),c.label=4;case 4:return s=a.map((function(t){return t.arrayBuffer()})),u=.5,l=1,null!=e.onProgress?[3,6]:[4,Promise.all(s)];case 5:return f=c.sent(),[3,8];case 6:return[4,hh(s,e.onProgress,u,l)];case 7:f=c.sent(),c.label=8;case 8:return[2,f]}}))}))}function ph(t){var e=this;return function(n,r,o){return void 0===r&&(r=""),u(e,void 0,void 0,(function(){var e,i,a,s,u,l,h,f,p,d;return c(this,(function(c){switch(c.label){case 0:if(e=n.map((function(){return!1})),i={},a=null!=o?o.map((function(){return!1})):[],s=[],n.forEach((function(t,n){var r=0;t.weights.forEach((function(t){var u="quantization"in t?t.quantization.dtype:t.dtype,c=Ol[u]*I(t.shape),l=function(){e[n]=!0,null==i[n]&&(i[n]=[]),i[n].push({manifestEntry:t,groupOffset:r,sizeBytes:c})};null!=o?o.forEach((function(e,n){e===t.name&&(l(),a[n]=!0)})):l(),s.push(t.name),r+=c}))})),!a.every((function(t){return t})))throw u=o.filter((function(t,e){return!a[e]})),new Error("Could not find weights in manifest with names: "+u.join(", ")+". \nManifest JSON has weights with names: "+s.join(", ")+".");return l=e.reduce((function(t,e,n){return e&&t.push(n),t}),[]),h=[],l.forEach((function(t){n[t].paths.forEach((function(t){var e=r+(r.endsWith("/")?"":"/")+t;h.push(e)}))})),[4,t(h)];case 1:return f=c.sent(),p={},d=0,l.forEach((function(t){for(var e=n[t].paths.length,r=0,o=0;o<e;o++)r+=f[d+o].byteLength;for(var a=new ArrayBuffer(r),s=new Uint8Array(a),u=0,c=0;c<e;c++){var l=new Uint8Array(f[d+c]);s.set(l,u),u+=l.byteLength}i[t].forEach((function(t){var e=Dl(a.slice(t.groupOffset,t.groupOffset+t.sizeBytes),[t.manifestEntry]);for(var n in e)p[n]=e[n]})),d+=e})),[2,p]}}))}))}}Ll.registerSaveRouter((function(t){return h().getBool("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(ch.URL_SCHEME)?(void 0===(e=t.slice(ch.URL_SCHEME.length))&&(e="model"),new ch(e)):null;var e}));var dh=function(){function t(t,e){if(this.DEFAULT_METHOD="POST",null==e&&(e={}),this.weightPathPrefix=e.weightPathPrefix,this.onProgress=e.onProgress,null!=e.fetchFunc?(E("function"==typeof e.fetchFunc,(function(){return"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"})),this.fetch=e.fetchFunc):this.fetch=h().platform.fetch,E(null!=t&&t.length>0,(function(){return"URL path for http must not be null, undefined or empty."})),Array.isArray(t)&&E(2===t.length,(function(){return"URL paths for http must have a length of 2, (actual length is "+t.length+")."})),this.path=t,null!=e.requestInit&&null!=e.requestInit.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=e.requestInit||{}}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o;return c(this,(function(i){switch(i.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:t.weightSpecs}],r={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata,weightsManifest:n},e.body.append("model.json",new Blob([JSON.stringify(r)],{type:"application/json"}),"model.json"),null!=t.weightData&&e.body.append("model.weights.bin",new Blob([t.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,this.fetch(this.path,e)];case 1:if((o=i.sent()).ok)return[2,{modelArtifactsInfo:Bl(t),responses:[o]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+o.status+".")}}))}))},t.prototype.load=function(){return u(this,void 0,void 0,(function(){var t,e,n,r,o,i,a,s,u,l,h,f;return c(this,(function(c){switch(c.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(!(t=c.sent()).ok)throw new Error("Request to "+this.path+" failed with status code "+t.status+". Please verify this URL points to the model JSON of the model to load.");c.label=2;case 2:return c.trys.push([2,4,,5]),[4,t.json()];case 3:return e=c.sent(),[3,5];case 4:throw c.sent(),n="Failed to parse model JSON of response from "+this.path+".",this.path.endsWith(".pb")?n+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":n+=" Please make sure the server is serving valid JSON for this request.",new Error(n);case 5:if(r=e.modelTopology,o=e.weightsManifest,i=e.generatedBy,a=e.convertedBy,s=e.format,u=e.userDefinedMetadata,null==r&&null==o)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return null==o?[3,7]:[4,this.loadWeights(o)];case 6:f=c.sent(),l=f[0],h=f[1],c.label=7;case 7:return[2,{modelTopology:r,weightSpecs:l,weightData:h,userDefinedMetadata:u,generatedBy:i,convertedBy:a,format:s}]}}))}))},t.prototype.loadWeights=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o,i,a,s,u,l,h,f;return c(this,(function(c){switch(c.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,n=function(t){var e=t.lastIndexOf("/"),n=t.lastIndexOf("?");return[t.substring(0,e)+"/",n>e?t.substring(n):""]}(e),r=n[0],o=n[1],i=this.weightPathPrefix||r,a=[],s=0,u=t;s<u.length;s++)l=u[s],a.push.apply(a,l.weights);return h=[],t.forEach((function(t){t.paths.forEach((function(t){h.push(i+t+o)}))})),[4,fh(h,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress})];case 1:return f=c.sent(),[2,[a,Ml(f)]]}}))}))},t.URL_SCHEME_REGEX=/^https?:\/\//,t}();function vh(t){return null!=t.match(dh.URL_SCHEME_REGEX)}var mh=function(t,e){return"undefined"==typeof fetch?null:(Array.isArray(t)?t.every((function(t){return vh(t)})):vh(t))?gh(t,{onProgress:e}):null};function gh(t,e){return new dh(t,e)}Ll.registerSaveRouter(mh),Ll.registerLoadRouter(mh);var yh,bh=function(){function t(t){this.modelArtifacts=t}return t.prototype.load=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){return[2,this.modelArtifacts]}))}))},t}(),xh=function(){function t(t){this.saveHandler=t}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){return[2,this.saveHandler(t)]}))}))},t}(),wh=Object.freeze({browserFiles:function(t){return new lh(t)},browserHTTPRequest:function(t,e){return gh(t,e)},concatenateArrayBuffers:Ml,decodeWeights:Dl,encodeWeights:function(t,e){return u(this,void 0,void 0,(function(){var n,r,o,i,a,s=this;return c(this,(function(l){switch(l.label){case 0:for(n=[],r=[],o=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t),i=function(i){var a=o[i],l=Array.isArray(t)?t[i].tensor:t[a];if("float32"!==l.dtype&&"int32"!==l.dtype&&"bool"!==l.dtype&&"string"!==l.dtype)throw new Error("Unsupported dtype in weight '"+a+"': "+l.dtype);var h={name:a,shape:l.shape,dtype:l.dtype};if("string"===l.dtype){var f=new Promise((function(t){return u(s,void 0,void 0,(function(){var e,n,r,o,i,a,s;return c(this,(function(u){switch(u.label){case 0:return[4,l.bytes()];case 1:for(e=u.sent(),n=e.reduce((function(t,e){return t+e.length}),0)+4*e.length,r=new Uint8Array(n),o=0,i=0;i<e.length;i++)a=e[i],s=new Uint8Array(new Uint32Array([a.length]).buffer),r.set(s,o),o+=4,r.set(a,o),o+=a.length;return t(r),[2]}}))}))}));r.push(f)}else r.push(l.data());null!=e&&(h.group=e),n.push(h)},a=0;a<o.length;++a)i(a);return[4,Promise.all(r)];case 1:return[2,{data:Tl(l.sent()),specs:n}]}}))}))},fromMemory:function(t,e,n,r){return 1===arguments.length?null!=t.modelTopology||null!=t.weightSpecs?new bh(t):new bh({modelTopology:t}):new bh({modelTopology:t,weightSpecs:e,weightData:n,trainingConfig:r})},getLoadHandlers:function(t,e){return Ll.getLoadHandlers(t,e)},getModelArtifactsInfoForJSON:Bl,getSaveHandlers:function(t){return Ll.getSaveHandlers(t)},http:gh,isHTTPScheme:vh,loadWeights:function(t,e,n,r){return void 0===e&&(e=""),u(this,void 0,void 0,(function(){return c(this,(function(o){return[2,ph((function(t){return fh(t,{requestInit:r})}))(t,e,n)]}))}))},registerLoadRouter:function(t){return Ll.registerLoadRouter(t)},registerSaveRouter:function(t){return Ll.registerSaveRouter(t)},weightsLoaderFactory:ph,withSaveHandler:function(t){return new xh(t)},copyModel:function(t,e){return u(this,void 0,void 0,(function(){return c(this,(function(n){return[2,zl(t,e,!1)]}))}))},listModels:function(){return u(this,void 0,void 0,(function(){var t,e,n,r,o,i,a;return c(this,(function(s){switch(s.label){case 0:t=Ul.getSchemes(),e={},n=0,r=t,s.label=1;case 1:return n<r.length?(o=r[n],[4,Ul.getManager(o).listModels()]):[3,4];case 2:for(a in i=s.sent())e[o+Wl+a]=i[a];s.label=3;case 3:return n++,[3,1];case 4:return[2,e]}}))}))},moveModel:function(t,e){return u(this,void 0,void 0,(function(){return c(this,(function(n){return[2,zl(t,e,!0)]}))}))},removeModel:function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){return e=jl(t),[2,Ul.getManager(e.scheme).removeModel(e.path)]}))}))}}),Eh=Ze({confusionMatrix_:function(t,e,n){var r=je(t,"labels","confusionMatrix"),o=je(e,"predictions","confusionMatrix");E(null==n||n>0&&Number.isInteger(n),(function(){return"If provided, numClasses must be a positive integer, but got "+n})),E(1===r.rank,(function(){return"Expected the rank of labels to be 1, but got "+r.rank})),E(1===o.rank,(function(){return"Expected the rank of predictions to be 1, but got "+o.rank})),E(r.shape[0]===o.shape[0],(function(){return"Mismatch in the number of examples: "+r.shape[0]+" vs. "+o.shape[0]+". Labels and predictions should have the same number of elements."})),E(n>0&&Number.isInteger(n),(function(){return"numClasses is required to be a positive integer, but got "+n}));var i=Hn(r.asType("int32"),n),a=Hn(o.asType("int32"),n);return i.transpose().matMul(a).asType("int32")}}),Ch=(Object.freeze({confusionMatrix:Eh}),Ze({fromPixels_:function(t,e){if(void 0===e&&(e=3),e>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(null==t)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var n=!1,r=!1,o=!1,i=!1,a=!1;if(t.data instanceof Uint8Array)n=!0;else if("undefined"!=typeof ImageData&&t instanceof ImageData)r=!0;else if("undefined"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement)o=!0;else if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement)i=!0;else{if(null==t.getContext)throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was "+t.constructor.name);a=!0}if(o&&o&&t.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the <video> element.");if(null!=d("FromPixels",Ot.backendName))return Ot.runKernel("FromPixels",{pixels:t},{numChannels:e});var s,u,c=o?[t.videoWidth,t.videoHeight]:[t.width,t.height],l=c[0],h=c[1];if(a?s=t.getContext("2d").getImageData(0,0,l,h).data:r||n?s=t.data:(i||o)&&(null==yh&&(yh=document.createElement("canvas").getContext("2d")),yh.canvas.width=l,yh.canvas.height=h,yh.drawImage(t,0,0,l,h),s=yh.getImageData(0,0,l,h).data),4===e)u=new Int32Array(s);else{var f=l*h;u=new Int32Array(f*e);for(var p=0;p<f;p++)for(var v=0;v<e;++v)u[p*e+v]=s[4*p+v]}return cn(u,[h,l,e],"int32")}})),_h=Object.freeze({toPixels:function(t,e){return u(this,void 0,void 0,(function(){var n,r,o,i,a,s,u,l,h,f,p,d,v,m,g,y,b,x,w,E,C,_,R;return c(this,(function(c){switch(c.label){case 0:if(n=je(t,"img","toPixels"),t instanceof dt||(n=n.toInt()),2!==n.rank&&3!==n.rank)throw new Error("toPixels only supports rank 2 or 3 tensors, got rank "+n.rank+".");if(r=n.shape.slice(0,2),o=r[0],i=r[1],(a=2===n.rank?1:n.shape[2])>4||2===a)throw new Error("toPixels only supports depth of size 1, 3 or 4 but got "+a);return[4,n.data()];case 1:return s=c.sent(),u=n.min(),l=n.max(),[4,Promise.all([u.data(),l.data()])];case 2:if(h=c.sent(),f=h[0],p=h[1],d=f[0],v=p[0],u.dispose(),l.dispose(),"float32"===n.dtype){if(d<0||v>1)throw new Error("Tensor values for a float32 Tensor must be in the range [0 - 1] but got range ["+d+" - "+v+"].")}else{if("int32"!==n.dtype)throw new Error("Unsupported type for toPixels: "+n.dtype+". Please use float32 or int32 tensors.");if(d<0||v>255)throw new Error("Tensor values for a int32 Tensor must be in the range [0 - 255] but got range ["+d+" - "+v+"].")}for(m="float32"===n.dtype?255:1,g=new Uint8ClampedArray(i*o*4),y=0;y<o*i;++y)b=void 0,x=void 0,w=void 0,E=void 0,1===a?(b=s[y]*m,x=s[y]*m,w=s[y]*m,E=255):3===a?(b=s[3*y]*m,x=s[3*y+1]*m,w=s[3*y+2]*m,E=255):4===a&&(b=s[4*y]*m,x=s[4*y+1]*m,w=s[4*y+2]*m,E=s[4*y+3]*m),g[0+(C=4*y)]=Math.round(b),g[C+1]=Math.round(x),g[C+2]=Math.round(w),g[C+3]=Math.round(E);return null!=e&&(e.width=i,e.height=o,_=e.getContext("2d"),R=new ImageData(g,i,o),_.putImageData(R,0,0)),n!==t&&n.dispose(),[2,g]}}))}))},fromPixels:Ch}),Rh=function(){function t(){}return t.prototype.getClassName=function(){return this.constructor.className},t.fromConfig=function(t,e){return new t(e)},t}(),Ih=function(){function t(){this.classNameMap={}}return t.getMap=function(){return null==t.instance&&(t.instance=new t),t.instance},t.register=function(e){t.getMap().classNameMap[e.className]=[e,e.fromConfig]},t}();function kh(t){E(null!=t.className,(function(){return"Class being registered does not have the static className property defined."})),E("string"==typeof t.className,(function(){return"className is required to be a string, but got type "+typeof t.className})),E(t.className.length>0,(function(){return"Class being registered has an empty-string as its className, which is disallowed."})),Ih.register(t)}Object.freeze({Serializable:Rh,SerializationMap:Ih,registerClass:kh});function Sh(){return 32===Ot.backend.floatPrecision()?.001:.1}function Ah(t,e,n){var r=!0;if((j(t)||j(e))&&(r=!1),j(t)&&j(e)&&(r=!0),r){var o=t.constructor.name,i=e.constructor.name;if(o!==i)throw new Error("Arrays are of different type. Actual: "+o+". Expected: "+i)}if(Array.isArray(t)&&Array.isArray(e)){var a=We(t),s=We(e);if(!k(a,s))throw new Error("Arrays have different shapes. Actual: ["+a+"]. Expected: ["+s+"]")}var u=j(t)?t:R(t),c=j(e)?e:R(e);if(u.length!==c.length)throw new Error("Arrays have different lengths actual: "+u.length+" vs expected: "+c.length+".\nActual: "+u+".\nExpected: "+c+".");for(var l=0;l<c.length;++l){var h=u[l],f=c[l];if(!n(h,f))throw new Error("Arrays differ: actual["+l+"] = "+h+", expected["+l+"] = "+f+".\nActual: "+u+".\nExpected: "+c+".")}}function Oh(t,e,n){return!isFinite(t)&&!isFinite(e)||!(isNaN(t)||isNaN(e)||Math.abs(t-e)>n)}Object.freeze({TEST_EPSILON_FLOAT16:.1,expectArraysClose:function(t,e,n){return null==n&&(n=Sh()),Ah(t,e,(function(t,e){return Oh(t,e,n)}))},testEpsilon:Sh,expectPromiseToFail:function(t,e){t().then((function(){return e.fail()}),(function(){return e()}))},expectArraysEqual:function(t,e){var n="string"==typeof e||"number"==typeof e||"boolean"==typeof e?[e]:e;return G(t)||G(t[0])||G(e)||G(e[0])?Ah(t,n,(function(t,e){return t==e})):Ah(t,e,(function(t,e){return Oh(t,e,0)}))},expectNumbersClose:function(t,e,n){if(null==n&&(n=Sh()),!Oh(t,e,n))throw new Error("Numbers differ: actual === "+t+", expected === "+e)},expectValuesInRange:function(t,e,n){for(var r=0;r<t.length;r++)if(t[r]<e||t[r]>n)throw new Error("Value out of range:"+t[r]+" low: "+e+", high: "+n)},expectArrayBuffersEqual:function(t,e){expect(new Float32Array(t)).toEqual(new Float32Array(e))}}),Object.freeze({gpgpu_util:Oi,webgl_util:Ne,forceHalfFloat:function(){h().set("WEBGL_FORCE_F16_TEXTURES",!0)},MathBackendWebGL:Pa,setWebGLContext:Lt,GPGPUContext:Di});var Dh=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return s(e,t),e.prototype.minimize=function(t,e,n){void 0===e&&(e=!1);var r=this.computeGradients(t,n),o=r.value,i=r.grads;if(null!=n){var a=n.map((function(t){return{name:t.name,tensor:i[t.name]}}));this.applyGradients(a)}else this.applyGradients(i);return Be(i),e?o:(o.dispose(),null)},Object.defineProperty(e.prototype,"iterations",{get:function(){return null==this.iterations_&&(this.iterations_=0),this.iterations_},enumerable:!0,configurable:!0}),e.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},e.prototype.computeGradients=function(t,e){return function(t,e){E(X(t),(function(){return"The f passed in variableGrads(f) must be a function"})),E(null==e||Array.isArray(e)&&e.every((function(t){return t instanceof xt})),(function(){return"The varList passed in variableGrads(f, varList) must be an array of variables"}));var n=null!=e;if(!n)for(var r in e=[],Ot.registeredVariables)e.push(Ot.registeredVariables[r]);var o=n?e.filter((function(t){return!t.trainable})):null,i=e.length;E((e=e.filter((function(t){return t.trainable}))).length>0,(function(){return"variableGrads() expects at least one of the input variables to be trainable, but none of the "+i+" variables is trainable."}));var a=Ot.gradients(t,e,null,!0),s=a.value,u=a.grads;E(u.some((function(t){return null!=t})),(function(){return"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."})),E(0===s.rank,(function(){return"The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+s.rank+" tensor"}));var c={};return e.forEach((function(t,e){null!=u[e]&&(c[t.name]=u[e])})),null!=o&&o.forEach((function(t){return c[t.name]=null})),{value:s,grads:c}}(t,e)},e.prototype.dispose=function(){null!=this.iterations_&&Be(this.iterations_)},e.prototype.saveIterations=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){return null==this.iterations_&&(this.iterations_=0),[2,{name:"iter",tensor:an(this.iterations_,"int32")}]}))}))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){throw new Error("getWeights() is not implemented for this optimizer yet.")}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(t){throw new Error("setWeights() is not implemented for this optimizer class "+this.getClassName())}))}))},e.prototype.extractIterations=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){switch(n.label){case 0:return e=this,[4,t[0].tensor.data()];case 1:return e.iterations_=n.sent()[0],[2,t.slice(1)]}}))}))},e}(Rh);Object.defineProperty(Dh,Symbol.hasInstance,{value:function(t){return null!=t.minimize&&null!=t.computeGradients&&null!=t.applyGradients}});var Th=function(t){function e(e,n,r){void 0===r&&(r=null);var o=t.call(this)||this;return o.learningRate=e,o.rho=n,o.epsilon=r,o.accumulatedGrads=[],o.accumulatedUpdates=[],null==r&&(o.epsilon=Ot.backend.epsilon()),o}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Ot.registeredVariables[n];null==e.accumulatedGrads[r]&&(e.accumulatedGrads[r]={originalName:n+"/accum_grad",variable:Pe((function(){return mn(o).variable(!1)}))}),null==e.accumulatedUpdates[r]&&(e.accumulatedUpdates[r]={originalName:n+"/accum_var",variable:Pe((function(){return mn(o).variable(!1)}))});var i=Array.isArray(t)?t[r].tensor:t[n];if(null!=i){var a=e.accumulatedGrads[r].variable,s=e.accumulatedUpdates[r].variable;Pe((function(){var t=a.mul(e.rho).add(i.square().mul(1-e.rho)),n=s.add(e.epsilon).sqrt().div(a.add(e.epsilon).sqrt()).mul(i),r=s.mul(e.rho).add(n.square().mul(1-e.rho));a.assign(t),s.assign(r);var u=n.mul(-e.learningRate).add(o);o.assign(u)}))}})),this.incrementIterations()},e.prototype.dispose=function(){null!=this.accumulatedUpdates&&(Be(this.accumulatedGrads.map((function(t){return t.variable}))),Be(this.accumulatedUpdates.map((function(t){return t.variable}))))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return t=this.accumulatedGrads.concat(this.accumulatedUpdates),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(t)];case 1:return t=n.sent(),e=t.length/2,this.accumulatedGrads=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedUpdates=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},e.fromConfig=function(t,e){return new t(e.learningRate,e.rho,e.epsilon)},e.className="Adadelta",e}(Dh);kh(Th);var Nh=function(t){function e(e,n){void 0===n&&(n=.1);var r=t.call(this)||this;return r.learningRate=e,r.initialAccumulatorValue=n,r.accumulatedGrads=[],r}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Ot.registeredVariables[n];null==e.accumulatedGrads[r]&&(e.accumulatedGrads[r]={originalName:n+"/accumulator",variable:Pe((function(){return pn(o.shape,e.initialAccumulatorValue).variable(!1)}))});var i=Array.isArray(t)?t[r].tensor:t[n];if(null!=i){var a=e.accumulatedGrads[r].variable;Pe((function(){var t=a.add(i.square());a.assign(t);var n=i.div(t.add(Ot.backend.epsilon()).sqrt()).mul(-e.learningRate).add(o);o.assign(n)}))}})),this.incrementIterations()},e.prototype.dispose=function(){null!=this.accumulatedGrads&&Be(this.accumulatedGrads.map((function(t){return t.variable})))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(this.accumulatedGrads.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:return t=e.sent(),this.accumulatedGrads=t.map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},e.fromConfig=function(t,e){return new t(e.learningRate,e.initialAccumulatorValue)},e.className="Adagrad",e}(Dh);kh(Nh);var Fh=function(t){function e(e,n,r,o){void 0===o&&(o=null);var i=t.call(this)||this;return i.learningRate=e,i.beta1=n,i.beta2=r,i.epsilon=o,i.accumulatedFirstMoment=[],i.accumulatedSecondMoment=[],Pe((function(){i.accBeta1=an(n).variable(),i.accBeta2=an(r).variable()})),null==o&&(i.epsilon=Ot.backend.epsilon()),i}return s(e,t),e.prototype.applyGradients=function(t){var e=this,n=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t);Pe((function(){var r=ou(1,e.accBeta1),o=ou(1,e.accBeta2);n.forEach((function(n,i){var a=Ot.registeredVariables[n];null==e.accumulatedFirstMoment[i]&&(e.accumulatedFirstMoment[i]={originalName:n+"/m",variable:Pe((function(){return mn(a).variable(!1)}))}),null==e.accumulatedSecondMoment[i]&&(e.accumulatedSecondMoment[i]={originalName:n+"/v",variable:Pe((function(){return mn(a).variable(!1)}))});var s=Array.isArray(t)?t[i].tensor:t[n];if(null!=s){var u=e.accumulatedFirstMoment[i].variable,c=e.accumulatedSecondMoment[i].variable,l=u.mul(e.beta1).add(s.mul(1-e.beta1)),h=c.mul(e.beta2).add(s.square().mul(1-e.beta2)),f=l.div(r),p=h.div(o);u.assign(l),c.assign(h);var d=f.div(p.sqrt().add(e.epsilon)).mul(-e.learningRate).add(a);a.assign(d)}})),e.accBeta1.assign(e.accBeta1.mul(e.beta1)),e.accBeta2.assign(e.accBeta2.mul(e.beta2))})),this.incrementIterations()},e.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&Be(this.accumulatedFirstMoment.map((function(t){return t.variable}))),null!=this.accumulatedSecondMoment&&Be(this.accumulatedSecondMoment.map((function(t){return t.variable})))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return t=this.accumulatedFirstMoment.concat(this.accumulatedSecondMoment),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){var e,n=this;return c(this,(function(r){switch(r.label){case 0:return[4,this.extractIterations(t)];case 1:return t=r.sent(),Pe((function(){n.accBeta1.assign(tu(n.beta1,n.iterations_+1)),n.accBeta2.assign(tu(n.beta2,n.iterations_+1))})),e=t.length/2,this.accumulatedFirstMoment=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedSecondMoment=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},e.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon)},e.className="Adam",e}(Dh);kh(Fh);var Mh=function(t){function e(e,n,r,o,i){void 0===o&&(o=null),void 0===i&&(i=0);var a=t.call(this)||this;return a.learningRate=e,a.beta1=n,a.beta2=r,a.epsilon=o,a.decay=i,a.accumulatedFirstMoment=[],a.accumulatedWeightedInfNorm=[],Pe((function(){a.iteration=an(0).variable(),a.accBeta1=an(n).variable()})),null==o&&(a.epsilon=Ot.backend.epsilon()),a}return s(e,t),e.prototype.applyGradients=function(t){var e=this,n=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t);Pe((function(){var r=ou(1,e.accBeta1),o=zs(-e.learningRate,e.iteration.mul(e.decay).add(1));n.forEach((function(n,i){var a=Ot.registeredVariables[n];null==e.accumulatedFirstMoment[i]&&(e.accumulatedFirstMoment[i]={originalName:n+"/m",variable:mn(a).variable(!1)}),null==e.accumulatedWeightedInfNorm[i]&&(e.accumulatedWeightedInfNorm[i]={originalName:n+"/v",variable:mn(a).variable(!1)});var s=Array.isArray(t)?t[i].tensor:t[n];if(null!=s){var u=e.accumulatedFirstMoment[i].variable,c=e.accumulatedWeightedInfNorm[i].variable,l=u.mul(e.beta1).add(s.mul(1-e.beta1)),h=c.mul(e.beta2),f=s.abs(),p=h.maximum(f);u.assign(l),c.assign(p);var d=o.div(r).mul(l.div(p.add(e.epsilon))).add(a);a.assign(d)}})),e.iteration.assign(e.iteration.add(1)),e.accBeta1.assign(e.accBeta1.mul(e.beta1))})),this.incrementIterations()},e.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&Be(this.accumulatedFirstMoment.map((function(t){return t.variable}))),null!=this.accumulatedWeightedInfNorm&&Be(this.accumulatedWeightedInfNorm.map((function(t){return t.variable})))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){throw new Error("getWeights() is not implemented for Adamax yet.")}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(t){throw new Error("setWeights() is not implemented for Adamax yet.")}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},e.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon,e.decay)},e.className="Adamax",e}(Dh);kh(Mh);var Ph=function(t){function e(e){var n=t.call(this)||this;return n.learningRate=e,n.setLearningRate(e),n}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Array.isArray(t)?t[r].tensor:t[n];if(null!=o){var i=Ot.registeredVariables[n];Pe((function(){var t=e.c.mul(o).add(i);i.assign(t)}))}})),this.incrementIterations()},e.prototype.setLearningRate=function(t){this.learningRate=t,null!=this.c&&this.c.dispose(),this.c=function(t){return Ot.keep(t)}(an(-t))},e.prototype.dispose=function(){this.c.dispose()},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()]]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:if(0!==(t=e.sent()).length)throw new Error("SGD optimizer does not have settable weights.");return[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate}},e.fromConfig=function(t,e){return new t(e.learningRate)},e.className="SGD",e}(Dh);kh(Ph);var Bh=function(t){function e(e,n,r){void 0===r&&(r=!1);var o=t.call(this,e)||this;return o.learningRate=e,o.momentum=n,o.useNesterov=r,o.accumulations=[],o.m=an(o.momentum),o}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Ot.registeredVariables[n];null==e.accumulations[r]&&(e.accumulations[r]={originalName:n+"/momentum",variable:Pe((function(){return mn(o).variable(!1)}))});var i=e.accumulations[r].variable,a=Array.isArray(t)?t[r].tensor:t[n];null!=a&&Pe((function(){var t,n=e.m.mul(i).add(a);t=e.useNesterov?e.c.mul(a.add(n.mul(e.m))).add(o):e.c.mul(n).add(o),i.assign(n),o.assign(t)}))})),this.incrementIterations()},e.prototype.dispose=function(){this.m.dispose(),null!=this.accumulations&&Be(this.accumulations.map((function(t){return t.variable})))},e.prototype.setMomentum=function(t){this.momentum=t},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(this.accumulations.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:return t=e.sent(),this.accumulations=t.map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},e.fromConfig=function(t,e){return new t(e.learningRate,e.momentum,e.useNesterov)},e.className="Momentum",e}(Ph);kh(Bh);var Lh=function(t){function e(e,n,r,o,i){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===o&&(o=null),void 0===i&&(i=!1);var a=t.call(this)||this;return a.learningRate=e,a.decay=n,a.momentum=r,a.epsilon=o,a.accumulatedMeanSquares=[],a.accumulatedMoments=[],a.accumulatedMeanGrads=[],a.centered=i,null==o&&(a.epsilon=Ot.backend.epsilon()),a}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Ot.registeredVariables[n];null==e.accumulatedMeanSquares[r]&&(e.accumulatedMeanSquares[r]={originalName:n+"/rms",variable:Pe((function(){return mn(o).variable(!1)}))}),null==e.accumulatedMoments[r]&&(e.accumulatedMoments[r]={originalName:n+"/momentum",variable:Pe((function(){return mn(o).variable(!1)}))}),null==e.accumulatedMeanGrads[r]&&e.centered&&(e.accumulatedMeanGrads[r]={originalName:n+"/mg",variable:Pe((function(){return mn(o).variable(!1)}))});var i=Array.isArray(t)?t[r].tensor:t[n];if(null!=i){var a=e.accumulatedMeanSquares[r].variable,s=e.accumulatedMoments[r].variable;Pe((function(){var t=a.mul(e.decay).add(i.square().mul(1-e.decay));if(e.centered){var n=e.accumulatedMeanGrads[r].variable,u=n.mul(e.decay).add(i.mul(1-e.decay)),c=s.mul(e.momentum).add(i.mul(e.learningRate).div(t.sub(u.square().add(e.epsilon)).sqrt()));a.assign(t),n.assign(u),s.assign(c);var l=o.sub(c);o.assign(l)}else{var h=a.mul(e.decay).add(i.square().mul(1-e.decay));c=s.mul(e.momentum).add(i.mul(e.learningRate).div(h.add(e.epsilon).sqrt())),a.assign(h),s.assign(c),l=o.sub(c),o.assign(l)}}))}})),this.incrementIterations()},e.prototype.dispose=function(){null!=this.accumulatedMeanSquares&&Be(this.accumulatedMeanSquares.map((function(t){return t.variable}))),null!=this.accumulatedMeanGrads&&this.centered&&Be(this.accumulatedMeanGrads.map((function(t){return t.variable}))),null!=this.accumulatedMoments&&Be(this.accumulatedMoments.map((function(t){return t.variable})))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return t=this.accumulatedMeanSquares.concat(this.accumulatedMoments),this.centered&&t.push.apply(t,this.accumulatedMeanGrads),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(t)];case 1:return t=n.sent(),e=this.centered?t.length/3:t.length/2,this.accumulatedMeanSquares=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedMoments=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.centered&&(this.accumulatedMeanGrads=t.slice(2*e,3*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}}))),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},e.fromConfig=function(t,e){return new t(e.learningRate,e.decay,e.momentum,e.epsilon,e.centered)},e.className="RMSProp",e}(Dh);kh(Lh);var Wh=function(){function t(){}return t.sgd=function(t){return new Ph(t)},t.momentum=function(t,e,n){return void 0===n&&(n=!1),new Bh(t,e,n)},t.rmsprop=function(t,e,n,r,o){return void 0===e&&(e=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===o&&(o=!1),new Lh(t,e,n,r,o)},t.adam=function(t,e,n,r){return void 0===t&&(t=.001),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new Fh(t,e,n,r)},t.adadelta=function(t,e,n){return void 0===t&&(t=.001),void 0===e&&(e=.95),void 0===n&&(n=null),new Th(t,e,n)},t.adamax=function(t,e,n,r,o){return void 0===t&&(t=.002),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===o&&(o=0),new Mh(t,e,n,r,o)},t.adagrad=function(t,e){return void 0===e&&(e=.1),new Nh(t,e)},t}();Wh.sgd,Wh.momentum,Wh.adadelta,Wh.adagrad,Wh.rmsprop,Wh.adamax,Wh.adam,"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame;ft=xl}).call(this,n(5),n(16),n(40).Buffer,n(44).setImmediate)},function(t,e,n){"use strict";n.d(e,"c",(function(){return o})),n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return a})),n.d(e,"d",(function(){return s})),n.d(e,"e",(function(){return u}));var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function o(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};function a(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(e){i(e)}}function s(t){try{u(r.throw(t))}catch(e){i(e)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,s)}u((r=r.apply(t,e||[])).next())}))}function s(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(s){i=[6,s],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}function u(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var r=Array(t),o=0;for(e=0;e<n;e++)for(var i=arguments[e],a=0,s=i.length;a<s;a++,o++)r[o]=i[a];return r}},function(t,e){t.exports=require("react")},function(t,e,n){t.exports=n(38)()},function(t,e,n){var r=n(33),o=n(34),i=n(35),a=n(37);t.exports=function(t,e){return r(t)||o(t,e)||i(t,e)||a()}},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}t.exports=n},function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e){function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}t.exports=function(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}},function(t,e){function n(e){return t.exports=n=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},n(e)}t.exports=n},function(t,e,n){var r=n(52);t.exports=function(t,e){if(null==t)return{};var n,o,i=r(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(o=0;o<a.length;o++)n=a[o],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(i[n]=t[n])}return i}},function(t,e,n){t.exports={container:"tUn9t5uXBW0G4uOuaTOqA",baseCounter:"_3JRt0WWENWRFRoNQBy35fI",activeCounter:"_1fIU1q1Zn5Q8C9xn0Ir-dW",inactiveCounter:"_2mwc0c5WhPOqV9wJk9VkGV",baseIcon:"_2_g_DOxWE8kqzFMzKyK37t",activeIcon:"_3mr2-PKNrqmyEJlyzqUVvx",inactiveIcon:"_1RzxXrRIq2Q9MbP1nZJdM9"}},function(t,e,n){t.exports={container:"_1BAMDen_YLcifIe4T1Qv-_",overlay:"_1e9w5ipw5j_XUcEv_CJUlO",outline:"_2W6OS2MmM9HFQCXWdJ8ASr",portraitCamera:"_2R1kfrIDlFyYzv1nDgZcTN",landscapeCamera:"TwXhRfznW400Ln2BpPUbd"}},function(t,e,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e<arguments.length;e++){var r=arguments[e];if(r){var i=typeof r;if("string"===i||"number"===i)t.push(r);else if(Array.isArray(r)&&r.length){var a=o.apply(null,r);a&&t.push(a)}else if("object"===i)for(var s in r)n.call(r,s)&&r[s]&&t.push(s)}}return t.join(" ")}t.exports?(o.default=o,t.exports=o):void 0===(r=function(){return o}.apply(e,[]))||(t.exports=r)}()},function(t,e,n){"use strict";function r(t){var e="";if(!t)try{t=n(!function(){var t=new Error("Cannot find module 'fs'");throw t.code="MODULE_NOT_FOUND",t}())}catch(r){e=r.toString()}return{readFile:t?function(e){return new Promise((function(n,r){t.readFile(e,(function(t,e){return t?r(t):n(e)}))}))}:function(){throw new Error("readFile - failed to require fs in nodejs environment with error: "+e)}}}n.d(e,"a",(function(){return r}))},function(t,e,n){var r=n(49);t.exports=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&r(t,e)}},function(t,e,n){var r=n(50),o=n(51);t.exports=function(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?o(t):e}},function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var u,c=[],l=!1,h=-1;function f(){l&&u&&(l=!1,u.length?c=u.concat(c):h=-1,c.length&&p())}function p(){if(!l){var t=s(f);l=!0;for(var e=c.length;e;){for(u=c,c=[];++h<e;)u&&u[h].run();h=-1,e=c.length}u=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function v(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new d(t,e)),1!==c.length||l||s(p)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=v,o.addListener=v,o.once=v,o.off=v,o.removeListener=v,o.removeAllListeners=v,o.emit=v,o.prependListener=v,o.prependOnceListener=v,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(t,e,n){t.exports={container:"_3UWaUYYyQc5VbvW6HKIRHv",landscape:"_2degJvmXASrj_NvC6CXWqN"}},function(t,e,n){t.exports={button:"_1Tg9slZrrhpko8KnDP7C6X",icon:"_1Fm1wq10kVJMKVxtWwkZex"}},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return i}));var r=n(1),o=n(13);function i(){var e=t.Canvas||t.HTMLCanvasElement,n=t.Image||t.HTMLImageElement,i=t.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},a=Object(o.a)();return Object(r.a)({Canvas:e||function(){},CanvasRenderingContext2D:t.CanvasRenderingContext2D||function(){},Image:n||function(){},ImageData:t.ImageData||function(){},Video:t.HTMLVideoElement||function(){},createCanvasElement:function(){if(e)return new e;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement:function(){if(n)return new n;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch:i},a)}}).call(this,n(5))},function(t,e,n){"use strict";(function(r,o){function i(){return"object"==typeof r&&void 0!==t&&void 0!==o&&!!o.version}n.d(e,"a",(function(){return i}))}).call(this,n(5),n(16))},function(t,e,n){t.exports={cameraContainer:"_3Ums-OZ0qWebWj0SZbqYjT",moduleContainer:"IOOd58zY5WSnpJo3-6iVV"}},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}},function(t,e,n){t.exports={container:"_309CoDF8kNC59Cacci2i3u"}},function(t,e,n){t.exports={canvas:"vNKPZsVtPwMoITxtjuu9V"}},function(t,e,n){var r;r=function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/react-webcam.tsx")}({"./src/react-webcam.tsx":function(t,e,n){"use strict";n.r(e);var r,o=n("react"),i=(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),a=function(){return(a=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},s=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]])}return n};function u(){return!(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)}"undefined"!=typeof window&&(void 0===navigator.mediaDevices&&(navigator.mediaDevices={}),void 0===navigator.mediaDevices.getUserMedia&&(navigator.mediaDevices.getUserMedia=function(t){var e=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;return e?new Promise((function(n,r){e.call(navigator,t,n,r)})):Promise.reject(new Error("getUserMedia is not implemented in this browser"))}));var c=function(t){function e(e){var n=t.call(this,e)||this;return n.canvas=null,n.ctx=null,n.state={hasUserMedia:!1},n}return i(e,t),e.prototype.componentDidMount=function(){var t=this.state,n=this.props;u()?(e.mountedInstances.push(this),t.hasUserMedia||e.userMediaRequested||this.requestUserMedia()):n.onUserMediaError("getUserMedia not supported")},e.prototype.componentDidUpdate=function(t){var e=this.props;if(u()){var n=JSON.stringify(t.audioConstraints)!==JSON.stringify(e.audioConstraints),r=JSON.stringify(t.videoConstraints)!==JSON.stringify(e.videoConstraints),o=t.minScreenshotWidth!==e.minScreenshotWidth,i=t.minScreenshotHeight!==e.minScreenshotHeight;(r||o||i)&&(this.canvas=null,this.ctx=null),(n||r)&&this.requestUserMedia()}else e.onUserMediaError("getUserMedia not supported")},e.prototype.componentWillUnmount=function(){var t=this.state,n=e.mountedInstances.indexOf(this);e.mountedInstances.splice(n,1),e.userMediaRequested=!1,0===e.mountedInstances.length&&t.hasUserMedia&&(this.stream&&(this.stream.getVideoTracks&&this.stream.getAudioTracks?(this.stream.getVideoTracks().map((function(t){return t.stop()})),this.stream.getAudioTracks().map((function(t){return t.stop()}))):this.stream.stop()),t.src&&window.URL.revokeObjectURL(t.src))},e.prototype.getScreenshot=function(){var t=this.state,e=this.props;if(!t.hasUserMedia)return null;var n=this.getCanvas();return n&&n.toDataURL(e.screenshotFormat,e.screenshotQuality)},e.prototype.getCanvas=function(){var t=this.state,e=this.props;if(!this.video)return null;if(!t.hasUserMedia||!this.video.videoHeight)return null;if(!this.ctx){var n=this.video.videoWidth,r=this.video.videoHeight;if(!this.props.forceScreenshotSourceSize){var o=n/r;r=(n=e.minScreenshotWidth||this.video.clientWidth)/o,e.minScreenshotHeight&&r<e.minScreenshotHeight&&(n=(r=e.minScreenshotHeight)*o)}this.canvas=document.createElement("canvas"),this.canvas.width=n,this.canvas.height=r,this.ctx=this.canvas.getContext("2d")}var i=this.ctx,a=this.canvas;return i&&a&&(e.mirrored&&(i.translate(a.width,0),i.scale(-1,1)),i.imageSmoothingEnabled=e.imageSmoothing,i.drawImage(this.video,0,0,a.width,a.height),e.mirrored&&(i.scale(-1,1),i.translate(-a.width,0))),a},e.prototype.requestUserMedia=function(){var t=this.props,n=function(n,r){var o={video:void 0===r||r};t.audio&&(o.audio=void 0===n||n),navigator.mediaDevices.getUserMedia(o).then((function(t){e.mountedInstances.forEach((function(e){return e.handleUserMedia(null,t)}))})).catch((function(t){e.mountedInstances.forEach((function(e){return e.handleUserMedia(t)}))}))};if("mediaDevices"in navigator)n(t.audioConstraints,t.videoConstraints);else{var r=function(t){return{optional:[{sourceId:t}]}},o=function(t){var e=t.deviceId;return"string"==typeof e?e:Array.isArray(e)&&e.length>0?e[0]:"object"==typeof e&&e.ideal?e.ideal:null};MediaStreamTrack.getSources((function(e){var i=null,a=null;e.forEach((function(t){"audio"===t.kind?i=t.id:"video"===t.kind&&(a=t.id)}));var s=o(t.audioConstraints);s&&(i=s);var u=o(t.videoConstraints);u&&(a=u),n(r(i),r(a))}))}e.userMediaRequested=!0},e.prototype.handleUserMedia=function(t,e){var n=this.props;if(t||!e)return this.setState({hasUserMedia:!1}),void n.onUserMediaError(t);this.stream=e;try{this.video&&(this.video.srcObject=e),this.setState({hasUserMedia:!0})}catch(r){this.setState({hasUserMedia:!0,src:window.URL.createObjectURL(e)})}n.onUserMedia()},e.prototype.render=function(){var t=this,e=this.state,n=this.props,r=n.audio,i=(n.forceScreenshotSourceSize,n.onUserMedia,n.onUserMediaError,n.screenshotFormat,n.screenshotQuality,n.minScreenshotWidth,n.minScreenshotHeight,n.audioConstraints,n.videoConstraints,n.imageSmoothing,n.mirrored),u=n.style,c=void 0===u?{}:u,l=s(n,["audio","forceScreenshotSourceSize","onUserMedia","onUserMediaError","screenshotFormat","screenshotQuality","minScreenshotWidth","minScreenshotHeight","audioConstraints","videoConstraints","imageSmoothing","mirrored","style"]),h=i?a(a({},c),{transform:(c.transform||"")+" scaleX(-1)"}):c;return o.createElement("video",a({autoPlay:!0,src:e.src,muted:r,playsInline:!0,ref:function(e){t.video=e},style:h},l))},e.defaultProps={audio:!0,forceScreenshotSourceSize:!1,imageSmoothing:!0,mirrored:!1,onUserMedia:function(){},onUserMediaError:function(){},screenshotFormat:"image/webp",screenshotQuality:.92},e.mountedInstances=[],e.userMediaRequested=!1,e}(o.Component);e.default=c},react:function(e,n){e.exports=t}}).default},t.exports=r(n(2))},function(t,e,n){t.exports={video:"_3GqInLQ5XsRTU_HmqqchW9"}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Preparing camera...","face-scan-loading-feedback-message":"Preparing face scan...","hold-still-feedback-message":"Please hold still","move-back-feedback-message":"Move back","move-center-feedback-message":"Place your face in the frame","move-closer-feedback-message":"Move closer","one-face-only-feedback-message":"Only one face allowed"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Kamera lädt...","face-scan-loading-feedback-message":"Gesichtsscan wird vorbereitet","hold-still-feedback-message":"Bitte still halten","move-back-feedback-message":"Gehen Sie zurück","move-center-feedback-message":"Plazieren Sie Ihr Gesicht in die Mitte","move-closer-feedback-message":"Kommen Sie näher","one-face-only-feedback-message":"Nur ein Gesicht ist erlaubt"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"La cámara se está preparando...","face-scan-loading-feedback-message":"Preparando escaneado facial...","hold-still-feedback-message":"Aguanta un momento","move-back-feedback-message":"Retírate","move-center-feedback-message":"Colócate en el centro","move-closer-feedback-message":"Acércate","one-face-only-feedback-message":"Enfócate solo a ti"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"La cámara se está preparando...","face-scan-loading-feedback-message":"Preparando escaneado facial...","hold-still-feedback-message":"Quédate quieto un momento","move-back-feedback-message":"Aléjate","move-center-feedback-message":"Colócate en el centro","move-closer-feedback-message":"Acércate","one-face-only-feedback-message":"Enfócate solo a ti"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Caricamento della camera...","face-scan-loading-feedback-message":"Caricamento dello scan facciale...","hold-still-feedback-message":"Rimani fermo","move-back-feedback-message":"Allontanati","move-center-feedback-message":"Posiziona la tua faccia nel riquadro","move-closer-feedback-message":"Avvicinati","one-face-only-feedback-message":"Solo una faccia è permessa"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Préparation de l'appareil...","face-scan-loading-feedback-message":"Préparation du scan...","hold-still-feedback-message":"Veuillez ne pas bouger","move-back-feedback-message":"Reculez","move-center-feedback-message":"Placez votre visage dans le cadre","move-closer-feedback-message":"Approchez-vous","one-face-only-feedback-message":"Un seul visage permis"}}},function(t,e){t.exports=function(t){if(Array.isArray(t))return t}},function(t,e){t.exports=function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(u){o=!0,i=u}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}},function(t,e,n){var r=n(36);t.exports=function(t,e){if(t){if("string"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}},function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}},function(t,e){t.exports=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(t,e,n){"use strict";var r=n(39);function o(){}function i(){}i.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,i,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(t,e,n){"use strict";(function(t){var r=n(41),o=n(42),i=n(43);function a(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(a()<e)throw new RangeError("Invalid typed array length");return u.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=u.prototype:(null===t&&(t=new u(e)),t.length=e),t}function u(t,e,n){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return new u(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return h(this,t)}return c(this,t,e,n)}function c(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);u.TYPED_ARRAY_SUPPORT?(t=e).__proto__=u.prototype:t=f(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!u.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|d(e,n),o=(t=s(t,r)).write(e,n);o!==r&&(t=t.slice(0,o));return t}(t,e,n):function(t,e){if(u.isBuffer(e)){var n=0|p(e.length);return 0===(t=s(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?s(t,0):f(t,e);if("Buffer"===e.type&&i(e.data))return f(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function h(t,e){if(l(e),t=s(t,e<0?0:0|p(e)),!u.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function f(t,e){var n=e.length<0?0:0|p(e.length);t=s(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function p(t){if(t>=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return U(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return j(t).length;default:if(r)return U(t).length;e=(""+e).toLowerCase(),r=!0}}function v(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return A(this,e,n);case"utf8":case"utf-8":return I(this,e,n);case"ascii":return k(this,e,n);case"latin1":case"binary":return S(this,e,n);case"base64":return R(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function m(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function g(t,e,n,r,o){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(o)return-1;n=t.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof e&&(e=u.from(e,r)),u.isBuffer(e))return 0===e.length?-1:y(t,e,n,r,o);if("number"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):y(t,[e],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(t,e,n,r,o){var i,a=1,s=t.length,u=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,s/=2,u/=2,n/=2}function c(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(o){var l=-1;for(i=n;i<s;i++)if(c(t,i)===c(e,-1===l?0:i-l)){if(-1===l&&(l=i),i-l+1===u)return l*a}else-1!==l&&(i-=i-l),l=-1}else for(n+u>s&&(n=s-u),i=n;i>=0;i--){for(var h=!0,f=0;f<u;f++)if(c(t,i+f)!==c(e,f)){h=!1;break}if(h)return i}return-1}function b(t,e,n,r){n=Number(n)||0;var o=t.length-n;r?(r=Number(r))>o&&(r=o):r=o;var i=e.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a<r;++a){var s=parseInt(e.substr(2*a,2),16);if(isNaN(s))return a;t[n+a]=s}return a}function x(t,e,n,r){return z(U(e,t.length-n),t,n,r)}function w(t,e,n,r){return z(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function E(t,e,n,r){return w(t,e,n,r)}function C(t,e,n,r){return z(j(e),t,n,r)}function _(t,e,n,r){return z(function(t,e){for(var n,r,o,i=[],a=0;a<t.length&&!((e-=2)<0);++a)n=t.charCodeAt(a),r=n>>8,o=n%256,i.push(o),i.push(r);return i}(e,t.length-n),t,n,r)}function R(t,e,n){return 0===e&&n===t.length?r.fromByteArray(t):r.fromByteArray(t.slice(e,n))}function I(t,e,n){n=Math.min(t.length,n);for(var r=[],o=e;o<n;){var i,a,s,u,c=t[o],l=null,h=c>239?4:c>223?3:c>191?2:1;if(o+h<=n)switch(h){case 1:c<128&&(l=c);break;case 2:128==(192&(i=t[o+1]))&&(u=(31&c)<<6|63&i)>127&&(l=u);break;case 3:i=t[o+1],a=t[o+2],128==(192&i)&&128==(192&a)&&(u=(15&c)<<12|(63&i)<<6|63&a)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:i=t[o+1],a=t[o+2],s=t[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(u=(15&c)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&u<1114112&&(l=u)}null===l?(l=65533,h=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),o+=h}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=4096));return n}(r)}e.Buffer=u,e.SlowBuffer=function(t){+t!=t&&(t=0);return u.alloc(+t)},e.INSPECT_MAX_BYTES=50,u.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(e){return!1}}(),e.kMaxLength=a(),u.poolSize=8192,u._augment=function(t){return t.__proto__=u.prototype,t},u.from=function(t,e,n){return c(null,t,e,n)},u.TYPED_ARRAY_SUPPORT&&(u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0})),u.alloc=function(t,e,n){return function(t,e,n,r){return l(e),e<=0?s(t,e):void 0!==n?"string"==typeof r?s(t,e).fill(n,r):s(t,e).fill(n):s(t,e)}(null,t,e,n)},u.allocUnsafe=function(t){return h(null,t)},u.allocUnsafeSlow=function(t){return h(null,t)},u.isBuffer=function(t){return!(null==t||!t._isBuffer)},u.compare=function(t,e){if(!u.isBuffer(t)||!u.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,o=0,i=Math.min(n,r);o<i;++o)if(t[o]!==e[o]){n=t[o],r=e[o];break}return n<r?-1:r<n?1:0},u.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},u.concat=function(t,e){if(!i(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return u.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=u.allocUnsafe(e),o=0;for(n=0;n<t.length;++n){var a=t[n];if(!u.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,o),o+=a.length}return r},u.byteLength=d,u.prototype._isBuffer=!0,u.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)m(this,e,e+1);return this},u.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)m(this,e,e+3),m(this,e+1,e+2);return this},u.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)m(this,e,e+7),m(this,e+1,e+6),m(this,e+2,e+5),m(this,e+3,e+4);return this},u.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?I(this,0,t):v.apply(this,arguments)},u.prototype.equals=function(t){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===u.compare(this,t)},u.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},u.prototype.compare=function(t,e,n,r,o){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),e<0||n>t.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&e>=n)return 0;if(r>=o)return-1;if(e>=n)return 1;if(this===t)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(e>>>=0),s=Math.min(i,a),c=this.slice(r,o),l=t.slice(e,n),h=0;h<s;++h)if(c[h]!==l[h]){i=c[h],a=l[h];break}return i<a?-1:a<i?1:0},u.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},u.prototype.indexOf=function(t,e,n){return g(this,t,e,n,!0)},u.prototype.lastIndexOf=function(t,e,n){return g(this,t,e,n,!1)},u.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-e;if((void 0===n||n>o)&&(n=o),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return b(this,t,e,n);case"utf8":case"utf-8":return x(this,t,e,n);case"ascii":return w(this,t,e,n);case"latin1":case"binary":return E(this,t,e,n);case"base64":return C(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,e,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function k(t,e,n){var r="";n=Math.min(t.length,n);for(var o=e;o<n;++o)r+=String.fromCharCode(127&t[o]);return r}function S(t,e,n){var r="";n=Math.min(t.length,n);for(var o=e;o<n;++o)r+=String.fromCharCode(t[o]);return r}function A(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var o="",i=e;i<n;++i)o+=W(t[i]);return o}function O(t,e,n){for(var r=t.slice(e,n),o="",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}function D(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function T(t,e,n,r,o,i){if(!u.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>o||e<i)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function N(t,e,n,r){e<0&&(e=65535+e+1);for(var o=0,i=Math.min(t.length-n,2);o<i;++o)t[n+o]=(e&255<<8*(r?o:1-o))>>>8*(r?o:1-o)}function F(t,e,n,r){e<0&&(e=4294967295+e+1);for(var o=0,i=Math.min(t.length-n,4);o<i;++o)t[n+o]=e>>>8*(r?o:3-o)&255}function M(t,e,n,r,o,i){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function P(t,e,n,r,i){return i||M(t,0,n,4),o.write(t,e,n,r,23,4),n+4}function B(t,e,n,r,i){return i||M(t,0,n,8),o.write(t,e,n,r,52,8),n+8}u.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),u.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=u.prototype;else{var o=e-t;n=new u(o,void 0);for(var i=0;i<o;++i)n[i]=this[i+t]}return n},u.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=this[t],o=1,i=0;++i<e&&(o*=256);)r+=this[t+i]*o;return r},u.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=this[t+--e],o=1;e>0&&(o*=256);)r+=this[t+--e]*o;return r},u.prototype.readUInt8=function(t,e){return e||D(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||D(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||D(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||D(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||D(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=this[t],o=1,i=0;++i<e&&(o*=256);)r+=this[t+i]*o;return r>=(o*=128)&&(r-=Math.pow(2,8*e)),r},u.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||D(t,e,this.length);for(var r=e,o=1,i=this[t+--r];r>0&&(o*=256);)i+=this[t+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*e)),i},u.prototype.readInt8=function(t,e){return e||D(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||D(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(t,e){e||D(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(t,e){return e||D(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||D(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||D(t,4,this.length),o.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||D(t,4,this.length),o.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||D(t,8,this.length),o.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||D(t,8,this.length),o.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||T(this,t,e,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[e]=255&t;++i<n&&(o*=256);)this[e+i]=t/o&255;return e+n},u.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||T(this,t,e,n,Math.pow(2,8*n)-1,0);var o=n-1,i=1;for(this[e+o]=255&t;--o>=0&&(i*=256);)this[e+o]=t/i&255;return e+n},u.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):N(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):N(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):F(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):F(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var o=Math.pow(2,8*n-1);T(this,t,e,n,o-1,-o)}var i=0,a=1,s=0;for(this[e]=255&t;++i<n&&(a*=256);)t<0&&0===s&&0!==this[e+i-1]&&(s=1),this[e+i]=(t/a>>0)-s&255;return e+n},u.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var o=Math.pow(2,8*n-1);T(this,t,e,n,o-1,-o)}var i=n-1,a=1,s=0;for(this[e+i]=255&t;--i>=0&&(a*=256);)t<0&&0===s&&0!==this[e+i+1]&&(s=1),this[e+i]=(t/a>>0)-s&255;return e+n},u.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):N(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):N(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):F(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||T(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):F(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,n){return P(this,t,e,!0,n)},u.prototype.writeFloatBE=function(t,e,n){return P(this,t,e,!1,n)},u.prototype.writeDoubleLE=function(t,e,n){return B(this,t,e,!0,n)},u.prototype.writeDoubleBE=function(t,e,n){return B(this,t,e,!1,n)},u.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var o,i=r-n;if(this===t&&n<e&&e<r)for(o=i-1;o>=0;--o)t[o+e]=this[o+n];else if(i<1e3||!u.TYPED_ARRAY_SUPPORT)for(o=0;o<i;++o)t[o+e]=this[o+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+i),e);return i},u.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var o=t.charCodeAt(0);o<256&&(t=o)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!u.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var i;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(i=e;i<n;++i)this[i]=t;else{var a=u.isBuffer(t)?t:U(new u(t,r).toString()),s=a.length;for(i=0;i<n-e;++i)this[i+e]=a[i%s]}return this};var L=/[^+\/0-9A-Za-z-_]/g;function W(t){return t<16?"0"+t.toString(16):t.toString(16)}function U(t,e){var n;e=e||1/0;for(var r=t.length,o=null,i=[],a=0;a<r;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!o){if(n>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(e-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(e-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((e-=1)<0)break;i.push(n)}else if(n<2048){if((e-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function j(t){return r.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(L,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,n,r){for(var o=0;o<r&&!(o+n>=e.length||o>=t.length);++o)e[o+n]=t[o];return o}}).call(this,n(5))},function(t,e,n){"use strict";e.byteLength=function(t){var e=c(t),n=e[0],r=e[1];return 3*(n+r)/4-r},e.toByteArray=function(t){var e,n,r=c(t),a=r[0],s=r[1],u=new i(function(t,e,n){return 3*(e+n)/4-n}(0,a,s)),l=0,h=s>0?a-4:a;for(n=0;n<h;n+=4)e=o[t.charCodeAt(n)]<<18|o[t.charCodeAt(n+1)]<<12|o[t.charCodeAt(n+2)]<<6|o[t.charCodeAt(n+3)],u[l++]=e>>16&255,u[l++]=e>>8&255,u[l++]=255&e;2===s&&(e=o[t.charCodeAt(n)]<<2|o[t.charCodeAt(n+1)]>>4,u[l++]=255&e);1===s&&(e=o[t.charCodeAt(n)]<<10|o[t.charCodeAt(n+1)]<<4|o[t.charCodeAt(n+2)]>>2,u[l++]=e>>8&255,u[l++]=255&e);return u},e.fromByteArray=function(t){for(var e,n=t.length,o=n%3,i=[],a=0,s=n-o;a<s;a+=16383)i.push(l(t,a,a+16383>s?s:a+16383));1===o?(e=t[n-1],i.push(r[e>>2]+r[e<<4&63]+"==")):2===o&&(e=(t[n-2]<<8)+t[n-1],i.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,u=a.length;s<u;++s)r[s]=a[s],o[a.charCodeAt(s)]=s;function c(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return-1===n&&(n=e),[n,n===e?0:4-n%4]}function l(t,e,n){for(var o,i,a=[],s=e;s<n;s+=3)o=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),a.push(r[(i=o)>>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return a.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,o){var i,a,s=8*o-r-1,u=(1<<s)-1,c=u>>1,l=-7,h=n?o-1:0,f=n?-1:1,p=t[e+h];for(h+=f,i=p&(1<<-l)-1,p>>=-l,l+=s;l>0;i=256*i+t[e+h],h+=f,l-=8);for(a=i&(1<<-l)-1,i>>=-l,l+=r;l>0;a=256*a+t[e+h],h+=f,l-=8);if(0===i)i=1-c;else{if(i===u)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),i-=c}return(p?-1:1)*a*Math.pow(2,i-r)},e.write=function(t,e,n,r,o,i){var a,s,u,c=8*i-o-1,l=(1<<c)-1,h=l>>1,f=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,d=r?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=l):(a=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-a))<1&&(a--,u*=2),(e+=a+h>=1?f/u:f*Math.pow(2,1-h))*u>=2&&(a++,u/=2),a+h>=l?(s=0,a=l):a+h>=1?(s=(e*u-1)*Math.pow(2,o),a+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,o),a=0));o>=8;t[n+p]=255&s,p+=d,s/=256,o-=8);for(a=a<<o|s,c+=o;c>0;t[n+p]=255&a,p+=d,a/=256,c-=8);t[n+p-d]|=128*v}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(45),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(5))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,o,i,a,s,u=1,c={},l=!1,h=t.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(t);f=f&&f.setTimeout?f:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){d(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((i=new MessageChannel).port1.onmessage=function(t){d(t.data)},r=function(t){i.port2.postMessage(t)}):h&&"onreadystatechange"in h.createElement("script")?(o=h.documentElement,r=function(t){var e=h.createElement("script");e.onreadystatechange=function(){d(t),e.onreadystatechange=null,o.removeChild(e),e=null},o.appendChild(e)}):r=function(t){setTimeout(d,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&d(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),f.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var o={callback:t,args:e};return c[u]=o,r(u),u++},f.clearImmediate=p}function p(t){delete c[t]}function d(t){if(l)setTimeout(d,0,t);else{var e=c[t];if(e){l=!0;try{!function(t){var e=t.callback,n=t.args;switch(n.length){case 0:e();break;case 1:e(n[0]);break;case 2:e(n[0],n[1]);break;case 3:e(n[0],n[1],n[2]);break;default:e.apply(void 0,n)}}(e)}finally{p(t),l=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(5),n(16))},function(t,e){},function(t,e){},function(t,e){},function(t,e){function n(e,r){return t.exports=n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},n(e,r)}t.exports=n},function(t,e){function n(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?t.exports=n=function(t){return typeof t}:t.exports=n=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(e)}t.exports=n},function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}},function(t,e){t.exports=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}},function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return Yi}));var r={};n.r(r),n.d(r,"drawContour",(function(){return Dt})),n.d(r,"drawDetections",(function(){return _e})),n.d(r,"drawFaceExpressions",(function(){return ln})),n.d(r,"DrawBoxOptions",(function(){return Ee})),n.d(r,"DrawBox",(function(){return Ce})),n.d(r,"DrawFaceLandmarksOptions",(function(){return pn})),n.d(r,"DrawFaceLandmarks",(function(){return dn})),n.d(r,"drawFaceLandmarks",(function(){return vn})),n.d(r,"AnchorPosition",(function(){return me})),n.d(r,"DrawTextFieldOptions",(function(){return xe})),n.d(r,"DrawTextField",(function(){return we}));var o=n(2),i=n.n(o);const a="NO_CAMERA_PERMISSION",s="NO_CAMERA",u="UNSUPPORTED_BROWSER",c="OVERCONSTRAINED",l="GENERIC_CAMERA_ERROR",h="FACE_DETECTION_INIT_ERROR",f="INTERNAL_ERROR",p="MOVE_CLOSER",d="MOVE_BACK",v="MOVE_CENTER",m="ONE_FACE_ONLY",g="HOLD_STILL",y="CAMERA_LOADING",b="FACE_SCAN_LOADING",x={EN:"en",ES:"es",ES_419:"es-419",IT:"it",DE:"de",FR:"fr"},w={MANUAL:"manual",AUTO:"auto"},E={ORIGINAL:"original",CROPPED:"cropped"},C={HIGH:"high",MEDIUM:"medium",LOW:"low"},_={[C.HIGH]:1,[C.MEDIUM]:.96,[C.LOW]:.9};class R extends o.Component{componentDidCatch(){const{onError:t}=this.props;t(f)}render(){const{children:t}=this.props;return t}}var I=R,k=n(4),S=n.n(k),A=n(22),O=n.n(A),D=i.a.createContext(null);function T(){return i.a.useContext(D)}var N=function(t){var e=t.i18n,n=t.defaultComponent,r=t.forceRenderOnLocaleChange,o=void 0===r||r,a=t.children,s=function(){return{i18n:e,defaultComponent:n}},u=function(){return o&&e.locale||"default"},c=i.a.useState(s()),l=S()(c,2),h=l[0],f=l[1],p=i.a.useState(u()),d=S()(p,2),v=d[0],m=d[1];return i.a.useEffect((function(){var t=e.on("change",(function(){f(s()),m(u())}));return"default"===v&&m(u()),function(){return t()}}),[]),o&&"default"===v?null:i.a.createElement(D.Provider,{value:h,key:v},a)};function F(t,e){var n;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return M(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?M(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}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 i,a=!0,s=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function M(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var P=/<(\d+)>(.*?)<\/\1>|<(\d+)\/>/,B=/(?:\r\n|\r|\n)/g,L={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0};function W(t){if(!t.length)return[];var e=t.slice(0,4),n=S()(e,4),r=n[0],o=n[1],i=n[2],a=n[3];return[[parseInt(r||i),o||"",a]].concat(W(t.slice(4,t.length)))}var U=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return function(){return"".concat(e,"_").concat(t++)}};function j(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function z(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?j(Object(n),!0).forEach((function(e){O()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function V(t){var e=T(),n=e.i18n,r=e.defaultComponent,o=t.render,a=t.component,s=t.id,u=t.message,c=t.formats,l=z({},t.values),h=z({},t.components);l&&Object.keys(l).forEach((function(t){var e=l[t];if(i.a.isValidElement(e)){var n=Object.keys(h).length;h[n]=e,l[t]="<".concat(n,"/>")}}));var f=n&&"function"==typeof n._?n._(s,l,{message:u,formats:c}):s,p=f?function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=U(0,"$lingui$"),o=e.replace(B,"").split(P);if(1===o.length)return e;var a=[],s=o.shift();s&&a.push(s);var u,c=F(W(o));try{for(c.s();!(u=c.n()).done;){var l=S()(u.value,3),h=l[0],f=l[1],p=l[2],d=n[h];(!d||L[d.type]&&f)&&(d=i.a.createElement(i.a.Fragment)),a.push(i.a.cloneElement(d,{key:r()},f?t(f,n):d.props.children)),p&&a.push(p)}}catch(v){c.e(v)}finally{c.f()}return a}(f,h):null;if(null===o||null===a)return p;var d=r||i.a.Fragment;if(o&&a);else if(o&&"function"!=typeof o);else if(a&&"function"!=typeof a)return i.a.createElement(d,null,p);if("function"==typeof o)return o({id:s,translation:p,message:u});var v=a||d;return i.a.createElement(v,null,p)}V.defaultProps={values:{},components:{}};var G=n(3),H=n.n(G),q=n(12),K=n.n(q),X=n(11),$=n.n(X);function Y(){return(Y=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var J=o.createElement("path",{fill:"#FFF",fillOpacity:.7,fillRule:"evenodd",d:"M1280 0v720H0V0h1280zM658.215 95.79a286.506 286.506 0 00-31.573-.605c-3.545.197-8.59.56-14.622 1.286-6.207.747-16.005 2.002-28.095 5.248a155.94 155.94 0 00-16.938 5.584c-18.993 7.515-37.088 18.327-50.068 33.828-19.713 23.543-29.338 53.4-33.045 83.01-3.922 31.334 1.288 62.583 2.466 93.896.036.933-.066 1.933-1.189 2.205-.489.12-1.01.044-1.49-.105-2.367-.735-3.576-2.94-5.427-4.353-4.138-3.16-10.825-3.19-14.466.709-5.106 5.47-4.03 13.544-2.5 20.126a1882.27 1882.27 0 015.703 25.242l.698 3.203c3.236 14.859 5.256 30.448 14.16 43.384 1.275 1.854 2.705 3.69 4.675 4.858 4.438 2.63 8.543 3.032 11.32 7.741 2.541 4.307 3.22 9.748 4.45 14.478 3.743 14.39 10.884 27.878 17.09 41.39 7.208 15.702 15.101 31.167 24.77 45.629 13.507 20.203 30.719 38.55 52.234 50.83 13.213 7.54 29.09 13.962 44.455 13.237l.01-.002.011.002c15.13.714 30.754-5.501 43.844-12.89l.611-.347c21.515-12.28 38.727-30.627 52.235-50.83 9.668-14.462 17.561-29.927 24.77-45.629 6.205-13.512 13.346-27 17.087-41.39 1.23-4.73 1.911-10.171 4.451-14.478 2.779-4.709 6.883-5.112 11.32-7.74 1.972-1.17 3.401-3.005 4.676-4.86 8.904-12.935 10.925-28.524 14.16-43.383l.698-3.203a1877.285 1877.285 0 015.703-25.242c1.528-6.582 2.606-14.657-2.5-20.126-3.64-3.9-10.327-3.869-14.466-.71-1.851 1.414-3.06 3.619-5.426 4.354-.48.15-1.002.224-1.491.105-1.123-.272-1.225-1.272-1.189-2.205 1.179-31.313 6.388-62.562 2.466-93.896-3.707-29.61-13.332-59.467-33.045-83.01-12.98-15.501-31.075-26.313-50.067-33.828-11.67-4.617-24.272-7.12-27.795-7.833-11.799-2.391-21.042-3.11-28.671-3.68zM642.24 586.523l-.708.05-.699.036-.698-.037c-.236-.015-.472-.03-.708-.049h2.813z"});var Q=function(t){return o.createElement("svg",Y({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1280 720"},t),J)};function Z(){return(Z=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var tt=o.createElement("path",{fill:"#D9DEE5",fillOpacity:.7,fillRule:"evenodd",d:"M715 0v715H0V0h715zM368.33 210.97a168.754 168.754 0 00-18.77-.363c-2.107.119-5.107.337-8.692.772-3.69.448-9.515 1.201-16.702 3.149a92.101 92.101 0 00-10.07 3.35c-11.29 4.51-22.047 10.996-29.763 20.297-11.719 14.126-17.44 32.04-19.644 49.806-2.331 18.8.765 37.55 1.466 56.337.021.56-.04 1.16-.707 1.324-.29.071-.6.026-.886-.063-1.407-.441-2.125-1.764-3.226-2.612-2.46-1.896-6.435-1.914-8.6.425-3.035 3.282-2.395 8.127-1.486 12.076 1.16 5.043 2.298 10.08 3.39 15.145.14.64.277 1.281.416 1.922 1.923 8.915 3.124 18.269 8.417 26.03.758 1.113 1.608 2.214 2.78 2.915 2.638 1.578 5.078 1.82 6.728 4.645 1.511 2.584 1.915 5.849 2.647 8.687 2.224 8.634 6.47 16.726 10.158 24.834 4.286 9.42 8.978 18.7 14.725 27.377 8.03 12.122 18.262 23.13 31.052 30.498 7.773 4.477 17.096 8.296 26.14 7.954l.293-.014.294.014c8.856.335 17.98-3.32 25.653-7.675l.487-.28c12.79-7.367 23.022-18.375 31.052-30.497 5.747-8.677 10.44-17.956 14.725-27.377 3.689-8.108 7.934-16.2 10.158-24.834.732-2.838 1.136-6.103 2.646-8.687 1.652-2.826 4.092-3.067 6.73-4.645 1.171-.701 2.021-1.802 2.78-2.915 5.292-7.761 6.493-17.115 8.417-26.03l.415-1.922c1.092-5.065 2.23-10.102 3.39-15.145.909-3.95 1.55-8.794-1.486-12.076-2.164-2.34-6.14-2.32-8.6-.425-1.1.848-1.819 2.17-3.226 2.612-.285.09-.595.134-.886.063-.667-.163-.728-.764-.706-1.324.7-18.787 3.797-37.536 1.465-56.337-2.203-17.766-7.925-35.68-19.644-49.806-7.716-9.3-18.473-15.788-29.763-20.297-6.937-2.77-14.43-4.271-16.524-4.7-7.014-1.434-12.509-1.866-17.044-2.208z"});var et=function(t){return o.createElement("svg",Z({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 715 715"},t),tt)};function nt(){return(nt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var rt=o.createElement("defs",null,o.createElement("linearGradient",{id:"face-outline_svg__a",x1:"50.72%",x2:"49.208%",y1:"26.23%",y2:"117.124%"},o.createElement("stop",{offset:"0%",stopColor:"#B6BFCC"}),o.createElement("stop",{offset:"100%",stopColor:"#FFF"}))),ot=o.createElement("path",{fill:"none",stroke:"url(#face-outline_svg__a)",strokeWidth:5.006,d:"M638.585 600c-.686 0-1.592-.013-2.81-.052a69.953 69.953 0 01-4.575-.296 72.809 72.809 0 01-4.533-.597 79.015 79.015 0 01-4.472-.87 85.112 85.112 0 01-4.362-1.102 91.261 91.261 0 01-4.273-1.312 101.02 101.02 0 01-4.155-1.484 114.88 114.88 0 01-4.056-1.64 125.655 125.655 0 01-7.787-3.652 147.069 147.069 0 01-7.304-3.993c-20.9-12.179-39.54-30.642-55.409-54.88-8.67-13.241-16.471-27.9-25.299-47.536-1.196-2.66-2.43-5.319-3.664-7.985-5.222-11.272-10.624-22.928-13.847-35.587-.338-1.325-.641-2.7-.943-4.093-.625-2.866-1.27-5.83-2.225-7.484-.379-.25-1.374-.71-2.115-1.054-1.373-.635-3.08-1.427-4.939-2.55-3.91-2.368-6.378-5.567-8.277-8.385-8.738-12.96-11.7-27.823-14.313-40.938-.457-2.292-.912-4.578-1.397-6.848l-.685-3.217a1892.951 1892.951 0 00-5.588-25.25c-1.25-5.49-4.567-20.075 5.26-30.824 3.985-4.36 9.824-6.86 16.017-6.86.744 0 1.487.036 2.222.105-.273-3.957-.572-7.901-.865-11.79-1.665-22.04-3.386-44.83-.563-67.858 4.469-36.439 16.293-66.575 35.149-89.569 12.744-15.54 30.924-28.155 54.037-37.494a163.732 163.732 0 0117.99-6.058c13.257-3.633 24.137-4.97 29.366-5.612 5.05-.62 10.155-1.079 15.178-1.363a292.987 292.987 0 0110.846-.205c7.276 0 14.62.278 21.829.828 7.234.551 17.14 1.306 29.746 3.915l.227.047c4.19.865 16.946 3.5 29.19 8.448 23.114 9.339 41.293 21.953 54.037 37.494 18.855 22.995 30.681 53.13 35.149 89.569 2.824 23.028 1.102 45.818-.563 67.859-.293 3.888-.591 7.832-.864 11.79a23.46 23.46 0 012.222-.105c6.193 0 12.032 2.5 16.018 6.86 9.825 10.747 6.507 25.332 5.259 30.822a1923.38 1923.38 0 00-5.588 25.246l-.685 3.22c-.484 2.27-.94 4.555-1.397 6.844-2.613 13.116-5.575 27.983-14.313 40.944-1.899 2.817-4.367 6.017-8.279 8.384-1.858 1.124-3.565 1.916-4.937 2.551-.738.344-1.727.8-2.11 1.05-.976 1.733-1.614 4.658-2.23 7.49a121.69 121.69 0 01-.943 4.09c-3.223 12.657-8.622 24.311-13.844 35.58-1.236 2.67-2.47 5.33-3.667 7.993-8.826 19.633-16.63 34.293-25.3 47.536-15.87 24.238-34.509 42.701-55.4 54.874a149.984 149.984 0 01-7.28 3.982 129.842 129.842 0 01-7.794 3.659 108.88 108.88 0 01-8.229 3.133 93.884 93.884 0 01-4.282 1.313 79.774 79.774 0 01-8.824 1.97 72.51 72.51 0 01-4.558.602 66.17 66.17 0 01-6.885.323l-1.73-.005c-.38.014-.884.027-1.584.027z",transform:"translate(-447 -79)"});var it=function(t){return o.createElement("svg",nt({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 386 524"},t),rt,ot)};function at(){return(at=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var st=o.createElement("defs",null,o.createElement("linearGradient",{id:"face-outline-success_svg__a",x1:"50.72%",x2:"49.208%",y1:"26.23%",y2:"117.124%"},o.createElement("stop",{offset:"0%",stopColor:"#2FC58D"}),o.createElement("stop",{offset:"100%",stopColor:"#FFF"}))),ut=o.createElement("path",{fill:"none",stroke:"url(#face-outline-success_svg__a)",strokeWidth:5.006,d:"M638.585 600c-.686 0-1.592-.013-2.81-.052a69.953 69.953 0 01-4.575-.296 72.809 72.809 0 01-4.533-.597 79.015 79.015 0 01-4.472-.87 85.112 85.112 0 01-4.362-1.102 91.261 91.261 0 01-4.273-1.312 101.02 101.02 0 01-4.155-1.484 114.88 114.88 0 01-4.056-1.64 125.655 125.655 0 01-7.787-3.652 147.069 147.069 0 01-7.304-3.993c-20.9-12.179-39.54-30.642-55.409-54.88-8.67-13.241-16.471-27.9-25.299-47.536-1.196-2.66-2.43-5.319-3.664-7.985-5.222-11.272-10.624-22.928-13.847-35.587-.338-1.325-.641-2.7-.943-4.093-.625-2.866-1.27-5.83-2.225-7.484-.379-.25-1.374-.71-2.115-1.054-1.373-.635-3.08-1.427-4.939-2.55-3.91-2.368-6.378-5.567-8.277-8.385-8.738-12.96-11.7-27.823-14.313-40.938-.457-2.292-.912-4.578-1.397-6.848l-.685-3.217a1892.951 1892.951 0 00-5.588-25.25c-1.25-5.49-4.567-20.075 5.26-30.824 3.985-4.36 9.824-6.86 16.017-6.86.744 0 1.487.036 2.222.105-.273-3.957-.572-7.901-.865-11.79-1.665-22.04-3.386-44.83-.563-67.858 4.469-36.439 16.293-66.575 35.149-89.569 12.744-15.54 30.924-28.155 54.037-37.494a163.732 163.732 0 0117.99-6.058c13.257-3.633 24.137-4.97 29.366-5.612 5.05-.62 10.155-1.079 15.178-1.363a292.987 292.987 0 0110.846-.205c7.276 0 14.62.278 21.829.828 7.234.551 17.14 1.306 29.746 3.915l.227.047c4.19.865 16.946 3.5 29.19 8.448 23.114 9.339 41.293 21.953 54.037 37.494 18.855 22.995 30.681 53.13 35.149 89.569 2.824 23.028 1.102 45.818-.563 67.859-.293 3.888-.591 7.832-.864 11.79a23.46 23.46 0 012.222-.105c6.193 0 12.032 2.5 16.018 6.86 9.825 10.747 6.507 25.332 5.259 30.822a1923.38 1923.38 0 00-5.588 25.246l-.685 3.22c-.484 2.27-.94 4.555-1.397 6.844-2.613 13.116-5.575 27.983-14.313 40.944-1.899 2.817-4.367 6.017-8.279 8.384-1.858 1.124-3.565 1.916-4.937 2.551-.738.344-1.727.8-2.11 1.05-.976 1.733-1.614 4.658-2.23 7.49a121.69 121.69 0 01-.943 4.09c-3.223 12.657-8.622 24.311-13.844 35.58-1.236 2.67-2.47 5.33-3.667 7.993-8.826 19.633-16.63 34.293-25.3 47.536-15.87 24.238-34.509 42.701-55.4 54.874a149.984 149.984 0 01-7.28 3.982 129.842 129.842 0 01-7.794 3.659 108.88 108.88 0 01-8.229 3.133 93.884 93.884 0 01-4.282 1.313 79.774 79.774 0 01-8.824 1.97 72.51 72.51 0 01-4.558.602 66.17 66.17 0 01-6.885.323l-1.73-.005c-.38.014-.884.027-1.584.027z",transform:"translate(-447 -79)"});var ct=function(t){return o.createElement("svg",at({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 386 524"},t),st,ut)};const lt=({isPortraitCamera:t,isSuccess:e})=>{const n=t?et:Q,r=e?ct:it,o=$.a[t?"portraitCamera":"landscapeCamera"];return i.a.createElement("div",{className:$.a.container},i.a.createElement(n,{className:$.a.overlay}),i.a.createElement(r,{className:K()($.a.outline,o)}))};lt.defaultProps={isSuccess:!1,isPortraitCamera:!1},lt.propTypes={isSuccess:H.a.bool,isPortraitCamera:H.a.bool};var ht=lt,ft=n(17),pt=n.n(ft);const dt=({message:t,isPortraitCamera:e})=>i.a.createElement("div",{className:K()(pt.a.container,{[pt.a.landscape]:!e})},t);dt.defaultProps={message:"",isPortraitCamera:!1},dt.propTypes={message:H.a.element,isPortraitCamera:H.a.bool};var vt=dt,mt=n(18),gt=n.n(mt);function yt(){return(yt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var bt=o.createElement("defs",null,o.createElement("path",{id:"ico-chevron-right_svg__a",d:"M12.28 22.625l-1.56-1.25L16.62 14l-5.9-7.375 1.56-1.25L19.18 14z"})),xt=o.createElement("use",{fill:"#F0F",xlinkHref:"#ico-chevron-right_svg__a",fillRule:"evenodd"});var wt=function(t){return o.createElement("svg",yt({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"1em",height:"1em",viewBox:"0 0 28 28"},t),bt,xt)};function Et(){return(Et=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}const Ct=({children:t,...e})=>i.a.createElement("button",Et({className:gt.a.button,type:"button"},e),t,i.a.createElement(wt,{className:gt.a.icon}));Ct.propTypes={onClick:H.a.func.isRequired,disabled:H.a.bool,children:H.a.node};var _t=Ct,Rt=n(23),It=n.n(Rt);const kt=t=>i.a.createElement("div",{className:It.a.container},i.a.createElement(_t,t,"Take picture")),St=({CustomButton:t,...e})=>{const n=t||kt;return i.a.createElement(n,e)};St.propTypes={CustomButton:H.a.func,onClick:H.a.func.isRequired,disabled:H.a.bool};var At=St,Ot=n(0);function Dt(t,e,n){if(void 0===n&&(n=!1),t.beginPath(),e.slice(1).forEach((function(n,r){var o=n.x,i=n.y,a=e[r];t.moveTo(a.x,a.y),t.lineTo(o,i)})),n){var r=e[e.length-1],o=e[0];if(!r||!o)return;t.moveTo(r.x,r.y),t.lineTo(o.x,o.y)}t.stroke()}var Tt=n(1),Nt=function(){function t(t,e){if(!zt(t)||!zt(e))throw new Error("Dimensions.constructor - expected width and height to be valid numbers, instead have "+JSON.stringify({width:t,height:e}));this._width=t,this._height=e}return Object.defineProperty(t.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),t.prototype.reverse=function(){return new t(1/this.width,1/this.height)},t}();function Ft(t,e){return t instanceof Ot.a&&t.shape.length===e}function Mt(t){return Ft(t,3)}function Pt(t){return Ft(t,4)}function Bt(t){return t%2==0}function Lt(t,e){void 0===e&&(e=2);var n=Math.pow(10,e);return Math.floor(t*n)/n}function Wt(t){return t&&t.width&&t.height}function Ut(t){return t.reduce((function(t,e){return t.add(e)}),new Gt(0,0)).div(new Gt(t.length,t.length))}function jt(t,e,n){return Array(t).fill(0).map((function(t,r){return e+r*n}))}function zt(t){return!!t&&t!==1/0&&t!==-1/0&&!isNaN(t)||0===t}function Vt(t){return zt(t)&&0<=t&&t<=1}var Gt=function(){function t(t,e){this._x=t,this._y=e}return Object.defineProperty(t.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),t.prototype.add=function(e){return new t(this.x+e.x,this.y+e.y)},t.prototype.sub=function(e){return new t(this.x-e.x,this.y-e.y)},t.prototype.mul=function(e){return new t(this.x*e.x,this.y*e.y)},t.prototype.div=function(e){return new t(this.x/e.x,this.y/e.y)},t.prototype.abs=function(){return new t(Math.abs(this.x),Math.abs(this.y))},t.prototype.magnitude=function(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))},t.prototype.floor=function(){return new t(Math.floor(this.x),Math.floor(this.y))},t}(),Ht=function(){function t(e,n){void 0===n&&(n=!0);var r=e||{},o=[r.left,r.top,r.right,r.bottom].every(zt),i=[r.x,r.y,r.width,r.height].every(zt);if(!i&&!o)throw new Error("Box.constructor - expected box to be IBoundingBox | IRect, instead have "+JSON.stringify(r));var a=i?[r.x,r.y,r.width,r.height]:[r.left,r.top,r.right-r.left,r.bottom-r.top],s=a[0],u=a[1],c=a[2],l=a[3];t.assertIsValidBox({x:s,y:u,width:c,height:l},"Box.constructor",n),this._x=s,this._y=u,this._width=c,this._height=l}return t.isRect=function(t){return!!t&&[t.x,t.y,t.width,t.height].every(zt)},t.assertIsValidBox=function(e,n,r){if(void 0===r&&(r=!1),!t.isRect(e))throw new Error(n+" - invalid box: "+JSON.stringify(e)+", expected object with properties x, y, width, height");if(!r&&(e.width<0||e.height<0))throw new Error(n+" - width ("+e.width+") and height ("+e.height+") must be positive numbers")},Object.defineProperty(t.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"left",{get:function(){return this.x},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"top",{get:function(){return this.y},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"right",{get:function(){return this.x+this.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){return this.width*this.height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topLeft",{get:function(){return new Gt(this.left,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topRight",{get:function(){return new Gt(this.right,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bottomLeft",{get:function(){return new Gt(this.left,this.bottom)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bottomRight",{get:function(){return new Gt(this.right,this.bottom)},enumerable:!0,configurable:!0}),t.prototype.round=function(){var e=[this.x,this.y,this.width,this.height].map((function(t){return Math.round(t)}));return new t({x:e[0],y:e[1],width:e[2],height:e[3]})},t.prototype.floor=function(){var e=[this.x,this.y,this.width,this.height].map((function(t){return Math.floor(t)}));return new t({x:e[0],y:e[1],width:e[2],height:e[3]})},t.prototype.toSquare=function(){var e=this.x,n=this.y,r=this.width,o=this.height,i=Math.abs(r-o);return r<o&&(e-=i/2,r+=i),o<r&&(n-=i/2,o+=i),new t({x:e,y:n,width:r,height:o})},t.prototype.rescale=function(e){var n=Wt(e)?e.width:e,r=Wt(e)?e.height:e;return new t({x:this.x*n,y:this.y*r,width:this.width*n,height:this.height*r})},t.prototype.pad=function(e,n){var r=[this.x-e/2,this.y-n/2,this.width+e,this.height+n];return new t({x:r[0],y:r[1],width:r[2],height:r[3]})},t.prototype.clipAtImageBorders=function(e,n){var r=this.x,o=this.y,i=this.right,a=this.bottom,s=Math.max(r,0),u=Math.max(o,0),c=i-s,l=a-u;return new t({x:s,y:u,width:Math.min(c,e-s),height:Math.min(l,n-u)}).floor()},t.prototype.shift=function(e,n){var r=this.width,o=this.height;return new t({x:this.x+e,y:this.y+n,width:r,height:o})},t.prototype.padAtBorders=function(t,e){var n=this.width+1,r=this.height+1,o=n,i=r,a=this.left,s=this.top,u=this.right,c=this.bottom;return u>e&&(o=-u+e+n,u=e),c>t&&(i=-c+t+r,c=t),a<1&&(i=2-a,a=1),s<1&&(i=2-s,s=1),{dy:1,edy:i,dx:1,edx:o,y:s,ey:c,x:a,ex:u,w:n,h:r}},t.prototype.calibrate=function(e){return new t({left:this.left+e.left*this.width,top:this.top+e.top*this.height,right:this.right+e.right*this.width,bottom:this.bottom+e.bottom*this.height}).toSquare().round()},t}(),qt=function(t){function e(e,n,r,o,i){return void 0===i&&(i=!1),t.call(this,{left:e,top:n,right:r,bottom:o},i)||this}return Object(Tt.c)(e,t),e}(Ht),Kt=function(){function t(t,e,n,r,o){this._imageDims=new Nt(o.width,o.height),this._score=t,this._classScore=e,this._className=n,this._box=new Ht(r).rescale(this._imageDims)}return Object.defineProperty(t.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"className",{get:function(){return this._className},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"box",{get:function(){return this._box},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageDims",{get:function(){return this._imageDims},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageWidth",{get:function(){return this.imageDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageHeight",{get:function(){return this.imageDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"relativeBox",{get:function(){return new Ht(this._box).rescale(this.imageDims.reverse())},enumerable:!0,configurable:!0}),t.prototype.forSize=function(e,n){return new t(this.score,this.classScore,this.className,this.relativeBox,{width:e,height:n})},t}(),Xt=function(t){function e(e,n,r){return t.call(this,e,e,"",n,r)||this}return Object(Tt.c)(e,t),e.prototype.forSize=function(n,r){var o=t.prototype.forSize.call(this,n,r);return new e(o.score,o.relativeBox,o.imageDims)},e}(Kt);function $t(t,e,n){void 0===n&&(n=!0);var r=Math.max(0,Math.min(t.right,e.right)-Math.max(t.left,e.left))*Math.max(0,Math.min(t.bottom,e.bottom)-Math.max(t.top,e.top));return n?r/(t.area+e.area-r):r/Math.min(t.area,e.area)}function Yt(t,e,n,r){void 0===r&&(r=!0);for(var o=e.map((function(t,e){return{score:t,boxIndex:e}})).sort((function(t,e){return t.score-e.score})).map((function(t){return t.boxIndex})),i=[],a=function(){var e=o.pop();i.push(e);for(var a=o,s=[],u=0;u<a.length;u++){var c=a[u],l=t[e],h=t[c];s.push($t(l,h,r))}o=o.filter((function(t,e){return s[e]<=n}))};o.length>0;)a();return i}function Jt(t,e){return Ot.L((function(){var n=e[0],r=e[1],o=e[2],i=Ot.n(Object(Tt.e)(t.shape.slice(0,3),[1]),n),a=Ot.n(Object(Tt.e)(t.shape.slice(0,3),[1]),r),s=Ot.n(Object(Tt.e)(t.shape.slice(0,3),[1]),o),u=Ot.h([i,a,s],3);return Ot.F(t,u)}))}function Qt(t){return 1/(1+Math.exp(-t))}var Zt=function(t){function e(e,n,r,o,i){return void 0===i&&(i=!1),t.call(this,{x:e,y:n,width:r,height:o},i)||this}return Object(Tt.c)(e,t),e}(Ht),te=function(){function t(t,e,n){void 0===n&&(n=new Gt(0,0));var r=e.width,o=e.height;this._imgDims=new Nt(r,o),this._shift=n,this._positions=t.map((function(t){return t.mul(new Gt(r,o)).add(n)}))}return Object.defineProperty(t.prototype,"shift",{get:function(){return new Gt(this._shift.x,this._shift.y)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageWidth",{get:function(){return this._imgDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageHeight",{get:function(){return this._imgDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"positions",{get:function(){return this._positions},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"relativePositions",{get:function(){var t=this;return this._positions.map((function(e){return e.sub(t._shift).div(new Gt(t.imageWidth,t.imageHeight))}))},enumerable:!0,configurable:!0}),t.prototype.forSize=function(t,e){return new this.constructor(this.relativePositions,{width:t,height:e})},t.prototype.shiftBy=function(t,e){return new this.constructor(this.relativePositions,this._imgDims,new Gt(t,e))},t.prototype.shiftByPoint=function(t){return this.shiftBy(t.x,t.y)},t.prototype.align=function(t,e){if(void 0===e&&(e={}),t){var n=t instanceof Xt?t.box.floor():new Ht(t);return this.shiftBy(n.x,n.y).align(null,e)}var r=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},e),o=r.useDlibAlignment,i=r.minBoxPadding;return o?this.alignDlib():this.alignMinBbox(i)},t.prototype.alignDlib=function(){var t=this.getRefPointsForAlignment(),e=t[0],n=t[1],r=t[2],o=function(t){return r.sub(t).magnitude()},i=(o(e)+o(n))/2,a=Math.floor(i/.45),s=Ut(t),u=Math.floor(Math.max(0,s.x-.5*a)),c=Math.floor(Math.max(0,s.y-.43*a));return new Zt(u,c,Math.min(a,this.imageWidth+u),Math.min(a,this.imageHeight+c))},t.prototype.alignMinBbox=function(t){var e,n,r,o,i,a,s,u=(e=this.positions,n=e.map((function(t){return t.x})),r=e.map((function(t){return t.y})),o=n.reduce((function(t,e){return e<t?e:t}),1/0),i=r.reduce((function(t,e){return e<t?e:t}),1/0),a=n.reduce((function(t,e){return t<e?e:t}),0),s=r.reduce((function(t,e){return t<e?e:t}),0),new qt(o,i,a,s));return u.pad(u.width*t,u.height*t)},t.prototype.getRefPointsForAlignment=function(){throw new Error("getRefPointsForAlignment not implemented by base class")},t}(),ee=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.getRefPointsForAlignment=function(){var t=this.positions;return[t[0],t[1],Ut([t[3],t[4]])]},e}(te),ne=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.getJawOutline=function(){return this.positions.slice(0,17)},e.prototype.getLeftEyeBrow=function(){return this.positions.slice(17,22)},e.prototype.getRightEyeBrow=function(){return this.positions.slice(22,27)},e.prototype.getNose=function(){return this.positions.slice(27,36)},e.prototype.getLeftEye=function(){return this.positions.slice(36,42)},e.prototype.getRightEye=function(){return this.positions.slice(42,48)},e.prototype.getMouth=function(){return this.positions.slice(48,68)},e.prototype.getRefPointsForAlignment=function(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Ut)},e}(te),re=function(){function t(t,e){this._label=t,this._distance=e}return Object.defineProperty(t.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"distance",{get:function(){return this._distance},enumerable:!0,configurable:!0}),t.prototype.toString=function(t){return void 0===t&&(t=!0),this.label+(t?" ("+Lt(this.distance)+")":"")},t}(),oe=function(t){function e(e,n){var r=t.call(this,e)||this;return r._label=n,r}return Object(Tt.c)(e,t),e.assertIsValidLabeledBox=function(t,e){if(Ht.assertIsValidBox(t,e),!zt(t.label))throw new Error(e+" - expected property label ("+t.label+") to be a number")},Object.defineProperty(e.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),e}(Ht),ie=function(){function t(t,e){if("string"!=typeof t)throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(e)||e.some((function(t){return!(t instanceof Float32Array)})))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=t,this._descriptors=e}return Object.defineProperty(t.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"descriptors",{get:function(){return this._descriptors},enumerable:!0,configurable:!0}),t.prototype.toJSON=function(){return{label:this.label,descriptors:this.descriptors.map((function(t){return Array.from(t)}))}},t.fromJSON=function(e){var n=e.descriptors.map((function(t){return new Float32Array(t)}));return new t(e.label,n)},t}();!function(t){function e(e,n,r,o){var i=t.call(this,e,n)||this;return i._score=r,i._classScore=o,i}Object(Tt.c)(e,t),e.assertIsValidPredictedBox=function(t,e){if(oe.assertIsValidLabeledBox(t,e),!Vt(t.score)||!Vt(t.classScore))throw new Error(e+" - expected properties score ("+t.score+") and ("+t.classScore+") to be a number between [0, 1]")},Object.defineProperty(e.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0})}(oe);function ae(t){return t.detection instanceof Xt}function se(t,e){var n={detection:e};return Object.assign({},t,n)}function ue(){var t=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D:CanvasRenderingContext2D,Image:HTMLImageElement,ImageData:ImageData,Video:HTMLVideoElement,createCanvasElement:function(){return document.createElement("canvas")},createImageElement:function(){return document.createElement("img")},fetch:t,readFile:function(){throw new Error("readFile - filesystem not available for browser environment")}}}var ce=n(13),le=n(19);function he(){return"object"==typeof window&&"undefined"!=typeof document&&"undefined"!=typeof HTMLImageElement&&"undefined"!=typeof HTMLCanvasElement&&"undefined"!=typeof HTMLVideoElement&&"undefined"!=typeof ImageData&&"undefined"!=typeof CanvasRenderingContext2D}var fe,pe=n(20);function de(t){fe=t}function ve(){he()&&de(ue()),Object(pe.a)()&&de(Object(le.a)())}var me,ge={getEnv:function(){if(!fe)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return fe},setEnv:de,initialize:ve,createBrowserEnv:ue,createFileSystem:ce.a,createNodejsEnv:le.a,monkeyPatch:function(t){if(fe||ve(),!fe)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");var e=t.Canvas,n=void 0===e?fe.Canvas:e,r=t.Image,o=void 0===r?fe.Image:r;fe.Canvas=n,fe.Image=o,fe.createCanvasElement=t.createCanvasElement||function(){return new n},fe.createImageElement=t.createImageElement||function(){return new o},fe.ImageData=t.ImageData||fe.ImageData,fe.Video=t.Video||fe.Video,fe.fetch=t.fetch||fe.fetch,fe.readFile=t.readFile||fe.readFile},isBrowser:he,isNodejs:pe.a};function ye(t){return ge.isNodejs()||"string"!=typeof t?t:document.getElementById(t)}function be(t){var e=ge.getEnv(),n=e.Canvas;if(t instanceof e.CanvasRenderingContext2D)return t;var r=ye(t);if(!(r instanceof n))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");var o=r.getContext("2d");if(!o)throw new Error("resolveContext2d - canvas 2d context is null");return o}ve(),function(t){t.TOP_LEFT="TOP_LEFT",t.TOP_RIGHT="TOP_RIGHT",t.BOTTOM_LEFT="BOTTOM_LEFT",t.BOTTOM_RIGHT="BOTTOM_RIGHT"}(me||(me={}));var xe=function(t){void 0===t&&(t={});var e=t.anchorPosition,n=t.backgroundColor,r=t.fontColor,o=t.fontSize,i=t.fontStyle,a=t.padding;this.anchorPosition=e||me.TOP_LEFT,this.backgroundColor=n||"rgba(0, 0, 0, 0.5)",this.fontColor=r||"rgba(255, 255, 255, 1)",this.fontSize=o||14,this.fontStyle=i||"Georgia",this.padding=a||4},we=function(){function t(e,n,r){void 0===r&&(r={}),this.text="string"==typeof e?[e]:e instanceof t?e.text:e,this.anchor=n,this.options=new xe(r)}return t.prototype.measureWidth=function(t){var e=this.options.padding;return this.text.map((function(e){return t.measureText(e).width})).reduce((function(t,e){return t<e?e:t}),0)+2*e},t.prototype.measureHeight=function(){var t=this.options,e=t.fontSize,n=t.padding;return this.text.length*e+2*n},t.prototype.getUpperLeft=function(t,e){var n=this.options.anchorPosition,r=n===me.BOTTOM_RIGHT||n===me.TOP_RIGHT,o=n===me.BOTTOM_LEFT||n===me.BOTTOM_RIGHT,i=this.measureWidth(t),a=this.measureHeight(),s=r?this.anchor.x-i:this.anchor.x,u=o?this.anchor.y-a:this.anchor.y;if(e){var c=e.width,l=e.height;return{x:Math.max(Math.min(s,c-i),0),y:Math.max(Math.min(u,l-a),0)}}return{x:s,y:u}},t.prototype.draw=function(t){var e=ye(t),n=be(e),r=this.options,o=r.backgroundColor,i=r.fontColor,a=r.fontSize,s=r.fontStyle,u=r.padding;n.font=a+"px "+s;var c=this.measureWidth(n),l=this.measureHeight();n.fillStyle=o;var h=this.getUpperLeft(n,e);n.fillRect(h.x,h.y,c,l),n.fillStyle=i,this.text.forEach((function(t,e){var r=u+h.x,o=u+h.y+(e+1)*a;n.fillText(t,r,o)}))},t}(),Ee=function(t){void 0===t&&(t={});var e=t.boxColor,n=t.lineWidth,r=t.label,o=t.drawLabelOptions;this.boxColor=e||"rgba(0, 0, 255, 1)",this.lineWidth=n||2,this.label=r;var i={anchorPosition:me.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new xe(Object.assign({},i,o))},Ce=function(){function t(t,e){void 0===e&&(e={}),this.box=new Ht(t),this.options=new Ee(e)}return t.prototype.draw=function(t){var e=be(t),n=this.options,r=n.boxColor,o=n.lineWidth,i=this.box,a=i.x,s=i.y,u=i.width,c=i.height;e.strokeStyle=r,e.lineWidth=o,e.strokeRect(a,s,u,c);var l=this.options.label;l&&new we([l],{x:a-o/2,y:s},this.options.drawLabelOptions).draw(t)},t}();function _e(t,e){(Array.isArray(e)?e:[e]).forEach((function(e){var n=e instanceof Xt?e.score:ae(e)?e.detection.score:void 0,r=e instanceof Xt?e.box:ae(e)?e.detection.box:new Ht(e),o=n?""+Lt(n):void 0;new Ce(r,{label:o}).draw(t)}))}function Re(t){var e=ge.getEnv(),n=e.Image,r=e.Video;return t instanceof n&&t.complete||t instanceof r&&t.readyState>=3}function Ie(t){var e=ge.getEnv(),n=e.Image,r=e.Video;return t instanceof n?new Nt(t.naturalWidth,t.naturalHeight):t instanceof r?new Nt(t.videoWidth,t.videoHeight):new Nt(t.width,t.height)}function ke(t){var e=t.width,n=t.height,r=(0,ge.getEnv().createCanvasElement)();return r.width=e,r.height=n,r}function Se(t,e){var n=ge.getEnv().ImageData;if(!(t instanceof n||Re(t)))throw new Error("createCanvasFromMedia - media has not finished loading yet");var r=e||Ie(t),o=r.width,i=r.height,a=ke({width:o,height:i});return t instanceof n?be(a).putImageData(t,0,0):be(a).drawImage(t,0,0,o,i),a}function Ae(t,e){return Object(Tt.b)(this,void 0,void 0,(function(){var n,r,o,i,a,s;return Object(Tt.d)(this,(function(u){switch(u.label){case 0:return n=e||ge.getEnv().createCanvasElement(),r=t.shape.slice(Pt(t)?1:0),o=r[0],i=r[1],a=r[2],s=Ot.L((function(){return t.as3D(o,i,a).toInt()})),[4,Ot.f.toPixels(s,n)];case 1:return u.sent(),s.dispose(),[2,n]}}))}))}function Oe(t){var e=ge.getEnv(),n=e.Image,r=e.Canvas,o=e.Video;return t instanceof n||t instanceof r||t instanceof o}var De=function(){function t(t,e){var n=this;if(void 0===e&&(e=!1),this._imageTensors=[],this._canvases=[],this._treatAsBatchInput=!1,this._inputDimensions=[],!Array.isArray(t))throw new Error("NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have "+t);this._treatAsBatchInput=e,this._batchSize=t.length,t.forEach((function(t,e){if(Mt(t))return n._imageTensors[e]=t,void(n._inputDimensions[e]=t.shape);if(Pt(t)){var r=t.shape[0];if(1!==r)throw new Error("NetInput - tf.Tensor4D with batchSize "+r+" passed, but not supported in input array");return n._imageTensors[e]=t,void(n._inputDimensions[e]=t.shape.slice(1))}var o=t instanceof ge.getEnv().Canvas?t:Se(t);n._canvases[e]=o,n._inputDimensions[e]=[o.height,o.width,3]}))}return Object.defineProperty(t.prototype,"imageTensors",{get:function(){return this._imageTensors},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"canvases",{get:function(){return this._canvases},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isBatchInput",{get:function(){return this.batchSize>1||this._treatAsBatchInput},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"batchSize",{get:function(){return this._batchSize},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputDimensions",{get:function(){return this._inputDimensions},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"reshapedInputDimensions",{get:function(){var t=this;return jt(this.batchSize,0,1).map((function(e,n){return t.getReshapedInputDimensions(n)}))},enumerable:!0,configurable:!0}),t.prototype.getInput=function(t){return this.canvases[t]||this.imageTensors[t]},t.prototype.getInputDimensions=function(t){return this._inputDimensions[t]},t.prototype.getInputHeight=function(t){return this._inputDimensions[t][0]},t.prototype.getInputWidth=function(t){return this._inputDimensions[t][1]},t.prototype.getReshapedInputDimensions=function(t){if("number"!=typeof this.inputSize)throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");return function(t,e){var n=t.width,r=t.height,o=e/Math.max(r,n);return new Nt(Math.round(n*o),Math.round(r*o))}({width:this.getInputWidth(t),height:this.getInputHeight(t)},this.inputSize)},t.prototype.toBatchTensor=function(t,e){var n=this;return void 0===e&&(e=!0),this._inputSize=t,Ot.L((function(){var r=jt(n.batchSize,0,1).map((function(r){var o=n.getInput(r);if(o instanceof Ot.a){var i=Pt(o)?o:o.expandDims();return(i=function(t,e){return void 0===e&&(e=!1),Ot.L((function(){var n=t.shape.slice(1),r=n[0],o=n[1];if(r===o)return t;var i=Math.abs(r-o),a=Math.round(i*(e?.5:1)),s=r>o?2:1,u=function(e){var n=t.shape.slice();return n[s]=e,Ot.n(n,0)},c=u(a),l=i-c.shape[s],h=[e&&l?u(l):null,t,c].filter((function(t){return!!t})).map((function(t){return t.toFloat()}));return Ot.h(h,s)}))}(i,e)).shape[1]===t&&i.shape[2]===t||(i=Ot.o.resizeBilinear(i,[t,t])),i.as3D(t,t,3)}if(o instanceof ge.getEnv().Canvas)return Ot.f.fromPixels(function(t,e,n){void 0===n&&(n=!1);var r=ge.getEnv(),o=r.Image,i=r.Canvas;if(!(t instanceof o||t instanceof i))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");var a=Ie(t),s=e/Math.max(a.height,a.width),u=s*a.width,c=s*a.height,l=ke({width:e,height:e}),h=t instanceof i?t:Se(t),f=Math.abs(u-c)/2,p=n&&u<c?f:0,d=n&&c<u?f:0;return be(l).drawImage(h,p,d,u,c),l}(o,t,e));throw new Error("toBatchTensor - at batchIdx "+r+", expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have "+o)}));return Ot.E(r.map((function(t){return t.toFloat()}))).as4D(n.batchSize,t,t,3)}))},t}();function Te(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e,n,r;return Object(Tt.d)(this,(function(o){switch(o.label){case 0:if(t instanceof De)return[2,t];if(!(e=Array.isArray(t)?t:[t]).length)throw new Error("toNetInput - empty array passed as input");return n=function(e){return Array.isArray(t)?" at input index "+e+":":""},(r=e.map(ye)).forEach((function(t,r){if(!Oe(t)&&!Mt(t)&&!Pt(t)){if("string"==typeof e[r])throw new Error("toNetInput -"+n(r)+" string passed, but could not resolve HTMLElement for element id "+e[r]);throw new Error("toNetInput -"+n(r)+" expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id")}if(Pt(t)){var o=t.shape[0];if(1!==o)throw new Error("toNetInput -"+n(r)+" tf.Tensor4D with batchSize "+o+" passed, but not supported in input array")}})),[4,Promise.all(r.map((function(t){return Oe(t)&&(e=t,new Promise((function(t,n){if(e instanceof ge.getEnv().Canvas||Re(e))return t();function r(e){e.currentTarget&&(e.currentTarget.removeEventListener("load",r),e.currentTarget.removeEventListener("error",o),t(e))}function o(t){t.currentTarget&&(t.currentTarget.removeEventListener("load",r),t.currentTarget.removeEventListener("error",o),n(t))}e.addEventListener("load",r),e.addEventListener("error",o)})));var e})))];case 1:return o.sent(),[2,new De(r,Array.isArray(t))]}}))}))}function Ne(t,e){return Object(Tt.b)(this,void 0,void 0,(function(){var n,r,o,i,a,s;return Object(Tt.d)(this,(function(u){switch(u.label){case 0:return n=ge.getEnv().Canvas,r=t,t instanceof n?[3,5]:[4,Te(t)];case 1:if((o=u.sent()).batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");return(i=o.getInput(0))instanceof n?(a=i,[3,4]):[3,2];case 2:return[4,Ae(i)];case 3:a=u.sent(),u.label=4;case 4:r=a,u.label=5;case 5:return s=be(r),[2,e.map((function(t){return t instanceof Xt?t.forSize(r.width,r.height).box.floor():t})).map((function(t){return t.clipAtImageBorders(r.width,r.height)})).map((function(t){var e=t.x,n=t.y,r=t.width,o=t.height,i=ke({width:r,height:o});return be(i).putImageData(s.getImageData(e,n,r,o),0,0),i}))]}}))}))}function Fe(t,e){return Object(Tt.b)(this,void 0,void 0,(function(){return Object(Tt.d)(this,(function(n){if(!Mt(t)&&!Pt(t))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(Pt(t)&&t.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return[2,Ot.L((function(){var n=t.shape.slice(Pt(t)?1:0),r=n[0],o=n[1],i=n[2];return e.map((function(t){return t instanceof Xt?t.forSize(o,r).box:t})).map((function(t){return t.clipAtImageBorders(o,r)})).map((function(e){var n=e.x,a=e.y,s=e.width,u=e.height;return Ot.C(t.as3D(r,o,i),[a,n,0],[u,s,i])}))}))]}))}))}function Me(t,e){return Object(Tt.b)(this,void 0,void 0,(function(){var n;return Object(Tt.d)(this,(function(r){switch(r.label){case 0:return[4,(0,ge.getEnv().fetch)(t,e)];case 1:if(!((n=r.sent()).status<400))throw new Error("failed to fetch: ("+n.status+") "+n.statusText+", from url: "+n.url);return[2,n]}}))}))}function Pe(t){return Object(Tt.b)(this,void 0,void 0,(function(){return Object(Tt.d)(this,(function(e){switch(e.label){case 0:return[4,Me(t)];case 1:return[2,e.sent().json()]}}))}))}function Be(t,e){var n=e+"-weights_manifest.json";if(!t)return{modelBaseUri:"",manifestUri:n};if("/"===t)return{modelBaseUri:"/",manifestUri:"/"+n};var r=t.startsWith("http://")?"http://":t.startsWith("https://")?"https://":"",o=(t=t.replace(r,"")).split("/").filter((function(t){return t})),i=t.endsWith(".json")?o[o.length-1]:n,a=r+(t.endsWith(".json")?o.slice(0,o.length-1):o).join("/");return{modelBaseUri:a=t.startsWith("/")?"/"+a:a,manifestUri:"/"===a?"/"+i:a+"/"+i}}function Le(t,e){return Object(Tt.b)(this,void 0,void 0,(function(){var n,r,o,i;return Object(Tt.d)(this,(function(a){switch(a.label){case 0:return n=Be(t,e),r=n.manifestUri,o=n.modelBaseUri,[4,Pe(r)];case 1:return i=a.sent(),[2,Ot.p.loadWeights(i,o)]}}))}))}var We=function(){function t(t){this._name=t,this._params=void 0,this._paramMappings=[]}return Object.defineProperty(t.prototype,"params",{get:function(){return this._params},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"paramMappings",{get:function(){return this._paramMappings},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLoaded",{get:function(){return!!this.params},enumerable:!0,configurable:!0}),t.prototype.getParamFromPath=function(t){var e=this.traversePropertyPath(t);return e.obj[e.objProp]},t.prototype.reassignParamFromPath=function(t,e){var n=this.traversePropertyPath(t),r=n.obj,o=n.objProp;r[o].dispose(),r[o]=e},t.prototype.getParamList=function(){var t=this;return this._paramMappings.map((function(e){var n=e.paramPath;return{path:n,tensor:t.getParamFromPath(n)}}))},t.prototype.getTrainableParams=function(){return this.getParamList().filter((function(t){return t.tensor instanceof Ot.b}))},t.prototype.getFrozenParams=function(){return this.getParamList().filter((function(t){return!(t.tensor instanceof Ot.b)}))},t.prototype.variable=function(){var t=this;this.getFrozenParams().forEach((function(e){var n=e.path,r=e.tensor;t.reassignParamFromPath(n,r.variable())}))},t.prototype.freeze=function(){var t=this;this.getTrainableParams().forEach((function(e){var n=e.path,r=e.tensor,o=Ot.G(r.dataSync());r.dispose(),t.reassignParamFromPath(n,o)}))},t.prototype.dispose=function(t){void 0===t&&(t=!0),this.getParamList().forEach((function(e){if(t&&e.tensor.isDisposed)throw new Error("param tensor has already been disposed for path "+e.path);e.tensor.dispose()})),this._params=void 0},t.prototype.serializeParams=function(){return new Float32Array(this.getParamList().map((function(t){var e=t.tensor;return Array.from(e.dataSync())})).reduce((function(t,e){return t.concat(e)})))},t.prototype.load=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){return Object(Tt.d)(this,(function(e){switch(e.label){case 0:return t instanceof Float32Array?(this.extractWeights(t),[2]):[4,this.loadFromUri(t)];case 1:return e.sent(),[2]}}))}))},t.prototype.loadFromUri=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:if(t&&"string"!=typeof t)throw new Error(this._name+".loadFromUri - expected model uri");return[4,Le(t,this.getDefaultModelName())];case 1:return e=n.sent(),this.loadFromWeightMap(e),[2]}}))}))},t.prototype.loadFromDisk=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e,n,r,o,i,a,s,u,c,l;return Object(Tt.d)(this,(function(h){switch(h.label){case 0:if(t&&"string"!=typeof t)throw new Error(this._name+".loadFromDisk - expected model file path");return e=ge.getEnv().readFile,n=Be(t,this.getDefaultModelName()),r=n.manifestUri,o=n.modelBaseUri,i=function(t){return Promise.all(t.map((function(t){return e(t).then((function(t){return t.buffer}))})))},a=Ot.p.weightsLoaderFactory(i),c=(u=JSON).parse,[4,e(r)];case 1:return s=c.apply(u,[h.sent().toString()]),[4,a(s,o)];case 2:return l=h.sent(),this.loadFromWeightMap(l),[2]}}))}))},t.prototype.loadFromWeightMap=function(t){var e=this.extractParamsFromWeigthMap(t),n=e.paramMappings,r=e.params;this._paramMappings=n,this._params=r},t.prototype.extractWeights=function(t){var e=this.extractParams(t),n=e.paramMappings,r=e.params;this._paramMappings=n,this._params=r},t.prototype.traversePropertyPath=function(t){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");var e=t.split("/").reduce((function(e,n){if(!e.nextObj.hasOwnProperty(n))throw new Error("traversePropertyPath - object does not have property "+n+", for path "+t);return{obj:e.nextObj,objProp:n,nextObj:e.nextObj[n]}}),{nextObj:this.params}),n=e.obj,r=e.objProp;if(!(n&&r&&n[r]instanceof Ot.a))throw new Error("traversePropertyPath - parameter is not a tensor, for path "+t);return{obj:n,objProp:r}},t}();function Ue(t,e,n){return Ot.L((function(){var r=Ot.z(t,e.depthwise_filter,e.pointwise_filter,n,"same");return r=Ot.c(r,e.bias)}))}function je(t,e,n){return void 0===n&&(n=!1),Ot.L((function(){var r=Ot.w(n?Ot.c(Ot.i(t,e.conv0.filters,[2,2],"same"),e.conv0.bias):Ue(t,e.conv0,[2,2])),o=Ue(r,e.conv1,[1,1]),i=Ue(Ot.w(Ot.c(r,o)),e.conv2,[1,1]);return Ot.w(Ot.c(r,Ot.c(o,i)))}))}function ze(t,e,n,r){return void 0===n&&(n=!1),void 0===r&&(r=!0),Ot.L((function(){var o=Ot.w(n?Ot.c(Ot.i(t,e.conv0.filters,r?[2,2]:[1,1],"same"),e.conv0.bias):Ue(t,e.conv0,r?[2,2]:[1,1])),i=Ue(o,e.conv1,[1,1]),a=Ue(Ot.w(Ot.c(o,i)),e.conv2,[1,1]),s=Ue(Ot.w(Ot.c(o,Ot.c(i,a))),e.conv3,[1,1]);return Ot.w(Ot.c(o,Ot.c(i,Ot.c(a,s))))}))}function Ve(t,e,n,r){return void 0===n&&(n="same"),void 0===r&&(r=!1),Ot.L((function(){var o=Ot.c(Ot.i(t,e.filters,[1,1],n),e.bias);return r?Ot.w(o):o}))}function Ge(t,e){Object.keys(t).forEach((function(n){e.some((function(t){return t.originalPath===n}))||t[n].dispose()}))}function He(t,e){return function(n,r,o,i){var a=Ot.K(t(n*r*o*o),[o,o,n,r]),s=Ot.H(t(r));return e.push({paramPath:i+"/filters"},{paramPath:i+"/bias"}),{filters:a,bias:s}}}function qe(t,e){return function(n,r,o){var i=Ot.I(t(n*r),[n,r]),a=Ot.H(t(r));return e.push({paramPath:o+"/weights"},{paramPath:o+"/bias"}),{weights:i,bias:a}}}var Ke=function(t,e,n){this.depthwise_filter=t,this.pointwise_filter=e,this.bias=n};function Xe(t,e){return function(n,r,o){var i=Ot.K(t(9*n),[3,3,n,1]),a=Ot.K(t(n*r),[1,1,n,r]),s=Ot.H(t(r));return e.push({paramPath:o+"/depthwise_filter"},{paramPath:o+"/pointwise_filter"},{paramPath:o+"/bias"}),new Ke(i,a,s)}}function $e(t){return function(e){var n=t(e+"/depthwise_filter",4),r=t(e+"/pointwise_filter",4),o=t(e+"/bias",1);return new Ke(n,r,o)}}function Ye(t,e){return function(n,r,o){var i=t[n];if(!Ft(i,r))throw new Error("expected weightMap["+n+"] to be a Tensor"+r+"D, instead have "+i);return e.push({originalPath:n,paramPath:o||n}),i}}function Je(t){var e=t;return{extractWeights:function(t){var n=e.slice(0,t);return e=e.slice(t),n},getRemainingWeights:function(){return e}}}function Qe(t,e){var n=He(t,e),r=Xe(t,e);function o(t,e,o,i){return void 0===i&&(i=!1),{conv0:i?n(t,e,3,o+"/conv0"):r(t,e,o+"/conv0"),conv1:r(e,e,o+"/conv1"),conv2:r(e,e,o+"/conv2")}}return{extractDenseBlock3Params:o,extractDenseBlock4Params:function(t,e,n,i){void 0===i&&(i=!1);var a=o(t,e,n,i);return{conv0:a.conv0,conv1:a.conv1,conv2:a.conv2,conv3:r(e,e,n+"/conv3")}}}}function Ze(t){return function(e){return{filters:t(e+"/filters",4),bias:t(e+"/bias",1)}}}function tn(t,e){var n=Ye(t,e),r=Ze(n),o=$e(n);return{extractDenseBlock3Params:function(t,e){return void 0===e&&(e=!1),{conv0:e?r(t+"/conv0"):o(t+"/conv0"),conv1:o(t+"/conv1"),conv2:o(t+"/conv2")}},extractDenseBlock4Params:function(t,e){return void 0===e&&(e=!1),{conv0:e?r(t+"/conv0"):o(t+"/conv0"),conv1:o(t+"/conv1"),conv2:o(t+"/conv2"),conv3:o(t+"/conv3")}}}}var en=function(t){function e(){return t.call(this,"FaceFeatureExtractor")||this}return Object(Tt.c)(e,t),e.prototype.forwardInput=function(t){var e=this.params;if(!e)throw new Error("FaceFeatureExtractor - load model before inference");return Ot.L((function(){var n=ze(Jt(t.toBatchTensor(112,!0),[122.782,117.001,104.298]).div(Ot.y(255)),e.dense0,!0);return n=ze(n,e.dense1),n=ze(n,e.dense2),n=ze(n,e.dense3),n=Ot.d(n,[7,7],[2,2],"valid")}))},e.prototype.forward=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Te(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.getDefaultModelName=function(){return"face_feature_extractor_model"},e.prototype.extractParamsFromWeigthMap=function(t){return function(t){var e=[],n=tn(t,e).extractDenseBlock4Params,r={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2"),dense3:n("dense3")};return Ge(t,e),{params:r,paramMappings:e}}(t)},e.prototype.extractParams=function(t){return function(t){var e=[],n=Je(t),r=n.extractWeights,o=n.getRemainingWeights,i=Qe(r,e).extractDenseBlock4Params,a=i(3,32,"dense0",!0),s=i(32,64,"dense1"),u=i(64,128,"dense2"),c=i(128,256,"dense3");if(0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:e,params:{dense0:a,dense1:s,dense2:u,dense3:c}}}(t)},e}(We);function nn(t,e){return Ot.L((function(){return Ot.c(Ot.q(t,e.weights),e.bias)}))}function rn(t){var e={},n={};return Object.keys(t).forEach((function(r){(r.startsWith("fc")?n:e)[r]=t[r]})),{featureExtractorMap:e,classifierMap:n}}var on=function(t){function e(e,n){var r=t.call(this,e)||this;return r._faceFeatureExtractor=n,r}return Object(Tt.c)(e,t),Object.defineProperty(e.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),e.prototype.runNet=function(t){var e=this,n=this.params;if(!n)throw new Error(this._name+" - load model before inference");return Ot.L((function(){var r=t instanceof De?e.faceFeatureExtractor.forwardInput(t):t;return nn(r.as2D(r.shape[0],-1),n.fc)}))},e.prototype.dispose=function(e){void 0===e&&(e=!0),this.faceFeatureExtractor.dispose(e),t.prototype.dispose.call(this,e)},e.prototype.loadClassifierParams=function(t){var e=this.extractClassifierParams(t),n=e.params,r=e.paramMappings;this._params=n,this._paramMappings=r},e.prototype.extractClassifierParams=function(t){return function(t,e,n){var r=[],o=Je(t),i=o.extractWeights,a=o.getRemainingWeights,s=qe(i,r)(e,n,"fc");if(0!==a().length)throw new Error("weights remaing after extract: "+a().length);return{paramMappings:r,params:{fc:s}}}(t,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())},e.prototype.extractParamsFromWeigthMap=function(t){var e=rn(t),n=e.featureExtractorMap,r=e.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(n),function(t){var e,n=[],r=Ye(t,n),o={fc:(e="fc",{weights:r(e+"/weights",2),bias:r(e+"/bias",1)})};return Ge(t,n),{params:o,paramMappings:n}}(r)},e.prototype.extractParams=function(t){var e=this.getClassifierChannelsIn(),n=this.getClassifierChannelsOut(),r=n*e+n,o=t.slice(0,t.length-r),i=t.slice(t.length-r);return this.faceFeatureExtractor.extractWeights(o),this.extractClassifierParams(i)},e}(We),an=["neutral","happy","sad","angry","fearful","disgusted","surprised"],sn=function(){function t(t){var e=this;if(7!==t.length)throw new Error("FaceExpressions.constructor - expected probabilities.length to be 7, have: "+t.length);an.forEach((function(n,r){e[n]=t[r]}))}return t.prototype.asSortedArray=function(){var t=this;return an.map((function(e){return{expression:e,probability:t[e]}})).sort((function(t,e){return e.probability-t.probability}))},t}(),un=function(t){function e(e){return void 0===e&&(e=new en),t.call(this,"FaceExpressionNet",e)||this}return Object(Tt.c)(e,t),e.prototype.forwardInput=function(t){var e=this;return Ot.L((function(){return Ot.D(e.runNet(t))}))},e.prototype.forward=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Te(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.predictExpressions=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e,n,r,o,i=this;return Object(Tt.d)(this,(function(a){switch(a.label){case 0:return[4,Te(t)];case 1:return e=a.sent(),[4,this.forwardInput(e)];case 2:return n=a.sent(),[4,Promise.all(Ot.O(n).map((function(t){return Object(Tt.b)(i,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return[4,t.data()];case 1:return e=n.sent(),t.dispose(),[2,e]}}))}))})))];case 3:return r=a.sent(),n.dispose(),o=r.map((function(t){return new sn(t)})),[2,e.isBatchInput?o:o[0]]}}))}))},e.prototype.getDefaultModelName=function(){return"face_expression_model"},e.prototype.getClassifierChannelsIn=function(){return 256},e.prototype.getClassifierChannelsOut=function(){return 7},e}(on);function cn(t,e){var n={expressions:e};return Object.assign({},t,n)}function ln(t,e,n,r){void 0===n&&(n=.1),(Array.isArray(e)?e:[e]).forEach((function(e){var o=e instanceof sn?e:e.expressions instanceof sn?e.expressions:void 0;if(!o)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");var i=o.asSortedArray().filter((function(t){return t.probability>n})),a=ae(e)?e.detection.box.bottomLeft:r||new Gt(0,0);new we(i.map((function(t){return t.expression+" ("+Lt(t.probability)+")"})),a).draw(t)}))}function hn(t){return ae(t)&&t.landmarks instanceof te&&t.unshiftedLandmarks instanceof te&&t.alignedRect instanceof Xt}function fn(t,e){var n=t.detection.box,r=e.shiftBy(n.x,n.y),o=r.align(),i=t.detection.imageDims,a={landmarks:r,unshiftedLandmarks:e,alignedRect:new Xt(t.detection.score,o.rescale(i.reverse()),i)};return Object.assign({},t,a)}var pn=function(t){void 0===t&&(t={});var e=t.drawLines,n=void 0===e||e,r=t.drawPoints,o=void 0===r||r,i=t.lineWidth,a=t.lineColor,s=t.pointSize,u=t.pointColor;this.drawLines=n,this.drawPoints=o,this.lineWidth=i||1,this.pointSize=s||2,this.lineColor=a||"rgba(0, 255, 255, 1)",this.pointColor=u||"rgba(255, 0, 255, 1)"},dn=function(){function t(t,e){void 0===e&&(e={}),this.faceLandmarks=t,this.options=new pn(e)}return t.prototype.draw=function(t){var e=be(t),n=this.options,r=n.drawLines,o=n.drawPoints,i=n.lineWidth,a=n.lineColor,s=n.pointSize,u=n.pointColor;if(r&&this.faceLandmarks instanceof ne&&(e.strokeStyle=a,e.lineWidth=i,Dt(e,this.faceLandmarks.getJawOutline()),Dt(e,this.faceLandmarks.getLeftEyeBrow()),Dt(e,this.faceLandmarks.getRightEyeBrow()),Dt(e,this.faceLandmarks.getNose()),Dt(e,this.faceLandmarks.getLeftEye(),!0),Dt(e,this.faceLandmarks.getRightEye(),!0),Dt(e,this.faceLandmarks.getMouth(),!0)),o){e.strokeStyle=u,e.fillStyle=u;this.faceLandmarks.positions.forEach((function(t){e.beginPath(),e.arc(t.x,t.y,s,0,2*Math.PI),e.fill()}))}},t}();function vn(t,e){(Array.isArray(e)?e:[e]).forEach((function(e){var n=e instanceof te?e:hn(e)?e.landmarks:void 0;if(!n)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks<WithFaceDetection<{}>> or array thereof");new dn(n).draw(t)}))}function mn(t,e){var n=[],r=Je(t),o=r.extractWeights,i=r.getRemainingWeights,a=function(t,e){var n=He(t,e),r=Xe(t,e);return{extractConvParams:n,extractSeparableConvParams:r,extractReductionBlockParams:function(t,e,o){return{separable_conv0:r(t,e,o+"/separable_conv0"),separable_conv1:r(e,e,o+"/separable_conv1"),expansion_conv:n(t,e,1,o+"/expansion_conv")}},extractMainBlockParams:function(t,e){return{separable_conv0:r(t,t,e+"/separable_conv0"),separable_conv1:r(t,t,e+"/separable_conv1"),separable_conv2:r(t,t,e+"/separable_conv2")}}}}(o,n),s=a.extractConvParams,u=a.extractSeparableConvParams,c=a.extractReductionBlockParams,l=a.extractMainBlockParams,h={conv_in:s(3,32,3,"entry_flow/conv_in"),reduction_block_0:c(32,64,"entry_flow/reduction_block_0"),reduction_block_1:c(64,128,"entry_flow/reduction_block_1")},f={};jt(e,0,1).forEach((function(t){f["main_block_"+t]=l(128,"middle_flow/main_block_"+t)}));var p={reduction_block:c(128,256,"exit_flow/reduction_block"),separable_conv:u(256,512,"exit_flow/separable_conv")};if(0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:n,params:{entry_flow:h,middle_flow:f,exit_flow:p}}}function gn(t,e){var n=[],r=function(t,e){var n=Ye(t,e),r=Ze(n),o=$e(n);return{extractConvParams:r,extractSeparableConvParams:o,extractReductionBlockParams:function(t){return{separable_conv0:o(t+"/separable_conv0"),separable_conv1:o(t+"/separable_conv1"),expansion_conv:r(t+"/expansion_conv")}},extractMainBlockParams:function(t){return{separable_conv0:o(t+"/separable_conv0"),separable_conv1:o(t+"/separable_conv1"),separable_conv2:o(t+"/separable_conv2")}}}}(t,n),o=r.extractConvParams,i=r.extractSeparableConvParams,a=r.extractReductionBlockParams,s=r.extractMainBlockParams,u={conv_in:o("entry_flow/conv_in"),reduction_block_0:a("entry_flow/reduction_block_0"),reduction_block_1:a("entry_flow/reduction_block_1")},c={};jt(e,0,1).forEach((function(t){c["main_block_"+t]=s("middle_flow/main_block_"+t)}));var l={reduction_block:a("exit_flow/reduction_block"),separable_conv:i("exit_flow/separable_conv")};return Ge(t,n),{params:{entry_flow:u,middle_flow:c,exit_flow:l},paramMappings:n}}function yn(t,e,n){return Ot.c(Ot.i(t,e.filters,n,"same"),e.bias)}function bn(t,e,n){void 0===n&&(n=!0);var r=n?Ot.w(t):t;return r=Ue(r,e.separable_conv0,[1,1]),r=Ue(Ot.w(r),e.separable_conv1,[1,1]),r=Ot.s(r,[3,3],[2,2],"same"),r=Ot.c(r,yn(t,e.expansion_conv,[2,2]))}var xn,wn=function(t){function e(e){var n=t.call(this,"TinyXception")||this;return n._numMainBlocks=e,n}return Object(Tt.c)(e,t),e.prototype.forwardInput=function(t){var e=this,n=this.params;if(!n)throw new Error("TinyXception - load model before inference");return Ot.L((function(){var r=Jt(t.toBatchTensor(112,!0),[122.782,117.001,104.298]).div(Ot.y(256)),o=Ot.w(yn(r,n.entry_flow.conv_in,[2,2]));return o=bn(o,n.entry_flow.reduction_block_0,!1),o=bn(o,n.entry_flow.reduction_block_1),jt(e._numMainBlocks,0,1).forEach((function(t){o=function(t,e){var n=Ue(Ot.w(t),e.separable_conv0,[1,1]);return n=Ue(Ot.w(n),e.separable_conv1,[1,1]),n=Ue(Ot.w(n),e.separable_conv2,[1,1]),n=Ot.c(n,t)}(o,n.middle_flow["main_block_"+t])})),o=bn(o,n.exit_flow.reduction_block),o=Ot.w(Ue(o,n.exit_flow.separable_conv,[1,1]))}))},e.prototype.forward=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Te(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.getDefaultModelName=function(){return"tiny_xception_model"},e.prototype.extractParamsFromWeigthMap=function(t){return gn(t,this._numMainBlocks)},e.prototype.extractParams=function(t){return mn(t,this._numMainBlocks)},e}(We);!function(t){t.FEMALE="female",t.MALE="male"}(xn||(xn={}));var En=function(t){function e(e){void 0===e&&(e=new wn(2));var n=t.call(this,"AgeGenderNet")||this;return n._faceFeatureExtractor=e,n}return Object(Tt.c)(e,t),Object.defineProperty(e.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),e.prototype.runNet=function(t){var e=this,n=this.params;if(!n)throw new Error(this._name+" - load model before inference");return Ot.L((function(){var r=t instanceof De?e.faceFeatureExtractor.forwardInput(t):t,o=Ot.d(r,[7,7],[2,2],"valid").as2D(r.shape[0],-1);return{age:nn(o,n.fc.age).as1D(),gender:nn(o,n.fc.gender)}}))},e.prototype.forwardInput=function(t){var e=this;return Ot.L((function(){var n=e.runNet(t),r=n.age,o=n.gender;return{age:r,gender:Ot.D(o)}}))},e.prototype.forward=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Te(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.predictAgeAndGender=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e,n,r,o,i,a,s=this;return Object(Tt.d)(this,(function(u){switch(u.label){case 0:return[4,Te(t)];case 1:return e=u.sent(),[4,this.forwardInput(e)];case 2:return n=u.sent(),r=Ot.O(n.age),o=Ot.O(n.gender),i=r.map((function(t,e){return{ageTensor:t,genderTensor:o[e]}})),[4,Promise.all(i.map((function(t){var e=t.ageTensor,n=t.genderTensor;return Object(Tt.b)(s,void 0,void 0,(function(){var t,r,o,i,a;return Object(Tt.d)(this,(function(s){switch(s.label){case 0:return[4,e.data()];case 1:return t=s.sent()[0],[4,n.data()];case 2:return r=s.sent()[0],i=(o=r>.5)?xn.MALE:xn.FEMALE,a=o?r:1-r,e.dispose(),n.dispose(),[2,{age:t,gender:i,genderProbability:a}]}}))}))})))];case 3:return a=u.sent(),n.age.dispose(),n.gender.dispose(),[2,e.isBatchInput?a:a[0]]}}))}))},e.prototype.getDefaultModelName=function(){return"age_gender_model"},e.prototype.dispose=function(e){void 0===e&&(e=!0),this.faceFeatureExtractor.dispose(e),t.prototype.dispose.call(this,e)},e.prototype.loadClassifierParams=function(t){var e=this.extractClassifierParams(t),n=e.params,r=e.paramMappings;this._params=n,this._paramMappings=r},e.prototype.extractClassifierParams=function(t){return function(t){var e=[],n=Je(t),r=n.extractWeights,o=n.getRemainingWeights,i=qe(r,e),a=i(512,1,"fc/age"),s=i(512,2,"fc/gender");if(0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:e,params:{fc:{age:a,gender:s}}}}(t)},e.prototype.extractParamsFromWeigthMap=function(t){var e=rn(t),n=e.featureExtractorMap,r=e.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(n),function(t){var e=[],n=Ye(t,e);function r(t){return{weights:n(t+"/weights",2),bias:n(t+"/bias",1)}}var o={fc:{age:r("fc/age"),gender:r("fc/gender")}};return Ge(t,e),{params:o,paramMappings:e}}(r)},e.prototype.extractParams=function(t){var e=t.slice(0,t.length-1539),n=t.slice(t.length-1539);return this.faceFeatureExtractor.extractWeights(e),this.extractClassifierParams(n)},e}(We),Cn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.postProcess=function(t,e,n){var r=n.map((function(t){var n=t.width,r=t.height,o=e/Math.max(r,n);return{width:n*o,height:r*o}})),o=r.length;return Ot.L((function(){var n=function(t,e){return Ot.E([Ot.n([68],t),Ot.n([68],e)],1).as2D(1,136).as1D()},i=function(t,e){var n=r[t],o=n.width,i=n.height;return e(o,i)?Math.abs(o-i)/2:0};return t.mul(Ot.n([o,136],e)).sub(Ot.E(Array.from(Array(o),(function(t,e){return n(function(t){return i(t,(function(t,e){return t<e}))}(e),function(t){return i(t,(function(t,e){return e<t}))}(e))})))).div(Ot.E(Array.from(Array(o),(function(t,e){return n(r[e].width,r[e].height)}))))}))},e.prototype.forwardInput=function(t){var e=this;return Ot.L((function(){var n=e.runNet(t);return e.postProcess(n,t.inputSize,t.inputDimensions.map((function(t){return{height:t[0],width:t[1]}})))}))},e.prototype.forward=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Te(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.detectLandmarks=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e,n,r,o=this;return Object(Tt.d)(this,(function(i){switch(i.label){case 0:return[4,Te(t)];case 1:return e=i.sent(),n=Ot.L((function(){return Ot.O(o.forwardInput(e))})),[4,Promise.all(n.map((function(t,n){return Object(Tt.b)(o,void 0,void 0,(function(){var r,o,i,a,s;return Object(Tt.d)(this,(function(u){switch(u.label){case 0:return i=(o=Array).from,[4,t.data()];case 1:return r=i.apply(o,[u.sent()]),a=r.filter((function(t,e){return Bt(e)})),s=r.filter((function(t,e){return!Bt(e)})),[2,new ne(Array(68).fill(0).map((function(t,e){return new Gt(a[e],s[e])})),{height:e.getInputHeight(n),width:e.getInputWidth(n)})]}}))}))})))];case 2:return r=i.sent(),n.forEach((function(t){return t.dispose()})),[2,e.isBatchInput?r:r[0]]}}))}))},e.prototype.getClassifierChannelsOut=function(){return 136},e}(on),_n=function(t){function e(e){return void 0===e&&(e=new en),t.call(this,"FaceLandmark68Net",e)||this}return Object(Tt.c)(e,t),e.prototype.getDefaultModelName=function(){return"face_landmark_68_model"},e.prototype.getClassifierChannelsIn=function(){return 256},e}(Cn);var Rn=function(t){function e(){return t.call(this,"TinyFaceFeatureExtractor")||this}return Object(Tt.c)(e,t),e.prototype.forwardInput=function(t){var e=this.params;if(!e)throw new Error("TinyFaceFeatureExtractor - load model before inference");return Ot.L((function(){var n=je(Jt(t.toBatchTensor(112,!0),[122.782,117.001,104.298]).div(Ot.y(255)),e.dense0,!0);return n=je(n,e.dense1),n=je(n,e.dense2),n=Ot.d(n,[14,14],[2,2],"valid")}))},e.prototype.forward=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Te(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.getDefaultModelName=function(){return"face_feature_extractor_tiny_model"},e.prototype.extractParamsFromWeigthMap=function(t){return function(t){var e=[],n=tn(t,e).extractDenseBlock3Params,r={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2")};return Ge(t,e),{params:r,paramMappings:e}}(t)},e.prototype.extractParams=function(t){return function(t){var e=[],n=Je(t),r=n.extractWeights,o=n.getRemainingWeights,i=Qe(r,e).extractDenseBlock3Params,a=i(3,32,"dense0",!0),s=i(32,64,"dense1"),u=i(64,128,"dense2");if(0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:e,params:{dense0:a,dense1:s,dense2:u}}}(t)},e}(We),In=function(t){function e(e){return void 0===e&&(e=new Rn),t.call(this,"FaceLandmark68TinyNet",e)||this}return Object(Tt.c)(e,t),e.prototype.getDefaultModelName=function(){return"face_landmark_68_tiny_model"},e.prototype.getClassifierChannelsIn=function(){return 128},e}(Cn);!function(t){function e(){return null!==t&&t.apply(this,arguments)||this}Object(Tt.c)(e,t)}(_n);function kn(t,e,n,r,o){void 0===o&&(o="same");var i=e.conv,a=i.filters,s=i.bias,u=Ot.i(t,a,n,o);return u=function(t,e){return Ot.c(Ot.t(t,e.weights),e.biases)}(u=Ot.c(u,s),e.scale),r?Ot.w(u):u}function Sn(t,e){return kn(t,e,[1,1],!1)}function An(t,e){return kn(t,e,[2,2],!0,"valid")}function On(t,e){function n(n,r,o,i){var a=function(e,n,r){var o=t(e),i=o.length/(n*r*r);if(i%1!=0)throw new Error("depth has to be an integer: "+i+", weights.length: "+o.length+", numFilters: "+n+", filterSize: "+r);return Ot.L((function(){return Ot.N(Ot.K(o,[n,i,r,r]),[2,3,1,0])}))}(n,r,o),s=Ot.H(t(r));return e.push({paramPath:i+"/filters"},{paramPath:i+"/bias"}),{filters:a,bias:s}}function r(r,o,i,a){return{conv:n(r,o,i,a+"/conv"),scale:function(n,r){var o=Ot.H(t(n)),i=Ot.H(t(n));return e.push({paramPath:r+"/weights"},{paramPath:r+"/biases"}),{weights:o,biases:i}}(o,a+"/scale")}}return{extractConvLayerParams:r,extractResidualLayerParams:function(t,e,n,o,i){return void 0===i&&(i=!1),{conv1:r((i?.5:1)*t,e,n,o+"/conv1"),conv2:r(t,e,n,o+"/conv2")}}}}function Dn(t,e){var n=Ye(t,e);function r(t){return{conv:{filters:n(t+"/conv/filters",4),bias:n(t+"/conv/bias",1)},scale:function(t){return{weights:n(t+"/scale/weights",1),biases:n(t+"/scale/biases",1)}}(t)}}return{extractConvLayerParams:r,extractResidualLayerParams:function(t){return{conv1:r(t+"/conv1"),conv2:r(t+"/conv2")}}}}function Tn(t){var e=[],n=Dn(t,e),r=n.extractConvLayerParams,o=n.extractResidualLayerParams,i=r("conv32_down"),a=o("conv32_1"),s=o("conv32_2"),u=o("conv32_3"),c=o("conv64_down"),l=o("conv64_1"),h=o("conv64_2"),f=o("conv64_3"),p=o("conv128_down"),d=o("conv128_1"),v=o("conv128_2"),m=o("conv256_down"),g=o("conv256_1"),y=o("conv256_2"),b=o("conv256_down_out"),x=t.fc;if(e.push({originalPath:"fc",paramPath:"fc"}),!Ft(x,2))throw new Error("expected weightMap[fc] to be a Tensor2D, instead have "+x);var w={conv32_down:i,conv32_1:a,conv32_2:s,conv32_3:u,conv64_down:c,conv64_1:l,conv64_2:h,conv64_3:f,conv128_down:p,conv128_1:d,conv128_2:v,conv256_down:m,conv256_1:g,conv256_2:y,conv256_down_out:b,fc:x};return Ge(t,e),{params:w,paramMappings:e}}function Nn(t,e){var n=function(t,e){return kn(t,e,[1,1],!0)}(t,e.conv1);return n=Sn(n,e.conv2),n=Ot.c(n,t),n=Ot.w(n)}function Fn(t,e){var n=An(t,e.conv1);n=Sn(n,e.conv2);var r=Ot.d(t,2,2,"valid"),o=Ot.P(r.shape),i=r.shape[3]!==n.shape[3];if(r.shape[1]!==n.shape[1]||r.shape[2]!==n.shape[2]){var a=Object(Tt.e)(n.shape);a[1]=1;var s=Ot.P(a);n=Ot.h([n,s],1);var u=Object(Tt.e)(n.shape);u[2]=1;var c=Ot.P(u);n=Ot.h([n,c],2)}return r=i?Ot.h([r,o],3):r,n=Ot.c(r,n),n=Ot.w(n)}var Mn=function(t){function e(){return t.call(this,"FaceRecognitionNet")||this}return Object(Tt.c)(e,t),e.prototype.forwardInput=function(t){var e=this.params;if(!e)throw new Error("FaceRecognitionNet - load model before inference");return Ot.L((function(){var n=An(Jt(t.toBatchTensor(150,!0).toFloat(),[122.782,117.001,104.298]).div(Ot.y(256)),e.conv32_down);n=Nn(n=Ot.s(n,3,2,"valid"),e.conv32_1),n=Nn(n,e.conv32_2),n=Nn(n,e.conv32_3),n=Nn(n=Fn(n,e.conv64_down),e.conv64_1),n=Nn(n,e.conv64_2),n=Nn(n,e.conv64_3),n=Nn(n=Fn(n,e.conv128_down),e.conv128_1),n=Nn(n,e.conv128_2),n=Nn(n=Fn(n,e.conv256_down),e.conv256_1);var r=(n=Fn(n=Nn(n,e.conv256_2),e.conv256_down_out)).mean([1,2]);return Ot.q(r,e.fc)}))},e.prototype.forward=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Te(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.computeFaceDescriptor=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e,n,r,o=this;return Object(Tt.d)(this,(function(i){switch(i.label){case 0:return[4,Te(t)];case 1:return e=i.sent(),n=Ot.L((function(){return Ot.O(o.forwardInput(e))})),[4,Promise.all(n.map((function(t){return t.data()})))];case 2:return r=i.sent(),n.forEach((function(t){return t.dispose()})),[2,e.isBatchInput?r:r[0]]}}))}))},e.prototype.getDefaultModelName=function(){return"face_recognition_model"},e.prototype.extractParamsFromWeigthMap=function(t){return Tn(t)},e.prototype.extractParams=function(t){return function(t){var e=Je(t),n=e.extractWeights,r=e.getRemainingWeights,o=[],i=On(n,o),a=i.extractConvLayerParams,s=i.extractResidualLayerParams,u=a(4704,32,7,"conv32_down"),c=s(9216,32,3,"conv32_1"),l=s(9216,32,3,"conv32_2"),h=s(9216,32,3,"conv32_3"),f=s(36864,64,3,"conv64_down",!0),p=s(36864,64,3,"conv64_1"),d=s(36864,64,3,"conv64_2"),v=s(36864,64,3,"conv64_3"),m=s(147456,128,3,"conv128_down",!0),g=s(147456,128,3,"conv128_1"),y=s(147456,128,3,"conv128_2"),b=s(589824,256,3,"conv256_down",!0),x=s(589824,256,3,"conv256_1"),w=s(589824,256,3,"conv256_2"),E=s(589824,256,3,"conv256_down_out"),C=Ot.L((function(){return Ot.N(Ot.I(n(32768),[128,256]),[1,0])}));if(o.push({paramPath:"fc"}),0!==r().length)throw new Error("weights remaing after extract: "+r().length);return{params:{conv32_down:u,conv32_1:c,conv32_2:l,conv32_3:h,conv64_down:f,conv64_1:p,conv64_2:d,conv64_3:v,conv128_down:m,conv128_1:g,conv128_2:y,conv256_down:b,conv256_1:x,conv256_2:w,conv256_down_out:E,fc:C},paramMappings:o}}(t)},e}(We);function Pn(t,e){var n={descriptor:e};return Object.assign({},t,n)}function Bn(t,e){var n={age:e};return Object.assign({},t,n)}function Ln(t,e,n){var r={gender:e,genderProbability:n};return Object.assign({},t,r)}var Wn=function(){function t(t){var e=void 0===t?{}:t,n=e.minFaceSize,r=e.scaleFactor,o=e.maxNumScales,i=e.scoreThresholds,a=e.scaleSteps;if(this._name="MtcnnOptions",this._minFaceSize=n||20,this._scaleFactor=r||.709,this._maxNumScales=o||10,this._scoreThresholds=i||[.6,.7,.7],this._scaleSteps=a,"number"!=typeof this._minFaceSize||this._minFaceSize<0)throw new Error(this._name+" - expected minFaceSize to be a number > 0");if("number"!=typeof this._scaleFactor||this._scaleFactor<=0||this._scaleFactor>=1)throw new Error(this._name+" - expected scaleFactor to be a number between 0 and 1");if("number"!=typeof this._maxNumScales||this._maxNumScales<0)throw new Error(this._name+" - expected maxNumScales to be a number > 0");if(!Array.isArray(this._scoreThresholds)||3!==this._scoreThresholds.length||this._scoreThresholds.some((function(t){return"number"!=typeof t})))throw new Error(this._name+" - expected scoreThresholds to be an array of numbers of length 3");if(this._scaleSteps&&(!Array.isArray(this._scaleSteps)||this._scaleSteps.some((function(t){return"number"!=typeof t}))))throw new Error(this._name+" - expected scaleSteps to be an array of numbers")}return Object.defineProperty(t.prototype,"minFaceSize",{get:function(){return this._minFaceSize},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scaleFactor",{get:function(){return this._scaleFactor},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxNumScales",{get:function(){return this._maxNumScales},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scoreThresholds",{get:function(){return this._scoreThresholds},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scaleSteps",{get:function(){return this._scaleSteps},enumerable:!0,configurable:!0}),t}();function Un(t,e){function n(n,r,o,i,a){var s=Ot.K(t(n*r*o*o),[o,o,n,r]),u=Ot.H(t(r));return e.push({paramPath:i+"/filters"},{paramPath:i+"/"+(a?"batch_norm_offset":"bias")}),{filters:s,bias:u}}function r(t,e,r,o){var i=n(t,e,r,o,!0);return{filters:i.filters,batch_norm_offset:i.bias}}function o(n,o,i){return{depthwise_conv:function(n,r){var o=Ot.K(t(9*n),[3,3,n,1]),i=Ot.H(t(n)),a=Ot.H(t(n)),s=Ot.H(t(n)),u=Ot.H(t(n));return e.push({paramPath:r+"/filters"},{paramPath:r+"/batch_norm_scale"},{paramPath:r+"/batch_norm_offset"},{paramPath:r+"/batch_norm_mean"},{paramPath:r+"/batch_norm_variance"}),{filters:o,batch_norm_scale:i,batch_norm_offset:a,batch_norm_mean:s,batch_norm_variance:u}}(n,i+"/depthwise_conv"),pointwise_conv:r(n,o,1,i+"/pointwise_conv")}}return{extractMobilenetV1Params:function(){return{conv_0:r(3,32,3,"mobilenetv1/conv_0"),conv_1:o(32,64,"mobilenetv1/conv_1"),conv_2:o(64,128,"mobilenetv1/conv_2"),conv_3:o(128,128,"mobilenetv1/conv_3"),conv_4:o(128,256,"mobilenetv1/conv_4"),conv_5:o(256,256,"mobilenetv1/conv_5"),conv_6:o(256,512,"mobilenetv1/conv_6"),conv_7:o(512,512,"mobilenetv1/conv_7"),conv_8:o(512,512,"mobilenetv1/conv_8"),conv_9:o(512,512,"mobilenetv1/conv_9"),conv_10:o(512,512,"mobilenetv1/conv_10"),conv_11:o(512,512,"mobilenetv1/conv_11"),conv_12:o(512,1024,"mobilenetv1/conv_12"),conv_13:o(1024,1024,"mobilenetv1/conv_13")}},extractPredictionLayerParams:function(){return{conv_0:r(1024,256,1,"prediction_layer/conv_0"),conv_1:r(256,512,3,"prediction_layer/conv_1"),conv_2:r(512,128,1,"prediction_layer/conv_2"),conv_3:r(128,256,3,"prediction_layer/conv_3"),conv_4:r(256,128,1,"prediction_layer/conv_4"),conv_5:r(128,256,3,"prediction_layer/conv_5"),conv_6:r(256,64,1,"prediction_layer/conv_6"),conv_7:r(64,128,3,"prediction_layer/conv_7"),box_predictor_0:{box_encoding_predictor:n(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor:n(512,9,1,"prediction_layer/box_predictor_0/class_predictor")},box_predictor_1:{box_encoding_predictor:n(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor:n(1024,18,1,"prediction_layer/box_predictor_1/class_predictor")},box_predictor_2:{box_encoding_predictor:n(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor:n(512,18,1,"prediction_layer/box_predictor_2/class_predictor")},box_predictor_3:{box_encoding_predictor:n(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor:n(256,18,1,"prediction_layer/box_predictor_3/class_predictor")},box_predictor_4:{box_encoding_predictor:n(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor:n(256,18,1,"prediction_layer/box_predictor_4/class_predictor")},box_predictor_5:{box_encoding_predictor:n(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor:n(128,18,1,"prediction_layer/box_predictor_5/class_predictor")}}}}}function jn(t){var e=[],n=function(t,e){var n=Ye(t,e);function r(t,e,r){return{filters:n(t+"/Conv2d_"+e+"_pointwise/weights",4,r+"/filters"),batch_norm_offset:n(t+"/Conv2d_"+e+"_pointwise/convolution_bn_offset",1,r+"/batch_norm_offset")}}function o(t){var e="mobilenetv1/conv_"+t,o="MobilenetV1/Conv2d_"+t+"_depthwise",i=e+"/depthwise_conv",a=e+"/pointwise_conv";return{depthwise_conv:{filters:n(o+"/depthwise_weights",4,i+"/filters"),batch_norm_scale:n(o+"/BatchNorm/gamma",1,i+"/batch_norm_scale"),batch_norm_offset:n(o+"/BatchNorm/beta",1,i+"/batch_norm_offset"),batch_norm_mean:n(o+"/BatchNorm/moving_mean",1,i+"/batch_norm_mean"),batch_norm_variance:n(o+"/BatchNorm/moving_variance",1,i+"/batch_norm_variance")},pointwise_conv:r("MobilenetV1",t,a)}}function i(t,e){return{filters:n(t+"/weights",4,e+"/filters"),bias:n(t+"/biases",1,e+"/bias")}}function a(t){return{box_encoding_predictor:i("Prediction/BoxPredictor_"+t+"/BoxEncodingPredictor","prediction_layer/box_predictor_"+t+"/box_encoding_predictor"),class_predictor:i("Prediction/BoxPredictor_"+t+"/ClassPredictor","prediction_layer/box_predictor_"+t+"/class_predictor")}}return{extractMobilenetV1Params:function(){return{conv_0:r("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:o(1),conv_2:o(2),conv_3:o(3),conv_4:o(4),conv_5:o(5),conv_6:o(6),conv_7:o(7),conv_8:o(8),conv_9:o(9),conv_10:o(10),conv_11:o(11),conv_12:o(12),conv_13:o(13)}},extractPredictionLayerParams:function(){return{conv_0:r("Prediction",0,"prediction_layer/conv_0"),conv_1:r("Prediction",1,"prediction_layer/conv_1"),conv_2:r("Prediction",2,"prediction_layer/conv_2"),conv_3:r("Prediction",3,"prediction_layer/conv_3"),conv_4:r("Prediction",4,"prediction_layer/conv_4"),conv_5:r("Prediction",5,"prediction_layer/conv_5"),conv_6:r("Prediction",6,"prediction_layer/conv_6"),conv_7:r("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:a(0),box_predictor_1:a(1),box_predictor_2:a(2),box_predictor_3:a(3),box_predictor_4:a(4),box_predictor_5:a(5)}}}}(t,e),r=n.extractMobilenetV1Params,o=n.extractPredictionLayerParams,i=t["Output/extra_dim"];if(e.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!Mt(i))throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have "+i);var a={mobilenetv1:r(),prediction_layer:o(),output_layer:{extra_dim:i}};return Ge(t,e),{params:a,paramMappings:e}}function zn(t,e,n){return Ot.L((function(){var r=Ot.i(t,e.filters,n,"same");return r=Ot.c(r,e.batch_norm_offset),Ot.g(r,0,6)}))}function Vn(t,e){return Ot.L((function(){var n=null,r=zn(t,e.conv_0,[2,2]);if([e.conv_1,e.conv_2,e.conv_3,e.conv_4,e.conv_5,e.conv_6,e.conv_7,e.conv_8,e.conv_9,e.conv_10,e.conv_11,e.conv_12,e.conv_13].forEach((function(t,e){var o=e+1,i=function(t){return[2,4,6,12].some((function(e){return e===t}))?[2,2]:[1,1]}(o);r=zn(r=function(t,e,n){return Ot.L((function(){var r=Ot.j(t,e.filters,n,"same");return r=Ot.e(r,e.batch_norm_mean,e.batch_norm_variance,e.batch_norm_offset,e.batch_norm_scale,.0010000000474974513),Ot.g(r,0,6)}))}(r,t.depthwise_conv,i),t.pointwise_conv,[1,1]),11===o&&(n=r)})),null===n)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:r,conv11:n}}))}function Gn(t,e,n){var r=t.arraySync(),o=Math.min(r[e][0],r[e][2]),i=Math.min(r[e][1],r[e][3]),a=Math.max(r[e][0],r[e][2]),s=Math.max(r[e][1],r[e][3]),u=Math.min(r[n][0],r[n][2]),c=Math.min(r[n][1],r[n][3]),l=Math.max(r[n][0],r[n][2]),h=Math.max(r[n][1],r[n][3]),f=(a-o)*(s-i),p=(l-u)*(h-c);if(f<=0||p<=0)return 0;var d=Math.max(o,u),v=Math.max(i,c),m=Math.min(a,l),g=Math.min(s,h),y=Math.max(m-d,0)*Math.max(g-v,0);return y/(f+p-y)}function Hn(t,e){var n=function(t){var e=Ot.O(Ot.N(t,[1,0])),n=[Ot.F(e[2],e[0]),Ot.F(e[3],e[1])];return{sizes:n,centers:[Ot.c(e[0],Ot.k(n[0],Ot.y(2))),Ot.c(e[1],Ot.k(n[1],Ot.y(2)))]}}(t),r=n.sizes,o=n.centers,i=Ot.O(Ot.N(e,[1,0])),a=Ot.k(Ot.t(Ot.l(Ot.k(i[2],Ot.y(5))),r[0]),Ot.y(2)),s=Ot.c(Ot.t(Ot.k(i[0],Ot.y(10)),r[0]),o[0]),u=Ot.k(Ot.t(Ot.l(Ot.k(i[3],Ot.y(5))),r[1]),Ot.y(2)),c=Ot.c(Ot.t(Ot.k(i[1],Ot.y(10)),r[1]),o[1]);return Ot.N(Ot.E([Ot.F(s,a),Ot.F(c,u),Ot.c(s,a),Ot.c(c,u)]),[1,0])}function qn(t,e){return Ot.L((function(){var n=t.shape[0];return{boxPredictionEncoding:Ot.x(Ve(t,e.box_encoding_predictor),[n,-1,1,4]),classPrediction:Ot.x(Ve(t,e.class_predictor),[n,-1,3])}}))}var Kn=function(){function t(t){var e=void 0===t?{}:t,n=e.minConfidence,r=e.maxResults;if(this._name="SsdMobilenetv1Options",this._minConfidence=n||.5,this._maxResults=r||100,"number"!=typeof this._minConfidence||this._minConfidence<=0||this._minConfidence>=1)throw new Error(this._name+" - expected minConfidence to be a number between 0 and 1");if("number"!=typeof this._maxResults)throw new Error(this._name+" - expected maxResults to be a number")}return Object.defineProperty(t.prototype,"minConfidence",{get:function(){return this._minConfidence},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxResults",{get:function(){return this._maxResults},enumerable:!0,configurable:!0}),t}(),Xn=function(t){function e(){return t.call(this,"SsdMobilenetv1")||this}return Object(Tt.c)(e,t),e.prototype.forwardInput=function(t){var e=this.params;if(!e)throw new Error("SsdMobilenetv1 - load model before inference");return Ot.L((function(){var n=t.toBatchTensor(512,!1).toFloat(),r=Vn(Ot.F(Ot.t(n,Ot.y(.007843137718737125)),Ot.y(1)),e.mobilenetv1),o=function(t,e,n){return Ot.L((function(){var r=zn(t,n.conv_0,[1,1]),o=zn(r,n.conv_1,[2,2]),i=zn(o,n.conv_2,[1,1]),a=zn(i,n.conv_3,[2,2]),s=zn(a,n.conv_4,[1,1]),u=zn(s,n.conv_5,[2,2]),c=zn(u,n.conv_6,[1,1]),l=zn(c,n.conv_7,[2,2]),h=qn(e,n.box_predictor_0),f=qn(t,n.box_predictor_1),p=qn(o,n.box_predictor_2),d=qn(a,n.box_predictor_3),v=qn(u,n.box_predictor_4),m=qn(l,n.box_predictor_5);return{boxPredictions:Ot.h([h.boxPredictionEncoding,f.boxPredictionEncoding,p.boxPredictionEncoding,d.boxPredictionEncoding,v.boxPredictionEncoding,m.boxPredictionEncoding],1),classPredictions:Ot.h([h.classPrediction,f.classPrediction,p.classPrediction,d.classPrediction,v.classPrediction,m.classPrediction],1)}}))}(r.out,r.conv11,e.prediction_layer);return function(t,e,n){return Ot.L((function(){var r=t.shape[0],o=Hn(Ot.x(Ot.M(n.extra_dim,[r,1,1]),[-1,4]),Ot.x(t,[-1,4]));o=Ot.x(o,[r,o.shape[0]/r,4]);var i=Ot.A(Ot.B(e,[0,0,1],[-1,-1,-1])),a=Ot.B(i,[0,0,0],[-1,-1,1]);return a=Ot.x(a,[r,a.shape[1]]),{boxes:Ot.O(o),scores:Ot.O(a)}}))}(o.boxPredictions,o.classPredictions,e.output_layer)}))},e.prototype.forward=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Te(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.locateFaces=function(t,e){return void 0===e&&(e={}),Object(Tt.b)(this,void 0,void 0,(function(){var n,r,o,i,a,s,u,c,l,h,f,p,d,v,m,g,y,b,x,w;return Object(Tt.d)(this,(function(E){switch(E.label){case 0:return n=new Kn(e),r=n.maxResults,o=n.minConfidence,[4,Te(t)];case 1:for(i=E.sent(),a=this.forwardInput(i),s=a.boxes,u=a.scores,c=s[0],l=u[0],h=1;h<s.length;h++)s[h].dispose(),u[h].dispose();return d=(p=Array).from,[4,l.data()];case 2:return f=d.apply(p,[E.sent()]),.5,v=function(t,e,n,r,o){var i=t.shape[0],a=Math.min(n,i),s=e.map((function(t,e){return{score:t,boxIndex:e}})).filter((function(t){return t.score>o})).sort((function(t,e){return e.score-t.score})),u=[];return s.forEach((function(e){if(!(u.length>=a)){for(var n=e.score,i=u.length-1;i>=0;--i){var s=Gn(t,e.boxIndex,u[i]);if(0!==s&&(e.score*=s<=r?1:0,e.score<=o))break}n===e.score&&u.push(e.boxIndex)}})),u}(c,f,r,.5,o),m=i.getReshapedInputDimensions(0),g=i.inputSize,y=g/m.width,b=g/m.height,x=c.arraySync(),w=v.map((function(t){var e=[Math.max(0,x[t][0]),Math.min(1,x[t][2])].map((function(t){return t*b})),n=e[0],r=e[1],o=[Math.max(0,x[t][1]),Math.min(1,x[t][3])].map((function(t){return t*y})),a=o[0],s=o[1];return new Xt(f[t],new Zt(a,n,s-a,r-n),{height:i.getInputHeight(0),width:i.getInputWidth(0)})})),c.dispose(),l.dispose(),[2,w]}}))}))},e.prototype.getDefaultModelName=function(){return"ssd_mobilenetv1_model"},e.prototype.extractParamsFromWeigthMap=function(t){return jn(t)},e.prototype.extractParams=function(t){return function(t){var e=[],n=Je(t),r=n.extractWeights,o=n.getRemainingWeights,i=Un(r,e),a=i.extractMobilenetV1Params,s=i.extractPredictionLayerParams,u=a(),c=s(),l={extra_dim:Ot.J(r(20472),[1,5118,4])};if(e.push({paramPath:"output_layer/extra_dim"}),0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{params:{mobilenetv1:u,prediction_layer:c,output_layer:l},paramMappings:e}}(t)},e}(We);!function(t){function e(){return null!==t&&t.apply(this,arguments)||this}Object(Tt.c)(e,t)}(Xn);var $n,Yn=[new Gt(.738768,.874946),new Gt(2.42204,2.65704),new Gt(4.30971,7.04493),new Gt(10.246,4.59428),new Gt(12.6868,11.8741)],Jn=[new Gt(1.603231,2.094468),new Gt(6.041143,7.080126),new Gt(2.882459,3.518061),new Gt(4.266906,5.178857),new Gt(9.041765,10.66308)],Qn=[117.001,114.697,97.404],Zn=function(t){return"number"==typeof t};function tr(t){return Ot.L((function(){var e=Ot.t(t,Ot.y(.10000000149011612));return Ot.c(Ot.w(Ot.F(t,e)),e)}))}function er(t,e){return Ot.L((function(){var n=Ot.v(t,[[0,0],[1,1],[1,1],[0,0]]);return n=Ot.i(n,e.conv.filters,[1,1],"valid"),n=Ot.F(n,e.bn.sub),n=Ot.t(n,e.bn.truediv),tr(n=Ot.c(n,e.conv.bias))}))}function nr(t,e){return Ot.L((function(){var n=Ot.v(t,[[0,0],[1,1],[1,1],[0,0]]);return n=Ot.z(n,e.depthwise_filter,e.pointwise_filter,[1,1],"valid"),tr(n=Ot.c(n,e.bias))}))}function rr(t,e){var n=He(t,e);var r=Xe(t,e);return{extractConvParams:n,extractConvWithBatchNormParams:function(r,o,i){return{conv:n(r,o,3,i+"/conv"),bn:function(n,r){var o=Ot.H(t(n)),i=Ot.H(t(n));return e.push({paramPath:r+"/sub"},{paramPath:r+"/truediv"}),{sub:o,truediv:i}}(o,i+"/bn")}},extractSeparableConvParams:r}}function or(t,e){var n=Ye(t,e);function r(t){return{filters:n(t+"/filters",4),bias:n(t+"/bias",1)}}return{extractConvParams:r,extractConvWithBatchNormParams:function(t){return{conv:r(t+"/conv"),bn:function(t){return{sub:n(t+"/sub",1),truediv:n(t+"/truediv",1)}}(t+"/bn")}},extractSeparableConvParams:$e(n)}}!function(t){t[t.XS=224]="XS",t[t.SM=320]="SM",t[t.MD=416]="MD",t[t.LG=608]="LG"}($n||($n={}));var ir=function(){function t(t){var e=void 0===t?{}:t,n=e.inputSize,r=e.scoreThreshold;if(this._name="TinyYolov2Options",this._inputSize=n||416,this._scoreThreshold=r||.5,"number"!=typeof this._inputSize||this._inputSize%32!=0)throw new Error(this._name+" - expected inputSize to be a number divisible by 32");if("number"!=typeof this._scoreThreshold||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(this._name+" - expected scoreThreshold to be a number between 0 and 1")}return Object.defineProperty(t.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scoreThreshold",{get:function(){return this._scoreThreshold},enumerable:!0,configurable:!0}),t}(),ar=function(t){function e(e){var n=t.call(this,"TinyYolov2")||this;return function(t){if(!t)throw new Error("invalid config: "+t);if("boolean"!=typeof t.withSeparableConvs)throw new Error("config.withSeparableConvs has to be a boolean, have: "+t.withSeparableConvs);if(!Zn(t.iouThreshold)||t.iouThreshold<0||t.iouThreshold>1)throw new Error("config.iouThreshold has to be a number between [0, 1], have: "+t.iouThreshold);if(!Array.isArray(t.classes)||!t.classes.length||!t.classes.every((function(t){return"string"==typeof t})))throw new Error("config.classes has to be an array class names: string[], have: "+JSON.stringify(t.classes));if(!Array.isArray(t.anchors)||!t.anchors.length||!t.anchors.map((function(t){return t||{}})).every((function(t){return Zn(t.x)&&Zn(t.y)})))throw new Error("config.anchors has to be an array of { x: number, y: number }, have: "+JSON.stringify(t.anchors));if(t.meanRgb&&(!Array.isArray(t.meanRgb)||3!==t.meanRgb.length||!t.meanRgb.every(Zn)))throw new Error("config.meanRgb has to be an array of shape [number, number, number], have: "+JSON.stringify(t.meanRgb))}(e),n._config=e,n}return Object(Tt.c)(e,t),Object.defineProperty(e.prototype,"config",{get:function(){return this._config},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"withClassScores",{get:function(){return this.config.withClassScores||this.config.classes.length>1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"boxEncodingSize",{get:function(){return 5+(this.withClassScores?this.config.classes.length:0)},enumerable:!0,configurable:!0}),e.prototype.runTinyYolov2=function(t,e){var n=er(t,e.conv0);return n=er(n=Ot.s(n,[2,2],[2,2],"same"),e.conv1),n=er(n=Ot.s(n,[2,2],[2,2],"same"),e.conv2),n=er(n=Ot.s(n,[2,2],[2,2],"same"),e.conv3),n=er(n=Ot.s(n,[2,2],[2,2],"same"),e.conv4),n=er(n=Ot.s(n,[2,2],[2,2],"same"),e.conv5),n=er(n=Ot.s(n,[2,2],[1,1],"same"),e.conv6),Ve(n=er(n,e.conv7),e.conv8,"valid",!1)},e.prototype.runMobilenet=function(t,e){var n=this.config.isFirstLayerConv2d?tr(Ve(t,e.conv0,"valid",!1)):nr(t,e.conv0);return n=nr(n=Ot.s(n,[2,2],[2,2],"same"),e.conv1),n=nr(n=Ot.s(n,[2,2],[2,2],"same"),e.conv2),n=nr(n=Ot.s(n,[2,2],[2,2],"same"),e.conv3),n=nr(n=Ot.s(n,[2,2],[2,2],"same"),e.conv4),n=nr(n=Ot.s(n,[2,2],[2,2],"same"),e.conv5),n=Ot.s(n,[2,2],[1,1],"same"),n=e.conv6?nr(n,e.conv6):n,Ve(n=e.conv7?nr(n,e.conv7):n,e.conv8,"valid",!1)},e.prototype.forwardInput=function(t,e){var n=this,r=this.params;if(!r)throw new Error("TinyYolov2 - load model before inference");return Ot.L((function(){var o=t.toBatchTensor(e,!1).toFloat();return o=(o=n.config.meanRgb?Jt(o,n.config.meanRgb):o).div(Ot.y(256)),n.config.withSeparableConvs?n.runMobilenet(o,r):n.runTinyYolov2(o,r)}))},e.prototype.forward=function(t,e){return Object(Tt.b)(this,void 0,void 0,(function(){var n;return Object(Tt.d)(this,(function(r){switch(r.label){case 0:return n=this.forwardInput,[4,Te(t)];case 1:return[4,n.apply(this,[r.sent(),e])];case 2:return[2,r.sent()]}}))}))},e.prototype.detect=function(t,e){return void 0===e&&(e={}),Object(Tt.b)(this,void 0,void 0,(function(){var n,r,o,i,a,s,u,c,l,h,f,p,d,v=this;return Object(Tt.d)(this,(function(m){switch(m.label){case 0:return n=new ir(e),r=n.inputSize,o=n.scoreThreshold,[4,Te(t)];case 1:return i=m.sent(),[4,this.forwardInput(i,r)];case 2:return a=m.sent(),s=Ot.L((function(){return Ot.O(a)[0].expandDims()})),u={width:i.getInputWidth(0),height:i.getInputHeight(0)},[4,this.extractBoxes(s,i.getReshapedInputDimensions(0),o)];case 3:return c=m.sent(),a.dispose(),s.dispose(),l=c.map((function(t){return t.box})),h=c.map((function(t){return t.score})),f=c.map((function(t){return t.classScore})),p=c.map((function(t){return v.config.classes[t.label]})),d=Yt(l.map((function(t){return t.rescale(r)})),h,this.config.iouThreshold,!0),[2,d.map((function(t){return new Kt(h[t],f[t],p[t],l[t],u)}))]}}))}))},e.prototype.getDefaultModelName=function(){return""},e.prototype.extractParamsFromWeigthMap=function(t){return function(t,e){var n,r=[],o=or(t,r),i=o.extractConvParams,a=o.extractConvWithBatchNormParams,s=o.extractSeparableConvParams;if(e.withSeparableConvs){var u=e.filterSizes&&e.filterSizes.length||9;n={conv0:e.isFirstLayerConv2d?i("conv0"):s("conv0"),conv1:s("conv1"),conv2:s("conv2"),conv3:s("conv3"),conv4:s("conv4"),conv5:s("conv5"),conv6:u>7?s("conv6"):void 0,conv7:u>8?s("conv7"):void 0,conv8:i("conv8")}}else n={conv0:a("conv0"),conv1:a("conv1"),conv2:a("conv2"),conv3:a("conv3"),conv4:a("conv4"),conv5:a("conv5"),conv6:a("conv6"),conv7:a("conv7"),conv8:i("conv8")};return Ge(t,r),{params:n,paramMappings:r}}(t,this.config)},e.prototype.extractParams=function(t){var n=this.config.filterSizes||e.DEFAULT_FILTER_SIZES,r=n?n.length:void 0;if(7!==r&&8!==r&&9!==r)throw new Error("TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found "+r+" filterSizes in config");return function(t,e,n,r){var o,i=Je(t),a=i.extractWeights,s=i.getRemainingWeights,u=[],c=rr(a,u),l=c.extractConvParams,h=c.extractConvWithBatchNormParams,f=c.extractSeparableConvParams;if(e.withSeparableConvs){var p=r[0],d=r[1],v=r[2],m=r[3],g=r[4],y=r[5],b=r[6],x=r[7],w=r[8];o={conv0:e.isFirstLayerConv2d?l(p,d,3,"conv0"):f(p,d,"conv0"),conv1:f(d,v,"conv1"),conv2:f(v,m,"conv2"),conv3:f(m,g,"conv3"),conv4:f(g,y,"conv4"),conv5:f(y,b,"conv5"),conv6:x?f(b,x,"conv6"):void 0,conv7:w?f(x,w,"conv7"):void 0,conv8:l(w||x||b,5*n,1,"conv8")}}else{p=r[0],d=r[1],v=r[2],m=r[3],g=r[4],y=r[5],b=r[6],x=r[7],w=r[8];o={conv0:h(p,d,"conv0"),conv1:h(d,v,"conv1"),conv2:h(v,m,"conv2"),conv3:h(m,g,"conv3"),conv4:h(g,y,"conv4"),conv5:h(y,b,"conv5"),conv6:h(b,x,"conv6"),conv7:h(x,w,"conv7"),conv8:l(w,5*n,1,"conv8")}}if(0!==s().length)throw new Error("weights remaing after extract: "+s().length);return{params:o,paramMappings:u}}(t,this.config,this.boxEncodingSize,n)},e.prototype.extractBoxes=function(t,e,n){return Object(Tt.b)(this,void 0,void 0,(function(){var r,o,i,a,s,u,c,l,h,f,p,d,v,m,g,y,b,x,w,E,C,_,R,I,k,S,A,O,D,T=this;return Object(Tt.d)(this,(function(N){switch(N.label){case 0:return r=e.width,o=e.height,i=Math.max(r,o),a=i/r,s=i/o,u=t.shape[1],c=this.config.anchors.length,l=Ot.L((function(){var e=t.reshape([u,u,c,T.boxEncodingSize]);return[e.slice([0,0,0,0],[u,u,c,4]),e.slice([0,0,0,4],[u,u,c,1]),T.withClassScores?Ot.D(e.slice([0,0,0,5],[u,u,c,T.config.classes.length]),3):Ot.y(0)]})),h=l[0],f=l[1],p=l[2],d=[],[4,f.array()];case 1:return v=N.sent(),[4,h.array()];case 2:m=N.sent(),g=0,N.label=3;case 3:if(!(g<u))return[3,12];y=0,N.label=4;case 4:if(!(y<u))return[3,11];b=0,N.label=5;case 5:return b<c?(x=Qt(v[g][y][b][0]),!n||x>n?(w=(y+Qt(m[g][y][b][0]))/u*a,E=(g+Qt(m[g][y][b][1]))/u*s,C=Math.exp(m[g][y][b][2])*this.config.anchors[b].x/u*a,_=Math.exp(m[g][y][b][3])*this.config.anchors[b].y/u*s,R=w-C/2,I=E-_/2,k={row:g,col:y,anchor:b},this.withClassScores?[4,this.extractPredictedClass(p,k)]:[3,7]):[3,9]):[3,10];case 6:return D=N.sent(),[3,8];case 7:D={classScore:1,label:0},N.label=8;case 8:A=(S=D).classScore,O=S.label,d.push(Object(Tt.a)({box:new qt(R,I,R+C,I+_),score:x,classScore:x*A,label:O},k)),N.label=9;case 9:return b++,[3,5];case 10:return y++,[3,4];case 11:return g++,[3,3];case 12:return h.dispose(),f.dispose(),p.dispose(),[2,d]}}))}))},e.prototype.extractPredictedClass=function(t,e){return Object(Tt.b)(this,void 0,void 0,(function(){var n,r,o,i;return Object(Tt.d)(this,(function(a){switch(a.label){case 0:return n=e.row,r=e.col,o=e.anchor,[4,t.array()];case 1:return i=a.sent(),[2,Array(this.config.classes.length).fill(0).map((function(t,e){return i[n][r][o][e]})).map((function(t,e){return{classScore:t,label:e}})).reduce((function(t,e){return t.classScore>e.classScore?t:e}))]}}))}))},e.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024],e}(We),sr=function(t){function e(e){void 0===e&&(e=!0);var n=Object.assign({},{withSeparableConvs:e,iouThreshold:.4,classes:["face"]},e?{anchors:Jn,meanRgb:Qn}:{anchors:Yn,withClassScores:!0});return t.call(this,n)||this}return Object(Tt.c)(e,t),Object.defineProperty(e.prototype,"withSeparableConvs",{get:function(){return this.config.withSeparableConvs},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),e.prototype.locateFaces=function(t,e){return Object(Tt.b)(this,void 0,void 0,(function(){return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return[4,this.detect(t,e)];case 1:return[2,n.sent().map((function(t){return new Xt(t.score,t.relativeBox,{width:t.imageWidth,height:t.imageHeight})}))]}}))}))},e.prototype.getDefaultModelName=function(){return this.withSeparableConvs?"tiny_yolov2_separable_conv_model":"tiny_yolov2_model"},e.prototype.extractParamsFromWeigthMap=function(e){return t.prototype.extractParamsFromWeigthMap.call(this,e)},e}(ar);var ur=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._name="TinyFaceDetectorOptions",e}return Object(Tt.c)(e,t),e}(ir),cr=function(){function t(){}return t.prototype.then=function(t){return Object(Tt.b)(this,void 0,void 0,(function(){var e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return e=t,[4,this.run()];case 1:return[2,e.apply(void 0,[n.sent()])]}}))}))},t.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){return Object(Tt.d)(this,(function(t){throw new Error("ComposableTask - run is not implemented")}))}))},t}();function lr(t,e,n,r,o){return void 0===o&&(o=function(t){return t.alignedRect}),Object(Tt.b)(this,void 0,void 0,(function(){var i,a,s,u,c;return Object(Tt.d)(this,(function(l){switch(l.label){case 0:return i=t.map((function(t){return hn(t)?o(t):t.detection})),(s=r)?[3,5]:e instanceof Ot.a?[4,Fe(e,i)]:[3,2];case 1:return u=l.sent(),[3,4];case 2:return[4,Ne(e,i)];case 3:u=l.sent(),l.label=4;case 4:s=u,l.label=5;case 5:return[4,n(a=s)];case 6:return c=l.sent(),a.forEach((function(t){return t instanceof Ot.a&&t.dispose()})),[2,c]}}))}))}function hr(t,e,n,r,o){return Object(Tt.b)(this,void 0,void 0,(function(){var i=this;return Object(Tt.d)(this,(function(a){return[2,lr([t],e,(function(t){return Object(Tt.b)(i,void 0,void 0,(function(){return Object(Tt.d)(this,(function(e){return[2,n(t[0])]}))}))}),r,o)]}))}))}function fr(t){var e=Je(t),n=e.extractWeights,r=e.getRemainingWeights,o=[],i=function(t,e){var n=He(t,e),r=qe(t,e);function o(n,r){var o=Ot.H(t(n));return e.push({paramPath:r}),o}function i(t,e,r){return void 0===r&&(r=!1),{conv1:n(t[0],t[1],3,e+"/conv1"),prelu1_alpha:o(t[1],e+"/prelu1_alpha"),conv2:n(t[1],t[2],3,e+"/conv2"),prelu2_alpha:o(t[2],e+"/prelu2_alpha"),conv3:n(t[2],t[3],r?2:3,e+"/conv3"),prelu3_alpha:o(t[3],e+"/prelu3_alpha")}}return{extractPNetParams:function(){var t=i([3,10,16,32],"pnet"),e=n(32,2,1,"pnet/conv4_1"),r=n(32,4,1,"pnet/conv4_2");return Object(Tt.a)(Object(Tt.a)({},t),{conv4_1:e,conv4_2:r})},extractRNetParams:function(){var t=i([3,28,48,64],"rnet",!0),e=r(576,128,"rnet/fc1"),n=o(128,"rnet/prelu4_alpha"),a=r(128,2,"rnet/fc2_1"),s=r(128,4,"rnet/fc2_2");return Object(Tt.a)(Object(Tt.a)({},t),{fc1:e,prelu4_alpha:n,fc2_1:a,fc2_2:s})},extractONetParams:function(){var t=i([3,32,64,64],"onet"),e=n(64,128,2,"onet/conv4"),a=o(128,"onet/prelu4_alpha"),s=r(1152,256,"onet/fc1"),u=o(256,"onet/prelu5_alpha"),c=r(256,2,"onet/fc2_1"),l=r(256,4,"onet/fc2_2"),h=r(256,10,"onet/fc2_3");return Object(Tt.a)(Object(Tt.a)({},t),{conv4:e,prelu4_alpha:a,fc1:s,prelu5_alpha:u,fc2_1:c,fc2_2:l,fc2_3:h})}}}(n,o),a=i.extractPNetParams,s=i.extractRNetParams,u=i.extractONetParams,c=a(),l=s(),h=u();if(0!==r().length)throw new Error("weights remaing after extract: "+r().length);return{params:{pnet:c,rnet:l,onet:h},paramMappings:o}}function pr(t){var e=[],n=function(t,e){var n=Ye(t,e);function r(t){return{filters:n(t+"/weights",4,t+"/filters"),bias:n(t+"/bias",1)}}function o(t){return{weights:n(t+"/weights",2),bias:n(t+"/bias",1)}}function i(t){return n(t,1)}function a(t){return{conv1:r(t+"/conv1"),prelu1_alpha:i(t+"/prelu1_alpha"),conv2:r(t+"/conv2"),prelu2_alpha:i(t+"/prelu2_alpha"),conv3:r(t+"/conv3"),prelu3_alpha:i(t+"/prelu3_alpha")}}return{extractPNetParams:function(){var t=a("pnet"),e=r("pnet/conv4_1"),n=r("pnet/conv4_2");return Object(Tt.a)(Object(Tt.a)({},t),{conv4_1:e,conv4_2:n})},extractRNetParams:function(){var t=a("rnet"),e=o("rnet/fc1"),n=i("rnet/prelu4_alpha"),r=o("rnet/fc2_1"),s=o("rnet/fc2_2");return Object(Tt.a)(Object(Tt.a)({},t),{fc1:e,prelu4_alpha:n,fc2_1:r,fc2_2:s})},extractONetParams:function(){var t=a("onet"),e=r("onet/conv4"),n=i("onet/prelu4_alpha"),s=o("onet/fc1"),u=i("onet/prelu5_alpha"),c=o("onet/fc2_1"),l=o("onet/fc2_2"),h=o("onet/fc2_3");return Object(Tt.a)(Object(Tt.a)({},t),{conv4:e,prelu4_alpha:n,fc1:s,prelu5_alpha:u,fc2_1:c,fc2_2:l,fc2_3:h})}}}(t,e),r=n.extractPNetParams,o=n.extractRNetParams,i=n.extractONetParams,a=r(),s=o(),u=i();return Ge(t,e),{params:{pnet:a,rnet:s,onet:u},paramMappings:e}}function dr(t,e){var n=e[0],r=e[1];return{height:Math.floor(n*t),width:Math.floor(r*t)}}var vr=function(t){function e(e,n,r,o){return t.call(this,{left:e,top:n,right:r,bottom:o},!0)||this}return Object(Tt.c)(e,t),e}(Ht);function mr(t){return Ot.L((function(){return Ot.t(Ot.F(t,Ot.y(127.5)),Ot.y(.0078125))}))}function gr(t,e){return Ot.L((function(){return Ot.c(Ot.w(t),Ot.t(e,Ot.u(Ot.w(Ot.u(t)))))}))}function yr(t,e,n){return void 0===n&&(n=!1),Ot.L((function(){var r=Ve(t,e.conv1,"valid");return r=gr(r,e.prelu1_alpha),r=gr(r=Ve(r=Ot.s(r,n?[2,2]:[3,3],[2,2],"same"),e.conv2,"valid"),e.prelu2_alpha),r=gr(r=Ve(r=n?r:Ot.s(r,[3,3],[2,2],"valid"),e.conv3,"valid"),e.prelu3_alpha)}))}function br(t,e,n,r,o){o.stage1=[];var i=e.map((function(e){return Ot.L((function(){var n={scale:e},o=function(t,e){return Ot.L((function(){var n=dr(e,t.shape.slice(1)),r=n.height,o=n.width,i=mr(Ot.o.resizeBilinear(t,[r,o]));return Ot.N(i,[0,2,1,3])}))}(t,e),i=Date.now(),a=function(t,e){return Ot.L((function(){var n=yr(t,e,!0),r=Ve(n,e.conv4_1,"valid"),o=Ot.m(Ot.r(r,3),3);return{prob:Ot.D(Ot.F(r,o),3),regions:Ve(n,e.conv4_2,"valid")}}))}(o,r),s=a.prob,u=a.regions;return n.pnet=Date.now()-i,{scoresTensor:Ot.O(Ot.O(s,3)[1])[0],regionsTensor:Ot.O(u)[0],scale:e,statsForScale:n}}))})).map((function(t){var e=t.scoresTensor,r=t.regionsTensor,i=t.scale,a=t.statsForScale,s=function(t,e,n,r){for(var o=[],i=t.arraySync(),a=0;a<t.shape[0];a++)for(var s=0;s<t.shape[1];s++)i[a][s]>=r&&o.push(new Gt(s,a));return o.map((function(t){var r=new qt(Math.round((2*t.y+1)/n),Math.round((2*t.x+1)/n),Math.round((2*t.y+12)/n),Math.round((2*t.x+12)/n)),o=i[t.y][t.x],a=e.arraySync();return{cell:r,score:o,region:new vr(a[t.y][t.x][0],a[t.y][t.x][1],a[t.y][t.x][2],a[t.y][t.x][3])}}))}(e,r,i,n);if(e.dispose(),r.dispose(),!s.length)return o.stage1.push(a),[];var u=Date.now(),c=Yt(s.map((function(t){return t.cell})),s.map((function(t){return t.score})),.5);return a.nms=Date.now()-u,a.numBoxes=c.length,o.stage1.push(a),c.map((function(t){return s[t]}))})).reduce((function(t,e){return t.concat(e)}),[]),a=[],s=[];if(i.length>0){var u=Date.now(),c=Yt(i.map((function(t){return t.cell})),i.map((function(t){return t.score})),.7);o.stage1_nms=Date.now()-u,s=c.map((function(t){return i[t].score})),a=c.map((function(t){return i[t]})).map((function(t){var e=t.cell,n=t.region;return new qt(e.left+n.left*e.width,e.top+n.top*e.height,e.right+n.right*e.width,e.bottom+n.bottom*e.height).toSquare().round()}))}return{boxes:a,scores:s}}function xr(t,e,n){var r=n.width,o=n.height;return Object(Tt.b)(this,void 0,void 0,(function(){var n,i,a,s=this;return Object(Tt.d)(this,(function(u){switch(u.label){case 0:return n=be(t),[4,Promise.all(e.map((function(e){return Object(Tt.b)(s,void 0,void 0,(function(){var r,o,i,a,s,u,c,l;return Object(Tt.d)(this,(function(h){return r=e.padAtBorders(t.height,t.width),o=r.y,i=r.ey,a=r.x,s=r.ex,u=a-1,c=o-1,l=n.getImageData(u,c,s-u,i-c),[2,ge.isNodejs()?Se(l):createImageBitmap(l)]}))}))})))];case 1:return i=u.sent(),a=[],i.forEach((function(t){var e=be(ke({width:r,height:o}));e.drawImage(t,0,0,r,o);for(var n=e.getImageData(0,0,r,o).data,i=[],s=0;s<n.length;s+=4)i.push(n[s+2]),i.push(n[s+1]),i.push(n[s]);a.push(i)})),[2,a.map((function(t){return Ot.L((function(){return mr(Ot.N(Ot.K(t,[1,r,o,3]),[0,2,1,3]).toFloat())}))}))]}}))}))}function wr(t,e,n,r,o){return Object(Tt.b)(this,void 0,void 0,(function(){var i,a,s,u,c,l,h,f,p,d,v,m,g,y;return Object(Tt.d)(this,(function(b){switch(b.label){case 0:return i=Date.now(),[4,xr(t,e,{width:24,height:24})];case 1:return a=b.sent(),o.stage2_extractImagePatches=Date.now()-i,i=Date.now(),s=a.map((function(t){var e=function(t,e){return Ot.L((function(){var n=yr(t,e),r=gr(nn(Ot.x(n,[n.shape[0],e.fc1.weights.shape[0]]),e.fc1),e.prelu4_alpha),o=nn(r,e.fc2_1),i=Ot.m(Ot.r(o,1),1),a=Ot.D(Ot.F(o,i),1),s=nn(r,e.fc2_2);return{scores:Ot.O(a,1)[1],regions:s}}))}(t,r);return t.dispose(),e})),o.stage2_rnet=Date.now()-i,u=s.length>1?Ot.h(s.map((function(t){return t.scores}))):s[0].scores,h=(l=Array).from,[4,u.data()];case 2:return c=h.apply(l,[b.sent()]),u.dispose(),f=c.map((function(t,e){return{score:t,idx:e}})).filter((function(t){return t.score>n})).map((function(t){return t.idx})),p=f.map((function(t){return e[t]})),d=f.map((function(t){return c[t]})),v=[],m=[],p.length>0&&(i=Date.now(),g=Yt(p,d,.7),o.stage2_nms=Date.now()-i,y=g.map((function(t){var e=s[f[t]].regions.arraySync();return new vr(e[0][0],e[0][1],e[0][2],e[0][3])})),m=g.map((function(t){return d[t]})),v=g.map((function(t,e){return p[t].calibrate(y[e])}))),s.forEach((function(t){t.regions.dispose(),t.scores.dispose()})),[2,{boxes:v,scores:m}]}}))}))}function Er(t,e,n,r,o){return Object(Tt.b)(this,void 0,void 0,(function(){var i,a,s,u,c,l,h,f,p,d,v,m,g,y,b;return Object(Tt.d)(this,(function(x){switch(x.label){case 0:return i=Date.now(),[4,xr(t,e,{width:48,height:48})];case 1:return a=x.sent(),o.stage3_extractImagePatches=Date.now()-i,i=Date.now(),s=a.map((function(t){var e=function(t,e){return Ot.L((function(){var n=yr(t,e);n=gr(n=Ve(n=Ot.s(n,[2,2],[2,2],"same"),e.conv4,"valid"),e.prelu4_alpha);var r=gr(nn(Ot.x(n,[n.shape[0],e.fc1.weights.shape[0]]),e.fc1),e.prelu5_alpha),o=nn(r,e.fc2_1),i=Ot.m(Ot.r(o,1),1),a=Ot.D(Ot.F(o,i),1),s=nn(r,e.fc2_2),u=nn(r,e.fc2_3);return{scores:Ot.O(a,1)[1],regions:s,points:u}}))}(t,r);return t.dispose(),e})),o.stage3_onet=Date.now()-i,u=s.length>1?Ot.h(s.map((function(t){return t.scores}))):s[0].scores,h=(l=Array).from,[4,u.data()];case 2:return c=h.apply(l,[x.sent()]),u.dispose(),f=c.map((function(t,e){return{score:t,idx:e}})).filter((function(t){return t.score>n})).map((function(t){return t.idx})),p=f.map((function(t){var e=s[t].regions.arraySync();return new vr(e[0][0],e[0][1],e[0][2],e[0][3])})),d=f.map((function(t,n){return e[t].calibrate(p[n])})),v=f.map((function(t){return c[t]})),m=[],g=[],y=[],d.length>0&&(i=Date.now(),b=Yt(d,v,.7,!1),o.stage3_nms=Date.now()-i,m=b.map((function(t){return d[t]})),g=b.map((function(t){return v[t]})),y=b.map((function(t,e){return Array(5).fill(0).map((function(n,r){var o=s[t].points.arraySync();return new Gt(o[0][r]*(m[e].width+1)+m[e].left,o[0][r+5]*(m[e].height+1)+m[e].top)}))}))),s.forEach((function(t){t.regions.dispose(),t.scores.dispose(),t.points.dispose()})),[2,{boxes:m,scores:g,points:y}]}}))}))}var Cr=function(t){function e(){return t.call(this,"Mtcnn")||this}return Object(Tt.c)(e,t),e.prototype.load=function(e){return Object(Tt.b)(this,void 0,void 0,(function(){return Object(Tt.d)(this,(function(n){return[2,t.prototype.load.call(this,e)]}))}))},e.prototype.loadFromDisk=function(e){return Object(Tt.b)(this,void 0,void 0,(function(){return Object(Tt.d)(this,(function(n){return[2,t.prototype.loadFromDisk.call(this,e)]}))}))},e.prototype.forwardInput=function(t,e){return void 0===e&&(e={}),Object(Tt.b)(this,void 0,void 0,(function(){var n,r,o,i,a,s,u,c,l,h,f,p,d,v,m,g,y,b,x,w,E;return Object(Tt.d)(this,(function(C){switch(C.label){case 0:if(!(n=this.params))throw new Error("Mtcnn - load model before inference");if(!(r=t.canvases[0]))throw new Error("Mtcnn - inputCanvas is not defined, note that passing tensors into Mtcnn.forwardInput is not supported yet.");return o={},i=Date.now(),a=Ot.L((function(){return t=Ot.m(Ot.f.fromPixels(r)).toFloat(),Ot.L((function(){return Ot.E(Ot.O(t,3).reverse(),3)}));var t})),s=function(t){return a.dispose(),o.total=Date.now()-i,t},u=a.shape.slice(1),c=u[0],l=u[1],h=new Wn(e),f=h.minFaceSize,p=h.scaleFactor,d=h.maxNumScales,v=h.scoreThresholds,m=h.scaleSteps,g=(m||function(t,e,n){for(var r=n[0],o=n[1],i=12/t,a=[],s=Math.min(r,o)*i,u=0;s>=12;)a.push(i*Math.pow(e,u)),s*=e,u+=1;return a}(f,p,[c,l])).filter((function(t){var e=dr(t,[c,l]);return Math.min(e.width,e.height)>12})).slice(0,d),o.scales=g,o.pyramid=g.map((function(t){return dr(t,[c,l])})),y=Date.now(),[4,br(a,g,v[0],n.pnet,o)];case 1:return b=C.sent(),o.total_stage1=Date.now()-y,b.boxes.length?(o.stage2_numInputBoxes=b.boxes.length,y=Date.now(),[4,wr(r,b.boxes,v[1],n.rnet,o)]):[2,s({results:[],stats:o})];case 2:return x=C.sent(),o.total_stage2=Date.now()-y,x.boxes.length?(o.stage3_numInputBoxes=x.boxes.length,y=Date.now(),[4,Er(r,x.boxes,v[2],n.onet,o)]):[2,s({results:[],stats:o})];case 3:return w=C.sent(),o.total_stage3=Date.now()-y,E=w.boxes.map((function(t,e){return fn(se({},new Xt(w.scores[e],new Zt(t.left/l,t.top/c,t.width/l,t.height/c),{height:c,width:l})),new ee(w.points[e].map((function(e){return e.sub(new Gt(t.left,t.top)).div(new Gt(t.width,t.height))})),{width:t.width,height:t.height}))})),[2,s({results:E,stats:o})]}}))}))},e.prototype.forward=function(t,e){return void 0===e&&(e={}),Object(Tt.b)(this,void 0,void 0,(function(){var n;return Object(Tt.d)(this,(function(r){switch(r.label){case 0:return n=this.forwardInput,[4,Te(t)];case 1:return[4,n.apply(this,[r.sent(),e])];case 2:return[2,r.sent().results]}}))}))},e.prototype.forwardWithStats=function(t,e){return void 0===e&&(e={}),Object(Tt.b)(this,void 0,void 0,(function(){var n;return Object(Tt.d)(this,(function(r){switch(r.label){case 0:return n=this.forwardInput,[4,Te(t)];case 1:return[2,n.apply(this,[r.sent(),e])]}}))}))},e.prototype.getDefaultModelName=function(){return"mtcnn_model"},e.prototype.extractParamsFromWeigthMap=function(t){return pr(t)},e.prototype.extractParams=function(t){return fr(t)},e}(We),_r=[new Gt(1.603231,2.094468),new Gt(6.041143,7.080126),new Gt(2.882459,3.518061),new Gt(4.266906,5.178857),new Gt(9.041765,10.66308)],Rr=[117.001,114.697,97.404],Ir=function(t){function e(){var e={withSeparableConvs:!0,iouThreshold:.4,classes:["face"],anchors:_r,meanRgb:Rr,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};return t.call(this,e)||this}return Object(Tt.c)(e,t),Object.defineProperty(e.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),e.prototype.locateFaces=function(t,e){return Object(Tt.b)(this,void 0,void 0,(function(){return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return[4,this.detect(t,e)];case 1:return[2,n.sent().map((function(t){return new Xt(t.score,t.relativeBox,{width:t.imageWidth,height:t.imageHeight})}))]}}))}))},e.prototype.getDefaultModelName=function(){return"tiny_face_detector_model"},e.prototype.extractParamsFromWeigthMap=function(e){return t.prototype.extractParamsFromWeigthMap.call(this,e)},e}(ar),kr={ssdMobilenetv1:new Xn,tinyFaceDetector:new Ir,tinyYolov2:new sr,mtcnn:new Cr,faceLandmark68Net:new _n,faceLandmark68TinyNet:new In,faceRecognitionNet:new Mn,faceExpressionNet:new un,ageGenderNet:new En},Sr=function(t){function e(e,n,r){var o=t.call(this)||this;return o.parentTask=e,o.input=n,o.extractedFaces=r,o}return Object(Tt.c)(e,t),e}(cr),Ar=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t,e,n=this;return Object(Tt.d)(this,(function(r){switch(r.label){case 0:return[4,this.parentTask];case 1:return[4,lr(t=r.sent(),this.input,(function(t){return Object(Tt.b)(n,void 0,void 0,(function(){return Object(Tt.d)(this,(function(e){switch(e.label){case 0:return[4,Promise.all(t.map((function(t){return kr.faceExpressionNet.predictExpressions(t)})))];case 1:return[2,e.sent()]}}))}))}),this.extractedFaces)];case 2:return e=r.sent(),[2,t.map((function(t,n){return cn(t,e[n])}))]}}))}))},e.prototype.withAgeAndGender=function(){return new Fr(this,this.input)},e}(Sr),Or=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t,e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return[4,this.parentTask];case 1:return(t=n.sent())?[4,hr(t,this.input,(function(t){return kr.faceExpressionNet.predictExpressions(t)}),this.extractedFaces)]:[2];case 2:return e=n.sent(),[2,cn(t,e)]}}))}))},e.prototype.withAgeAndGender=function(){return new Mr(this,this.input)},e}(Sr),Dr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.withAgeAndGender=function(){return new Pr(this,this.input)},e.prototype.withFaceDescriptors=function(){return new Wr(this,this.input)},e}(Ar),Tr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.withAgeAndGender=function(){return new Br(this,this.input)},e.prototype.withFaceDescriptor=function(){return new Ur(this,this.input)},e}(Or),Nr=function(t){function e(e,n,r){var o=t.call(this)||this;return o.parentTask=e,o.input=n,o.extractedFaces=r,o}return Object(Tt.c)(e,t),e}(cr),Fr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t,e,n=this;return Object(Tt.d)(this,(function(r){switch(r.label){case 0:return[4,this.parentTask];case 1:return[4,lr(t=r.sent(),this.input,(function(t){return Object(Tt.b)(n,void 0,void 0,(function(){return Object(Tt.d)(this,(function(e){switch(e.label){case 0:return[4,Promise.all(t.map((function(t){return kr.ageGenderNet.predictAgeAndGender(t)})))];case 1:return[2,e.sent()]}}))}))}),this.extractedFaces)];case 2:return e=r.sent(),[2,t.map((function(t,n){var r=e[n],o=r.age;return Bn(Ln(t,r.gender,r.genderProbability),o)}))]}}))}))},e.prototype.withFaceExpressions=function(){return new Ar(this,this.input)},e}(Nr),Mr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t,e,n,r,o;return Object(Tt.d)(this,(function(i){switch(i.label){case 0:return[4,this.parentTask];case 1:return(t=i.sent())?[4,hr(t,this.input,(function(t){return kr.ageGenderNet.predictAgeAndGender(t)}),this.extractedFaces)]:[2];case 2:return e=i.sent(),n=e.age,r=e.gender,o=e.genderProbability,[2,Bn(Ln(t,r,o),n)]}}))}))},e.prototype.withFaceExpressions=function(){return new Or(this,this.input)},e}(Nr),Pr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.withFaceExpressions=function(){return new Dr(this,this.input)},e.prototype.withFaceDescriptors=function(){return new Wr(this,this.input)},e}(Fr),Br=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.withFaceExpressions=function(){return new Tr(this,this.input)},e.prototype.withFaceDescriptor=function(){return new Ur(this,this.input)},e}(Mr),Lr=function(t){function e(e,n){var r=t.call(this)||this;return r.parentTask=e,r.input=n,r}return Object(Tt.c)(e,t),e}(cr),Wr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t;return Object(Tt.d)(this,(function(e){switch(e.label){case 0:return[4,this.parentTask];case 1:return[4,lr(t=e.sent(),this.input,(function(t){return Promise.all(t.map((function(t){return kr.faceRecognitionNet.computeFaceDescriptor(t)})))}),null,(function(t){return t.landmarks.align(null,{useDlibAlignment:!0})}))];case 2:return[2,e.sent().map((function(e,n){return Pn(t[n],e)}))]}}))}))},e.prototype.withFaceExpressions=function(){return new Dr(this,this.input)},e.prototype.withAgeAndGender=function(){return new Pr(this,this.input)},e}(Lr),Ur=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t,e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return[4,this.parentTask];case 1:return(t=n.sent())?[4,hr(t,this.input,(function(t){return kr.faceRecognitionNet.computeFaceDescriptor(t)}),null,(function(t){return t.landmarks.align(null,{useDlibAlignment:!0})}))]:[2];case 2:return e=n.sent(),[2,Pn(t,e)]}}))}))},e.prototype.withFaceExpressions=function(){return new Tr(this,this.input)},e.prototype.withAgeAndGender=function(){return new Br(this,this.input)},e}(Lr),jr=function(t){function e(e,n,r){var o=t.call(this)||this;return o.parentTask=e,o.input=n,o.useTinyLandmarkNet=r,o}return Object(Tt.c)(e,t),Object.defineProperty(e.prototype,"landmarkNet",{get:function(){return this.useTinyLandmarkNet?kr.faceLandmark68TinyNet:kr.faceLandmark68Net},enumerable:!0,configurable:!0}),e}(cr),zr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t,e,n,r,o,i=this;return Object(Tt.d)(this,(function(a){switch(a.label){case 0:return[4,this.parentTask];case 1:return t=a.sent(),e=t.map((function(t){return t.detection})),this.input instanceof Ot.a?[4,Fe(this.input,e)]:[3,3];case 2:return r=a.sent(),[3,5];case 3:return[4,Ne(this.input,e)];case 4:r=a.sent(),a.label=5;case 5:return n=r,[4,Promise.all(n.map((function(t){return i.landmarkNet.detectLandmarks(t)})))];case 6:return o=a.sent(),n.forEach((function(t){return t instanceof Ot.a&&t.dispose()})),[2,t.map((function(t,e){return fn(t,o[e])}))]}}))}))},e.prototype.withFaceExpressions=function(){return new Dr(this,this.input)},e.prototype.withAgeAndGender=function(){return new Pr(this,this.input)},e.prototype.withFaceDescriptors=function(){return new Wr(this,this.input)},e}(jr),Vr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t,e,n,r,o;return Object(Tt.d)(this,(function(i){switch(i.label){case 0:return[4,this.parentTask];case 1:return(t=i.sent())?(e=t.detection,this.input instanceof Ot.a?[4,Fe(this.input,[e])]:[3,3]):[2];case 2:return r=i.sent(),[3,5];case 3:return[4,Ne(this.input,[e])];case 4:r=i.sent(),i.label=5;case 5:return n=r,[4,this.landmarkNet.detectLandmarks(n[0])];case 6:return o=i.sent(),n.forEach((function(t){return t instanceof Ot.a&&t.dispose()})),[2,fn(t,o)]}}))}))},e.prototype.withFaceExpressions=function(){return new Tr(this,this.input)},e.prototype.withAgeAndGender=function(){return new Br(this,this.input)},e.prototype.withFaceDescriptor=function(){return new Ur(this,this.input)},e}(jr),Gr=function(t){function e(e,n){void 0===n&&(n=new Kn);var r=t.call(this)||this;return r.input=e,r.options=n,r}return Object(Tt.c)(e,t),e}(cr),Hr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t,e,n,r;return Object(Tt.d)(this,(function(o){switch(o.label){case 0:return e=(t=this).input,(n=t.options)instanceof Wn?[4,kr.mtcnn.forward(e,n)]:[3,2];case 1:return[2,o.sent().map((function(t){return t.detection}))];case 2:if(!(r=n instanceof ur?function(t){return kr.tinyFaceDetector.locateFaces(t,n)}:n instanceof Kn?function(t){return kr.ssdMobilenetv1.locateFaces(t,n)}:n instanceof ir?function(t){return kr.tinyYolov2.locateFaces(t,n)}:null))throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return[2,r(e)]}}))}))},e.prototype.runAndExtendWithFaceDetections=function(){var t=this;return new Promise((function(e){return Object(Tt.b)(t,void 0,void 0,(function(){var t;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return[4,this.run()];case 1:return t=n.sent(),[2,e(t.map((function(t){return se({},t)})))]}}))}))}))},e.prototype.withFaceLandmarks=function(t){return void 0===t&&(t=!1),new zr(this.runAndExtendWithFaceDetections(),this.input,t)},e.prototype.withFaceExpressions=function(){return new Ar(this.runAndExtendWithFaceDetections(),this.input)},e.prototype.withAgeAndGender=function(){return new Fr(this.runAndExtendWithFaceDetections(),this.input)},e}(Gr);!function(t){function e(){return null!==t&&t.apply(this,arguments)||this}Object(Tt.c)(e,t),e.prototype.run=function(){return Object(Tt.b)(this,void 0,void 0,(function(){var t,e;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return[4,new Hr(this.input,this.options)];case 1:return t=n.sent(),e=t[0],t.forEach((function(t){t.score>e.score&&(e=t)})),[2,e]}}))}))},e.prototype.runAndExtendWithFaceDetection=function(){var t=this;return new Promise((function(e){return Object(Tt.b)(t,void 0,void 0,(function(){var t;return Object(Tt.d)(this,(function(n){switch(n.label){case 0:return[4,this.run()];case 1:return t=n.sent(),[2,e(t?se({},t):void 0)]}}))}))}))},e.prototype.withFaceLandmarks=function(t){return void 0===t&&(t=!1),new Vr(this.runAndExtendWithFaceDetection(),this.input,t)},e.prototype.withFaceExpressions=function(){return new Or(this.runAndExtendWithFaceDetection(),this.input)},e.prototype.withAgeAndGender=function(){return new Mr(this.runAndExtendWithFaceDetection(),this.input)}}(Gr);function qr(t,e){return void 0===e&&(e=new Kn),new Hr(t,e)}!function(){function t(t,e){void 0===e&&(e=.6),this._distanceThreshold=e;var n=Array.isArray(t)?t:[t];if(!n.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");var r=1,o=function(){return"person "+r++};this._labeledDescriptors=n.map((function(t){if(t instanceof ie)return t;if(t instanceof Float32Array)return new ie(o(),[t]);if(t.descriptor&&t.descriptor instanceof Float32Array)return new ie(o(),[t.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array | Array<LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array>")}))}Object.defineProperty(t.prototype,"labeledDescriptors",{get:function(){return this._labeledDescriptors},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"distanceThreshold",{get:function(){return this._distanceThreshold},enumerable:!0,configurable:!0}),t.prototype.computeMeanDistance=function(t,e){return e.map((function(e){return function(t,e){if(t.length!==e.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");var n=Array.from(t),r=Array.from(e);return Math.sqrt(n.map((function(t,e){return t-r[e]})).reduce((function(t,e){return t+Math.pow(e,2)}),0))}(e,t)})).reduce((function(t,e){return t+e}),0)/(e.length||1)},t.prototype.matchDescriptor=function(t){var e=this;return this.labeledDescriptors.map((function(n){var r=n.descriptors,o=n.label;return new re(o,e.computeMeanDistance(t,r))})).reduce((function(t,e){return t.distance<e.distance?t:e}))},t.prototype.findBestMatch=function(t){var e=this.matchDescriptor(t);return e.distance<this.distanceThreshold?e:new re("unknown",e.distance)},t.prototype.toJSON=function(){return{distanceThreshold:this.distanceThreshold,labeledDescriptors:this.labeledDescriptors.map((function(t){return t.toJSON()}))}},t.fromJSON=function(e){return new t(e.labeledDescriptors.map((function(t){return ie.fromJSON(t)})),e.distanceThreshold)}}();const Kr=(t,e)=>{const{width:n,height:o}=t;(function t(e,n){var r=new Nt(n.width,n.height),o=r.width,i=r.height;if(o<=0||i<=0)throw new Error("resizeResults - invalid dimensions: "+JSON.stringify({width:o,height:i}));if(Array.isArray(e))return e.map((function(e){return t(e,{width:o,height:i})}));if(hn(e)){var a=e.detection.forSize(o,i),s=e.unshiftedLandmarks.forSize(a.box.width,a.box.height);return fn(se(e,a),s)}return ae(e)?se(e,e.detection.forSize(o,i)):e instanceof te||e instanceof Xt?e.forSize(o,i):e})(e,{width:n,height:o}).forEach(e=>{const i=((t,e)=>{const{x:n,y:r,width:o,height:i}=t;return{x:e.width-o-n,y:r,width:o,height:i}})(e.box,{width:n,height:o});new r.DrawBox(i).draw(t)})};var Xr=n(24),$r=n.n(Xr);const Yr=Object(o.createRef)(),Jr=({facesProperties:t,videoElement:e,debugMessages:n})=>{const{clientWidth:r,clientHeight:a}=e;return Object(o.useEffect)(()=>{const e=Yr&&Yr.current;e&&(e.width=r,e.height=a,Kr(e,t),((t,e)=>{const n=t.getContext("2d");n.font="15px Arial",n.fillStyle="purple",e.forEach((t,e)=>{const r=20*(e+1)+30;n.fillText(t,10,r)})})(e,n))}),i.a.createElement("canvas",{className:$r.a.canvas,ref:Yr})};Jr.defaultProps={videoElement:{}},Jr.propType={facesProperties:H.a.any.isRequired,debugMessages:H.a.array.isRequired,videoElement:H.a.instanceOf(Element).isRequired};var Qr=Jr,Zr=n(10),to=n.n(Zr);function eo(){return(eo=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var no=o.createElement("defs",null,o.createElement("path",{id:"ico-camera_svg__a",d:"M3.5 8a.5.5 0 00-.5.5V21c0 .552.449 1 1 1h20a1 1 0 001-1V8.5a.5.5 0 00-.5-.5h-8.524l-.126-.855C15.713 6.207 14.918 5.5 14 5.5s-1.713.707-1.85 1.645L12.024 8H3.5zM24 24H4c-1.655 0-3-1.346-3-3V8.5C1 7.122 2.122 6 3.5 6h6.896C10.97 4.529 12.393 3.5 14 3.5s3.03 1.029 3.604 2.5H24.5C25.878 6 27 7.122 27 8.5V21c0 1.654-1.346 3-3 3zM6.5 10h-2a.5.5 0 000 1h2a.5.5 0 000-1zm7.5 1.5c-1.93 0-3.5 1.57-3.5 3.5s1.57 3.5 3.5 3.5 3.5-1.57 3.5-3.5-1.57-3.5-3.5-3.5zm0 9A5.506 5.506 0 018.5 15c0-3.033 2.467-5.5 5.5-5.5 3.032 0 5.5 2.467 5.5 5.5 0 3.032-2.468 5.5-5.5 5.5z"})),ro=o.createElement("use",{fill:"#F0F",xlinkHref:"#ico-camera_svg__a",fillRule:"evenodd"});var oo=function(t){return o.createElement("svg",eo({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"1em",height:"1em",viewBox:"0 0 28 28"},t),no,ro)};const io={ALWAYS:"always",AUTO:"auto",NEVER:"never"},ao=[3,2,1],so=({action:t,countdownMode:e})=>{const n=Object(o.useRef)(),[r,a]=Object(o.useState)(ao.length),s=()=>{clearInterval(n.current)},u=()=>{0===r?(s(),t()):a(t=>t-1)},c=()=>{n.current=setInterval(u,1e3)},l=()=>{switch(e){case io.AUTO:window.innerWidth>=628?c():t();break;case io.ALWAYS:c();break;case io.NEVER:default:t()}};Object(o.useEffect)(()=>(l(),s),[e,r]);const h=t=>r===t?to.a.activeCounter:to.a.inactiveCounter;return e===io.NEVER?null:i.a.createElement("div",{className:to.a.container},ao.map(t=>i.a.createElement("span",{key:t,className:h(t)},t)),i.a.createElement("span",{className:h(0)},i.a.createElement(oo,{className:0===r?to.a.activeIcon:to.a.inactiveIcon})))};so.defaultProps={countdownMode:"never"},so.propTypes={action:H.a.func.isRequired,countdownMode:H.a.oneOf(Object.values(io))};var uo=so,co=n(25),lo=n.n(co),ho=n(26),fo=n.n(ho);function po(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const vo={PNG:"png",JPEG:"jpeg"};class mo extends o.Component{constructor(t){super(t),po(this,"webcamRef",i.a.createRef()),po(this,"handleVideoPlaying",()=>{const{onVideoPlaying:t}=this.props;t();const{videoWidth:e,videoHeight:n}=this.webcamRef.current.video;this.setState({videoWidth:e,videoHeight:n})}),po(this,"handleUserMedia",()=>{this.webcamRef.current.video.addEventListener("playing",this.handleVideoPlaying)}),po(this,"handleUserMediaError",t=>{const{onError:e}=this.props,{name:n="",message:r=""}=t;[n,r].some(t=>t.toLowerCase().includes("constrain"))?e(c):e("NotAllowedError"!==n?l:a)}),po(this,"takePhoto",()=>this.webcamRef.current.getScreenshot()),this.state={videoHeight:null,videoWidth:null}}componentWillUnmount(){this.webcamRef.current.video.srcObject=null,this.webcamRef.current.video.removeEventListener("playing",this.handleVideoPlaying)}render(){const{videoWidth:t,videoHeight:e}=this.state,{widthMinConstraint:n,widthIdealConstraint:r,format:o,quality:a}=this.props;return i.a.createElement(lo.a,{ref:this.webcamRef,width:"100%",className:fo.a.video,videoConstraints:{facingMode:"user",width:{min:n,ideal:r}},audio:!1,onUserMediaError:this.handleUserMediaError,onUserMedia:this.handleUserMedia,screenshotFormat:"image/".concat(o),screenshotQuality:a,minScreenshotWidth:t,minScreenshotHeight:e})}}mo.defaultProps={widthMinConstraint:1024,widthIdealConstraint:1280,onError:()=>{}},mo.propTypes={onVideoPlaying:H.a.func.isRequired,widthMinConstraint:H.a.number,widthIdealConstraint:H.a.number,format:H.a.oneOf(Object.values(vo)),onError:H.a.func,quality:H.a.oneOf(Object.values(_))};var go=mo;navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia;const yo=async()=>navigator.mediaDevices?await new Promise(t=>{navigator.mediaDevices.enumerateDevices().then(e=>{const n=e.filter(t=>"videoinput"===t.kind);t(!!n.length)}).catch(e=>{t(!1)})})?void 0:s:u,bo={DETECTIONS_COUNT:0},xo="INIT_MODEL_DURATION",wo="INIT_DETECTION_DURATION",Eo="AVERAGE_DETECTION_DURATION",Co="DETECTIONS_COUNT",_o="FACES_COUNT",Ro="FACE_SCORE",Io="BOX_SIZE",ko="RELATIVE_BOX",So="CENTERING",Ao="IS_STABLE_INDEX",Oo=[_o,Ro,Io,ko,So,Ao],Do=t=>bo[t],To=({key:t,value:e})=>{bo[t]=e},No=async t=>{const e=performance.now();return{result:await t(),duration:performance.now()-e}},Fo=t=>{const e=(({previousAverage:t=0,count:e=0,newValue:n})=>(t*e+n)/(e+1))({previousAverage:Do(Eo),count:Do(Co),newValue:t});To({key:Eo,value:e}),bo[Co]++},Mo=new ur({inputSize:320,scoreThreshold:.6}),Po=async()=>{try{const{duration:t}=await No(async()=>kr.tinyFaceDetector.loadFromUri("assets/face-capture/"));return(t=>{To({key:xo,value:t})})(t),null}catch(t){return t}},Bo=async()=>{try{const{duration:t}=await No(async()=>qr(document.createElement("canvas"),Mo));return(t=>{To({key:wo,value:t})})(t),null}catch(t){return t}},Lo={PORTRAIT:.65,LANDSCAPE:.6},Wo=t=>Math.round(100*t)/100;var Uo=[t=>{let e="",n=!0;t.length||(e=p,n=!1);return{instructionCode:e,debugMessage:{key:_o,value:t.length},canContinueOtherChecks:n}},t=>{let e="";return t.length>1&&(e=m),{instructionCode:e,debugMessage:""}},t=>{const[{score:e}]=t;return{instructionCode:"",debugMessage:{key:Ro,value:"".concat(Wo(e))}}},t=>{let e="";const[{imageWidth:n,imageHeight:r,box:o}]=t,i=o.x+o.width/2,a=o.y+o.height/2+-.15*o.height,s=n/2,u=r/2,c=.1*Math.min(n,r);(Math.abs(s-i)>c||Math.abs(u-a)>c)&&(e=v);const l=Wo(i/n),h=Wo(a/r);return{instructionCode:e,debugMessage:{key:So,value:"x = ".concat(l,"; y = ").concat(h)}}},t=>{let e="";const[{box:n}]=t;(n.width<200||n.height<200)&&(e=p);return{instructionCode:e,debugMessage:{key:Io,value:"".concat(Wo(n.height)," x ").concat(Wo(n.width))}}},(t,{isPortraitCamera:e=!1}={})=>{let n="";const[{relativeBox:r}]=t,o=e?"width":"height",i=Lo[e?"PORTRAIT":"LANDSCAPE"],a=i+.08,s=i-.08;r[o]>a&&(n=d),r[o]<s&&(n=p);const u=Wo(r[o]);return{instructionCode:n,debugMessage:{key:ko,value:"[".concat(o,"]: ").concat(u)}}}];const jo=(t,e)=>{const n=Math.max(...t),r=Math.min(...t);return Number((n-r).toFixed(2))>e},zo=t=>[jo(t.map(t=>t.x),.02),jo(t.map(t=>t.y),.02),jo(t.map(t=>t.size),.02)].some(Boolean);let Vo=[];const Go=(t,e,n)=>{const r=t[0],o=zo(Vo),i=Vo.length===e;(!n||o||i)&&(Vo=[]),r&&(Vo=[...Vo,r])},Ho=(t,e,n)=>!!n||!(t||!e),qo=(t,e)=>{let n="";return t||e||(n=g),n},Ko=t=>t?null:{key:Ao,value:Vo.length},Xo=(...t)=>{const e=((t,e={})=>{const{captureMethod:n,numberOfChecks:r,isCurrentFaceValid:o}=e;Go(t,r,o);const i=zo(Vo),a=Vo.length===r,s=n===w.MANUAL;return{isStable:Ho(i,a,s),faceStableMessageCode:qo(i,a),debugMessage:Ko(s)}})(...t),{debugMessage:n}=e;return n&&To(n),e},$o=(t,e)=>{Oo.forEach(t=>{delete bo[t]});const{isSingleFaceValid:n,singleFaceMessageCode:r}=((...t)=>{const e=[];for(let n=0;n<Uo.length;n++){const r=Uo[n],{instructionCode:o,debugMessage:i,canContinueOtherChecks:a=!0}=r(...t);if(o&&e.push(o),i&&To(i),!a)break}return{isSingleFaceValid:!e.length,singleFaceMessageCode:e.length?e[0]:""}})(t,e),{isStable:o,faceStableMessageCode:i}=Xo(t,{...e,isCurrentFaceValid:n});return{isSingleFaceValid:n,isValid:n&&o,messageCode:r||i}},Yo=t=>Object.entries(t).map(([t,e])=>{const n=(t=>t.replace(/_/g," ").toLowerCase())(t),r=(t=>"number"==typeof t?Math.ceil(t):t)(e);return"".concat(n,": ").concat(r)});var Jo=n(21),Qo=n.n(Jo);const Zo=(t,e)=>{const n=e?.45:.7,r=e?.25:.1;return{x:.5*t.width-n*t.height/2,y:r*t.height,height:n*t.height,width:n*t.height}},ti={[p]:i.a.createElement(V,{id:"move-closer-feedback-message"}),[d]:i.a.createElement(V,{id:"move-back-feedback-message"}),[v]:i.a.createElement(V,{id:"move-center-feedback-message"}),[m]:i.a.createElement(V,{id:"one-face-only-feedback-message"}),[g]:i.a.createElement(V,{id:"hold-still-feedback-message"}),[y]:i.a.createElement(V,{id:"camera-loading-feedback-message"}),[b]:i.a.createElement(V,{id:"face-scan-loading-feedback-message"})},ei=({onSuccess:t,onError:e,showOverlay:n,widthIdealConstraint:r,widthMinConstraint:a,format:s,CustomButton:u,countdownMode:c,captureMethod:l,isDebug:f,imageType:p,qualityType:d})=>{const[m,g]=Object(o.useState)([]),[y,x]=Object(o.useState)([]),[C,R]=Object(o.useState)(!1),[I,k]=Object(o.useState)(!1),[S,A]=Object(o.useState)(!1),[O,D]=Object(o.useState)(ti.CAMERA_LOADING),[T,N]=Object(o.useState)(!1),[F,M]=Object(o.useState)(!1),P=Object(o.useRef)(null),B=Object(o.useRef)(),L=Object(o.useRef)(),W=Object(o.useRef)(I);W.current=I;const U=!F,j=F?w.MANUAL:l,z=j===w.MANUAL&&!C,V=P.current&&P.current.webcamRef.current.video,G=f&&V,H=V&&V.videoHeight>V.videoWidth,q=_[d],K=t=>{D(ti[t])},X=async()=>{const t=await(async t=>{const{result:e,duration:n}=await No(async()=>qr(t,Mo));return Fo(n),e})(V),{isSingleFaceValid:e,isValid:n,messageCode:r}=$o(t,{isPortraitCamera:H,captureMethod:j,numberOfChecks:4}),o=Yo(bo);return x(o),g(t),N(e),{isValid:n,messageCode:r,bbox:Array.isArray(t)&&t.length>0?t[0].box:{}}},$=n=>{const r=P.current.takePhoto();p===E.ORIGINAL?(t({image:r}),K("")):(async(t,e)=>{const n=document.createElement("canvas"),r=n.getContext("2d"),{bbox:o,relativeMarginCropping:i,format:a,qualityValue:s,isPortraitCamera:u}=e;return new Promise(e=>{const c=new Image;c.onload=function(){const{topLeftXCoord:t,topLeftYCoord:l,width:h,height:f}=((t,e,n)=>{const r=2*t,o=e.x-t*e.width<0?0:e.x-t*e.width,i=e.y-r*e.height<0?0:e.y-r*e.height;let a=0!==o?e.width+e.width*(2*t):e.width+e.x+e.width*t,s=0!==i?e.height+e.height*(t+r):e.height+e.y+e.height*t;return s=s+i>n.imageHeight?n.imageHeight-i:s,a=a+o>n.imageWidth?n.imageWidth-o:a,{topLeftXCoord:o,topLeftYCoord:i,width:a,height:s}})(i,o||Zo(c,u),{imageHeight:c.height,imageWidth:c.width});n.width=h,n.height=f,r.drawImage(c,t,l,h,f,0,0,h,f),e({croppedImg:n.toDataURL("image/".concat(a),s)})},c.src=t})})(r,{bbox:n,relativeMarginCropping:.3,format:s,qualityValue:q,isPortraitCamera:H}).then(({croppedImg:e})=>{t({image:e}),K("")}).catch(e)},Y=async()=>{const t=U&&await Po();setTimeout(()=>{W.current||M(!0)},5e3);const n=U&&!t&&await Bo();t||n?e(h):(k(!0),K(v))};return Object(o.useEffect)(()=>{(async()=>{const t=await yo();t&&e(t)})(),Y()},[]),Object(o.useEffect)(()=>{if(S&&I&&j===w.AUTO){const t=async()=>{const{isValid:e,messageCode:n,bbox:r}=await X();e?$(r):(K(n),B.current=setTimeout(t,200))};L.current=setTimeout(t,1e3)}return()=>(clearTimeout(L.current),void clearTimeout(B.current))},[S,I,j]),i.a.createElement("div",{className:Qo.a.moduleContainer,"data-qa":"face-capture"},i.a.createElement("div",{className:Qo.a.cameraContainer},i.a.createElement(go,{ref:P,widthIdealConstraint:r,widthMinConstraint:a,format:s,quality:q,onVideoPlaying:()=>{A(!0),K(I?v:b)},onError:e}),n&&i.a.createElement(ht,{isPortraitCamera:H,isSuccess:T}),O&&i.a.createElement(vt,{isPortraitCamera:H,message:O}),G&&i.a.createElement(Qr,{facesProperties:m,debugMessages:y,videoElement:V})),C&&i.a.createElement(uo,{action:async()=>{let t;if(R(!1),U){const{isValid:e,messageCode:n,bbox:r}=await X();if(t=r,!e)return void K(n)}$(t)},countdownMode:c}),z&&i.a.createElement(At,{CustomButton:u,onClick:()=>R(!0),disabled:!S||!I}))};ei.defaultProps={isDebug:!1,captureMethod:w.MANUAL,onError:()=>{},showOverlay:!0,format:vo.JPEG,countdownMode:io.NEVER,imageType:E.ORIGINAL,qualityType:C.HIGH},ei.propTypes={captureMethod:H.a.oneOf(Object.values(w)),onSuccess:H.a.func.isRequired,onError:H.a.func,showOverlay:H.a.bool,widthIdealConstraint:H.a.number,widthMinConstraint:H.a.number,format:H.a.oneOf(Object.values(vo)),CustomButton:H.a.func,countdownMode:H.a.oneOf(Object.values(io)),isDebug:H.a.bool,imageType:H.a.oneOf(Object.values(E)),qualityType:H.a.oneOf(Object.values(C))};var ni=ei,ri=n(6),oi=n.n(ri),ii=n(7),ai=n.n(ii),si=n(14),ui=n.n(si),ci=n(15),li=n.n(ci),hi=n(8),fi=n.n(hi),pi=n(9),di=n.n(pi),vi=function(t){return"string"==typeof t},mi=function(t){return"function"==typeof t},gi=new Map,yi=new Map;function bi(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return function(r){if(vi(r)&&(r=new Date(r)),n){var o=wi(t,e),i=yi.get(o);if(i)return i.format(r);var a=new Intl.DateTimeFormat(t,e);return yi.set(o,a),a.format(r)}return new Intl.DateTimeFormat(t,e).format(r)}}function xi(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return function(r){if(n){var o=wi(t,e),i=gi.get(o);if(i)return i.format(r);var a=new Intl.NumberFormat(t,e);return gi.set(o,a),a.format(r)}return new Intl.NumberFormat(t,e).format(r)}}function wi(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Array.isArray(t)?t.sort().join("-"):t;return"".concat(n,"-").concat(JSON.stringify(e))}Object.freeze({__proto__:null,date:bi,number:xi});function Ei(t){var e=t.locale,n=t.locales,r=t.values,o=t.formats,i=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{plurals:void 0},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};e=e||t;var o=n.plurals,i=function(t){return vi(t)?r[t]||{style:t}:t},a=function(t,n){return function(r){var o=mi(n)?n(r):n,i=Array.isArray(o)?o:[o],a=xi(e)(t);return i.map((function(t){return vi(t)?t.replace("#",a):t}))}};return{plural:function(t,e){var n=e.offset,r=void 0===n?0:n,i=di()(e,["offset"]),s=i[t]||i[null==o?void 0:o(t-r)]||i.other;return a(t-r,s)},selectordinal:function(t,e){var n=e.offset,r=void 0===n?0:n,i=di()(e,["offset"]),s=i[t]||i[null==o?void 0:o(t-r,!0)]||i.other;return a(t-r,s)},select:function(t,e){return e[t]||e.other},number:function(t,n){return xi(e,i(n))(t)},date:function(t,n){return bi(e,i(n))(t)},undefined:function(t){return t}}}(e,n,t.localeData,o);return function t(e,n,o){var a=r[e],s=i[n](a,o),u=mi(s)?s(t):s;return Array.isArray(u)?u.join(""):u}}function Ci(t,e,n,r){return function(o){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=Ei({locale:e,locales:n,localeData:r,formats:i,values:o}),s=function t(e){return Array.isArray(e)?e.reduce((function(e,n){if(vi(n))return e+n;var r=S()(n,3),o=r[0],i=r[1],s=r[2],u={};null==s||vi(s)?u=s:Object.keys(s).forEach((function(e){u[e]=t(s[e])}));var c=a(o,i,u);return null==c?e:e+c}),""):e},u=s(t);return u.trim()}}var _i=function(t){ui()(o,t);var e,n,r=(e=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var t,r=fi()(e);if(n){var o=fi()(this).constructor;t=Reflect.construct(r,arguments,o)}else t=r.apply(this,arguments);return li()(this,t)});function o(t){var e;return oi()(this,o),(e=r.call(this))._messages={},e._localeData={},null!=t.missing&&(e._missing=t.missing),null!=t.messages&&e.load(t.messages),null!=t.localeData&&e.loadLocaleData(t.localeData),null==t.locale&&null==t.locales||e.activate(t.locale,t.locales),e}return ai()(o,[{key:"_loadLocaleData",value:function(t,e){null==this._localeData[t]?this._localeData[t]=e:Object.assign(this._localeData[t],e)}},{key:"loadLocaleData",value:function(t,e){var n=this;null!=e?this._loadLocaleData(t,e):Object.keys(t).forEach((function(e){return n._loadLocaleData(e,t[e])})),this.emit("change")}},{key:"_load",value:function(t,e){null==this._messages[t]?this._messages[t]=e:Object.assign(this._messages[t],e)}},{key:"load",value:function(t,e){var n=this;null!=e?this._load(t,e):Object.keys(t).forEach((function(e){return n._load(e,t[e])})),this.emit("change")}},{key:"activate",value:function(t,e){this._locale=t,this._locales=e,this.emit("change")}},{key:"_",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.message,o=n.formats;vi(t)||(e=t.values||e,r=t.message,t=t.id);var i=this.messages[t]||r||t,a=this._missing;return a&&!this.messages[t]?mi(a)?a(this.locale,t):a:vi(i)?i:Ci(i,this.locale,this.locales,this.localeData)(e,o)}},{key:"date",value:function(t,e){return bi(this.locales||this.locale,e)(t)}},{key:"number",value:function(t,e){return xi(this.locales||this.locale,e)(t)}},{key:"locale",get:function(){return this._locale}},{key:"locales",get:function(){return this._locales}},{key:"messages",get:function(){var t;return null!==(t=this._messages[this._locale])&&void 0!==t?t:{}}},{key:"localeData",get:function(){var t;return null!==(t=this._localeData[this._locale])&&void 0!==t?t:{}}}]),o}(function(){function t(){oi()(this,t),this._events={}}return ai()(t,[{key:"on",value:function(t,e){var n=this;return this._hasEvent(t)||(this._events[t]=[]),this._events[t].push(e),function(){return n.removeListener(t,e)}}},{key:"removeListener",value:function(t,e){if(this._hasEvent(t)){var n=this._events[t].indexOf(e);~n&&this._events[t].splice(n,1)}}},{key:"emit",value:function(t){for(var e=this,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];this._hasEvent(t)&&this._events[t].map((function(t){return t.apply(e,r)}))}},{key:"_hasEvent",value:function(t){return Array.isArray(this._events[t])}}]),t}());function Ri(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new _i(t)}var Ii=Ri(),ki=function(t){return"string"==typeof t},Si=function(t){return"function"==typeof t},Ai=new Map,Oi=new Map;function Di(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return function(r){if(ki(r)&&(r=new Date(r)),n){var o=Ni(t,e),i=Oi.get(o);if(i)return i.format(r);var a=new Intl.DateTimeFormat(t,e);return Oi.set(o,a),a.format(r)}return new Intl.DateTimeFormat(t,e).format(r)}}function Ti(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return function(r){if(n){var o=Ni(t,e),i=Ai.get(o);if(i)return i.format(r);var a=new Intl.NumberFormat(t,e);return Ai.set(o,a),a.format(r)}return new Intl.NumberFormat(t,e).format(r)}}function Ni(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Array.isArray(t)?t.sort().join("-"):t;return"".concat(n,"-").concat(JSON.stringify(e))}Object.freeze({__proto__:null,date:Di,number:Ti});function Fi(t){var e=t.locale,n=t.locales,r=t.values,o=t.formats,i=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{plurals:void 0},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};e=e||t;var o=n.plurals,i=function(t){return ki(t)?r[t]||{style:t}:t},a=function(t,n){return function(r){var o=Si(n)?n(r):n,i=Array.isArray(o)?o:[o],a=Ti(e)(t);return i.map((function(t){return ki(t)?t.replace("#",a):t}))}};return{plural:function(t,e){var n=e.offset,r=void 0===n?0:n,i=di()(e,["offset"]),s=i[t]||i[null==o?void 0:o(t-r)]||i.other;return a(t-r,s)},selectordinal:function(t,e){var n=e.offset,r=void 0===n?0:n,i=di()(e,["offset"]),s=i[t]||i[null==o?void 0:o(t-r,!0)]||i.other;return a(t-r,s)},select:function(t,e){return e[t]||e.other},number:function(t,n){return Ti(e,i(n))(t)},date:function(t,n){return Di(e,i(n))(t)},undefined:function(t){return t}}}(e,n,t.localeData,o);return function t(e,n,o){var a=r[e],s=i[n](a,o),u=Si(s)?s(t):s;return Array.isArray(u)?u.join(""):u}}function Mi(t,e,n,r){return function(o){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=Fi({locale:e,locales:n,localeData:r,formats:i,values:o}),s=function t(e){return Array.isArray(e)?e.reduce((function(e,n){if(ki(n))return e+n;var r=S()(n,3),o=r[0],i=r[1],s=r[2],u={};null==s||ki(s)?u=s:Object.keys(s).forEach((function(e){u[e]=t(s[e])}));var c=a(o,i,u);return null==c?e:e+c}),""):e},u=s(t);return u.trim()}}var Pi=function(t){ui()(o,t);var e,n,r=(e=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var t,r=fi()(e);if(n){var o=fi()(this).constructor;t=Reflect.construct(r,arguments,o)}else t=r.apply(this,arguments);return li()(this,t)});function o(t){var e;return oi()(this,o),(e=r.call(this))._messages={},e._localeData={},null!=t.missing&&(e._missing=t.missing),null!=t.messages&&e.load(t.messages),null!=t.localeData&&e.loadLocaleData(t.localeData),null==t.locale&&null==t.locales||e.activate(t.locale,t.locales),e}return ai()(o,[{key:"_loadLocaleData",value:function(t,e){null==this._localeData[t]?this._localeData[t]=e:Object.assign(this._localeData[t],e)}},{key:"loadLocaleData",value:function(t,e){var n=this;null!=e?this._loadLocaleData(t,e):Object.keys(t).forEach((function(e){return n._loadLocaleData(e,t[e])})),this.emit("change")}},{key:"_load",value:function(t,e){null==this._messages[t]?this._messages[t]=e:Object.assign(this._messages[t],e)}},{key:"load",value:function(t,e){var n=this;null!=e?this._load(t,e):Object.keys(t).forEach((function(e){return n._load(e,t[e])})),this.emit("change")}},{key:"activate",value:function(t,e){this._locale=t,this._locales=e,this.emit("change")}},{key:"_",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.message,o=n.formats;ki(t)||(e=t.values||e,r=t.message,t=t.id);var i=this.messages[t]||r||t,a=this._missing;return a&&!this.messages[t]?Si(a)?a(this.locale,t):a:ki(i)?i:Mi(i,this.locale,this.locales,this.localeData)(e,o)}},{key:"date",value:function(t,e){return Di(this.locales||this.locale,e)(t)}},{key:"number",value:function(t,e){return Ti(this.locales||this.locale,e)(t)}},{key:"locale",get:function(){return this._locale}},{key:"locales",get:function(){return this._locales}},{key:"messages",get:function(){var t;return null!==(t=this._messages[this._locale])&&void 0!==t?t:{}}},{key:"localeData",get:function(){var t;return null!==(t=this._localeData[this._locale])&&void 0!==t?t:{}}}]),o}(function(){function t(){oi()(this,t),this._events={}}return ai()(t,[{key:"on",value:function(t,e){var n=this;return this._hasEvent(t)||(this._events[t]=[]),this._events[t].push(e),function(){return n.removeListener(t,e)}}},{key:"removeListener",value:function(t,e){if(this._hasEvent(t)){var n=this._events[t].indexOf(e);~n&&this._events[t].splice(n,1)}}},{key:"emit",value:function(t){for(var e=this,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];this._hasEvent(t)&&this._events[t].map((function(t){return t.apply(e,r)}))}},{key:"_hasEvent",value:function(t){return Array.isArray(this._events[t])}}]),t}());!function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};new Pi(t)}();const Bi=Ii;var Li=n(27),Wi=n(28),Ui=n(29),ji=n(30),zi=n(31),Vi=n(32),Gi={[x.EN]:Li.messages,[x.DE]:Wi.messages,[x.ES]:Ui.messages,[x.ES_419]:ji.messages,[x.FR]:Vi.messages,[x.IT]:zi.messages};const Hi=x.EN;function qi(t=""){const[e,n=""]=t.split("-");return{language:e,region:n}}function Ki(t=""){const e=function(t){const{language:e,region:n}=qi(t);return[e.toLowerCase(),n.toUpperCase()].filter(Boolean).join("-")}(t);if(e&&Object.keys(Gi).includes(e))return e;const{language:n}=qi(e);if(n&&Object.keys(Gi).includes(n))return n;const r=Object.keys(Gi).find(t=>qi(t).language===n);return r||Hi}const Xi=({language:t,children:e})=>{const n=Ki(t);return Bi.load(n,(t=>Gi[t])(n)),Bi.activate(n),i.a.createElement(N,{i18n:Bi},e)};Xi.defaultProps={language:Hi},Xi.propTypes={language:H.a.oneOf(Object.values(x)),children:H.a.node.isRequired};var $i=Xi;var Yi=t=>{const{language:e}=t;return i.a.createElement(I,{onError:t.onError},i.a.createElement($i,{language:e},i.a.createElement(ni,t)))}}]);
|
|
2
|
+
module.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=74)}([function(t,e,n){"use strict";(function(t,r,o,a){n.d(e,"a",(function(){return dt})),n.d(e,"b",(function(){return xt})),n.d(e,"c",(function(){return Ls})),n.d(e,"d",(function(){return Ku})),n.d(e,"e",(function(){return Ss})),n.d(e,"f",(function(){return kf})),n.d(e,"g",(function(){return qi})),n.d(e,"h",(function(){return gn})),n.d(e,"i",(function(){return Ru})),n.d(e,"j",(function(){return Ou})),n.d(e,"k",(function(){return zs})),n.d(e,"l",(function(){return Yi})),n.d(e,"m",(function(){return zn})),n.d(e,"n",(function(){return pn})),n.d(e,"o",(function(){return fl})),n.d(e,"p",(function(){return Ef})),n.d(e,"q",(function(){return Pu})),n.d(e,"r",(function(){return uc})),n.d(e,"s",(function(){return qu})),n.d(e,"t",(function(){return Qs})),n.d(e,"u",(function(){return ns})),n.d(e,"v",(function(){return qn})),n.d(e,"w",(function(){return gc})),n.d(e,"x",(function(){return er})),n.d(e,"y",(function(){return an})),n.d(e,"z",(function(){return Nu})),n.d(e,"A",(function(){return is})),n.d(e,"B",(function(){return Ju})),n.d(e,"C",(function(){return tc})),n.d(e,"D",(function(){return _r})),n.d(e,"E",(function(){return or})),n.d(e,"F",(function(){return ou})),n.d(e,"G",(function(){return rn})),n.d(e,"H",(function(){return sn})),n.d(e,"I",(function(){return un})),n.d(e,"J",(function(){return cn})),n.d(e,"K",(function(){return ln})),n.d(e,"L",(function(){return Pe})),n.d(e,"M",(function(){return ar})),n.d(e,"N",(function(){return xc})),n.d(e,"O",(function(){return sr})),n.d(e,"P",(function(){return hn}));var i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function s(t,e){function n(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function u(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function s(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){t.done?o(t.value):new n((function(e){e(t.value)})).then(i,s)}u((r=r.apply(t,e||[])).next())}))}function c(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=e.call(t,i)}catch(t){a=[6,t],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}}var l=function(){function t(t){this.global=t,this.flags={},this.flagRegistry={},this.urlFlags={},this.populateURLFlags()}return t.prototype.setPlatform=function(t,e){this.platform,this.platformName=t,this.platform=e},t.prototype.registerFlag=function(t,e,n){if(this.flagRegistry[t]={evaluationFn:e,setHook:n},null!=this.urlFlags[t]){var r=this.urlFlags[t];this.set(t,r)}},t.prototype.get=function(t){return t in this.flags||(this.flags[t]=this.evaluateFlag(t)),this.flags[t]},t.prototype.getNumber=function(t){return this.get(t)},t.prototype.getBool=function(t){return this.get(t)},t.prototype.getFlags=function(){return this.flags},Object.defineProperty(t.prototype,"features",{get:function(){return this.flags},enumerable:!0,configurable:!0}),t.prototype.set=function(t,e){if(null==this.flagRegistry[t])throw new Error("Cannot set flag "+t+" as it has not been registered.");this.flags[t]=e,null!=this.flagRegistry[t].setHook&&this.flagRegistry[t].setHook(e)},t.prototype.evaluateFlag=function(t){if(null==this.flagRegistry[t])throw new Error("Cannot evaluate flag '"+t+"': no evaluation function found.");return this.flagRegistry[t].evaluationFn()},t.prototype.setFlags=function(t){this.flags=Object.assign({},t)},t.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},t.prototype.populateURLFlags=function(){var t=this;if(void 0!==this.global&&void 0!==this.global.location&&void 0!==this.global.location.search){var e,n,r=(e=this.global.location.search,n={},e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(function(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];return function(t,e,n){t[decodeURIComponent(e)]=decodeURIComponent(n||"")}(n,e[0],e[1]),e.join("=")})),n);"tfjsflags"in r&&r.tfjsflags.split(",").forEach((function(e){var n=e.split(":"),r=n[0],o=n[1];t.urlFlags[r]=function(t,e){if("true"===(e=e.toLowerCase())||"false"===e)return"true"===e;if(""+ +e===e)return+e;throw new Error("Could not parse value flag value "+e+" for flag "+t+".")}(r,o)}))}},t}();function f(){return h}var h=null,p=new Map;function d(t,e){var n=g(t,e);return p.get(n)}function v(t){for(var e=p.entries(),n=[];;){var r=e.next(),o=r.done,a=r.value;if(o)break;var i=a[0],s=a[1];i.split("_")[0]===t&&n.push(s)}return n}function m(t){var e=t.kernelName,n=t.backendName,r=g(e,n);if(p.has(r))throw new Error("The kernel '"+e+"' for backend '"+n+"' is already registered");p.set(r,t)}function g(t,e){return e+"_"+t}function y(t){for(var e=t.length,n=0,r=0;e>0;)r=Math.random()*e|0,n=t[--e],t[e]=t[r],t[r]=n}function b(t,e,n){return Math.max(t,Math.min(e,n))}function x(t){return t%2==0?t:t+1}function w(t){for(var e=0,n=0;n<t.length;n++)e+=t[n];return e}function E(t,e){if(!t)throw new Error("string"==typeof e?e:e())}function C(t,e,n){void 0===n&&(n=""),E(I(t,e),(function(){return n+" Shapes "+t+" and "+e+" must match"}))}function _(t){E(null!=t,(function(){return"The input to the tensor constructor must be a non-null value."}))}function k(t,e,n){if(void 0===e&&(e=[]),void 0===n&&(n=!1),null==e&&(e=[]),Array.isArray(t)||j(t)&&!n)for(var r=0;r<t.length;++r)k(t[r],e,n);else e.push(t);return e}function R(t){if(0===t.length)return 1;for(var e=t[0],n=1;n<t.length;n++)e*=t[n];return e}function I(t,e){if(t===e)return!0;if(null==t||null==e)return!1;if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function S(t){return t%1==0}function A(t){if(null!=Math.tanh)return Math.tanh(t);if(t===1/0)return 1;if(t===-1/0)return-1;var e=Math.exp(2*t);return(e-1)/(e+1)}function O(t){var e=Math.ceil(Math.sqrt(t));return[e,Math.ceil(t/e)]}function T(t,e){return e<=t.length?t:t+" ".repeat(e-t.length)}function D(t,e,n){return void 0===e&&(e=function(t){return 0}),new Promise((function(r,o){var a=0,i=function(){if(t())r();else{var s=e(++a);null!=n&&a>=n?o():setTimeout(i,s)}};i()}))}function N(t,e){for(var n=1,r=-1,o=0;o<t.length;++o)if(t[o]>=0)n*=t[o];else if(-1===t[o]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+o);r=o}else if(t[o]<0)throw Error("Shapes can not be < 0. Found "+t[o]+" at dim "+o);if(-1===r){if(e>0&&e!==n)throw Error("Size("+e+") must match the product of shape "+t);return t}if(0===n)throw Error("Cannot infer the missing size in ["+t+"] when there are 0 elements");if(e%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+e+" / "+n);var a=t.slice();return a[r]=e/n,a}function F(t,e){var n=e.length;return E((t=null==t?e.map((function(t,e){return e})):[].concat(t)).every((function(t){return t>=-n&&t<n})),(function(){return"All values in axis param must be in range [-"+n+", "+n+") but got axis "+t})),E(t.every((function(t){return S(t)})),(function(){return"All values in axis param must be integers but got axis "+t})),t.map((function(t){return t<0?n+t:t}))}function M(t,e){for(var n=[],r=[],o=null!=e&&Array.isArray(e)&&0===e.length,a=null==e||o?null:F(e,t).sort(),i=0,s=0;s<t.length;++s){if(null!=a){if(a[i]===s&&1!==t[s])throw new Error("Can't squeeze axis "+s+" since its dim '"+t[s]+"' is not 1");(null==a[i]||a[i]>s)&&1===t[s]&&(n.push(t[s]),r.push(s)),a[i]<=s&&i++}1!==t[s]&&(n.push(t[s]),r.push(s))}return{newShape:n,keptDims:r}}function P(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else{if("bool"!==t)throw new Error("Unknown data type "+t);n=new Uint8Array(e)}return n}function B(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else if("bool"===t)n=new Uint8Array(e);else{if("string"!==t)throw new Error("Unknown data type "+t);n=new Array(e)}return n}function L(t,e){for(var n=0;n<t.length;n++){var r=t[n];if(isNaN(r)||!isFinite(r))throw Error("A tensor of type "+e+" being uploaded contains "+r+".")}}function W(t){return"bool"===t||"complex64"===t||"float32"===t||"int32"===t||"string"===t}function U(t,e){return!("complex64"===e||"float32"===e&&"complex64"!==t||"int32"===e&&"float32"!==t&&"complex64"!==t||"bool"===e&&"bool"===t)}function j(t){return t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array}function z(t){if("float32"===t||"int32"===t)return 4;if("complex64"===t)return 8;if("bool"===t)return 1;throw new Error("Unknown dtype "+t)}function V(t){if(null==t)return 0;var e=0;return t.forEach((function(t){return e+=t.length})),e}function G(t){return"string"==typeof t||t instanceof String}function H(t){return"boolean"==typeof t}function q(t){return"number"==typeof t}function K(t){return Array.isArray(t)?K(t[0]):t instanceof Float32Array?"float32":t instanceof Int32Array||t instanceof Uint8Array?"int32":q(t)?"float32":G(t)?"string":H(t)?"bool":"float32"}function X(t){return!!(t&&t.constructor&&t.call&&t.apply)}function $(t,e){for(var n=e;n<t;++n)if(t%n==0)return n;return t}function Y(t){var e=t.length;if(e<2)return[];var n=new Array(e-1);n[e-2]=t[e-1];for(var r=e-3;r>=0;--r)n[r]=n[r+1]*t[r+1];return n}function J(t,e,n){if("string"===e)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(t)&&(t=k(t)),n&&L(t,e),function(t,e){return t instanceof Float32Array&&"float32"===e||t instanceof Int32Array&&"int32"===e||t instanceof Uint8Array&&"bool"===e}(t,e))return t;if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e){for(var r=new Uint8Array(t.length),o=0;o<r.length;++o)0!==Math.round(t[o])&&(r[o]=1);return r}throw new Error("Unknown data type "+e)}function Q(t,e){if(0===t.length)return e[0];var n=t.reduce((function(t,e){return t*e}));if(0===n)return[];if(n!==e.length)throw new Error("["+t+"] does not match the input size.");return function t(e,n,r){var o=new Array;if(1===n.length)for(var a=n[0],i=0;i<a;i++)o[i]=r[e+i];else{a=n[0];var s=n.slice(1),u=s.reduce((function(t,e){return t*e}));for(i=0;i<a;i++)o[i]=t(e+i*u,s,r)}return o}(0,t,e)}function Z(t,e){for(var n=tt(t,e),r=0;r<n.length;r++)n[r]=1;return n}function tt(t,e){if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e)return new Uint8Array(t);throw new Error("Unknown data type "+e)}function et(){return f().platform.now()}function nt(t){t.forEach((function(e){E(Number.isInteger(e)&&e>=0,(function(){return"Tensor must have a shape comprised of positive integers but got shape ["+t+"]."}))}))}function rt(t,e){return void 0===e&&(e="utf-8"),e=e||"utf-8",f().platform.encode(t,e)}function ot(t,e){return void 0===e&&(e="utf-8"),e=e||"utf-8",f().platform.decode(t,e)}Object.freeze({shuffle:y,clamp:b,nearestLargerEven:x,sum:w,randUniform:function(t,e){var n=Math.random();return e*n+(1-n)*t},distSquared:function(t,e){for(var n=0,r=0;r<t.length;r++){var o=Number(t[r])-Number(e[r]);n+=o*o}return n},assert:E,assertShapesMatch:C,assertNonNull:_,flatten:k,sizeFromShape:R,isScalarShape:function(t){return 0===t.length},arraysEqual:I,isInt:S,tanh:A,sizeToSquarishShape:O,createShuffledIndices:function(t){for(var e=new Uint32Array(t),n=0;n<t;++n)e[n]=n;return y(e),e},rightPad:T,repeatedTry:D,inferFromImplicitShape:N,parseAxisParam:F,squeezeShape:M,getTypedArrayFromDType:P,getArrayFromDType:B,checkConversionForErrors:L,isValidDtype:W,hasEncodingLoss:U,isTypedArray:j,bytesPerElement:z,bytesFromStringArray:V,isString:G,isBoolean:H,isNumber:q,inferDtype:K,isFunction:X,nearestDivisor:$,computeStrides:Y,toTypedArray:J,toNestedArray:Q,makeOnesTypedArray:Z,makeZerosTypedArray:tt,now:et,assertNonNegativeIntegerDimensions:nt,fetch:function(t,e){return f().platform.fetch(t,e)},encodeString:rt,decodeString:ot});var at=function(){function t(t,e){this.backendTimer=t,this.logger=e,null==e&&(this.logger=new it)}return t.prototype.profileKernel=function(t,e,n){var r,o=this,a=this.backendTimer.time((function(){r=n()}));return r.forEach((function(n){n.data().then((function(r){!function(t,e,n){if("float32"!==e)return!1;for(var r=0;r<t.length;r++){var o=t[r];if(isNaN(o)||!isFinite(o))return!0}}(r,n.dtype),a.then((function(a){var i="";null!=a.getExtraProfileInfo&&(i=a.getExtraProfileInfo()),o.logger.logKernelProfile(t,n,r,a.kernelMs,e,i)}))}))})),r},t}(),it=function(){function t(){}return t.prototype.logKernelProfile=function(t,e,n,r,o,a){T(r+"ms",9),T(t,25),e.rank,e.size,T(e.shape.toString(),14);for(var i in o){var s=o[i].shape,u=s.length;i+": "+u+"D "+(u>0?s:"")+" "}},t}();function st(t,e,n){return T(Array.isArray(t)?parseFloat(t[0].toFixed(7))+" + "+parseFloat(t[1].toFixed(7))+"j":G(t)?"'"+t+"'":"bool"===n?ut(t):parseFloat(t.toFixed(7)).toString(),e)}function ut(t){return 0===t?"false":"true"}function ct(t){for(var e=[],n=0;n<t.length;n+=2)e.push([t[n],t[n+1]]);return e}var lt=function(){function t(t,e,n){var r=this;if(this.dtype=e,this.shape=t.slice(),this.size=R(t),null!=n){var o=n.length;E(o===this.size,(function(){return"Length of values '"+o+"' does not match the size inferred by the shape '"+r.size+"'."}))}if("complex64"===e)throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||B(e,this.size),this.strides=Y(t)}return t.prototype.set=function(t){for(var e=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];0===n.length&&(n=[0]),E(n.length===this.rank,(function(){return"The number of provided coordinates ("+n.length+") must match the rank ("+e.rank+")"}));var o=this.locToIndex(n);this.values[o]=t},t.prototype.get=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];0===t.length&&(t=[0]);for(var n=0,r=0,o=t;r<o.length;r++){var a=o[r];if(a<0||a>=this.shape[n]){var i="Requested out of range element at "+t+". Buffer shape="+this.shape;throw new Error(i)}n++}for(var s=t[t.length-1],u=0;u<t.length-1;++u)s+=this.strides[u]*t[u];return this.values[s]},t.prototype.locToIndex=function(t){if(0===this.rank)return 0;if(1===this.rank)return t[0];for(var e=t[t.length-1],n=0;n<t.length-1;++n)e+=this.strides[n]*t[n];return e},t.prototype.indexToLoc=function(t){if(0===this.rank)return[];if(1===this.rank)return[t];for(var e=new Array(this.shape.length),n=0;n<e.length-1;++n)e[n]=Math.floor(t/this.strides[n]),t-=e[n]*this.strides[n];return e[e.length-1]=t,e},Object.defineProperty(t.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.toTensor=function(){return ft().makeTensor(this.values,this.shape,this.dtype)},t}(),ft=null,ht=null,pt=null,dt=function(){function t(t,e,n,r){this.kept=!1,this.isDisposedInternal=!1,this.shape=t.slice(),this.dtype=e||"float32",this.size=R(t),this.strides=Y(t),this.dataId=n,this.id=r,this.rankType=this.rank<5?this.rank.toString():"higher"}return t.prototype.flatten=function(){return this.throwIfDisposed(),this.as1D()},t.prototype.asScalar=function(){return this.throwIfDisposed(),E(1===this.size,(function(){return"The array must have only 1 element."})),this.reshape([])},t.prototype.as1D=function(){return this.throwIfDisposed(),this.reshape([this.size])},t.prototype.as2D=function(t,e){return this.throwIfDisposed(),this.reshape([t,e])},t.prototype.as3D=function(t,e,n){return this.throwIfDisposed(),this.reshape([t,e,n])},t.prototype.as4D=function(t,e,n,r){return this.throwIfDisposed(),this.reshape([t,e,n,r])},t.prototype.as5D=function(t,e,n,r,o){return this.throwIfDisposed(),this.reshape([t,e,n,r,o])},t.prototype.asType=function(t){return this.throwIfDisposed(),ht.cast(this,t)},Object.defineProperty(t.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),t.prototype.buffer=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,ht.buffer(this.shape,this.dtype,t)]}}))}))},t.prototype.bufferSync=function(){return ht.buffer(this.shape,this.dtype,this.dataSync())},t.prototype.array=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,Q(this.shape,t)]}}))}))},t.prototype.arraySync=function(){return Q(this.shape,this.dataSync())},t.prototype.data=function(){return u(this,void 0,void 0,(function(){var t,e;return c(this,(function(n){switch(n.label){case 0:return this.throwIfDisposed(),t=ft().read(this.dataId),"string"!==this.dtype?[3,2]:[4,t];case 1:e=n.sent();try{return[2,e.map((function(t){return ot(t)}))]}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}n.label=2;case 2:return[2,t]}}))}))},t.prototype.dataSync=function(){this.throwIfDisposed();var t=ft().readSync(this.dataId);if("string"===this.dtype)try{return t.map((function(t){return ot(t)}))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return t},t.prototype.bytes=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return this.throwIfDisposed(),[4,ft().read(this.dataId)];case 1:return t=e.sent(),"string"===this.dtype?[2,t]:[2,new Uint8Array(t.buffer)]}}))}))},t.prototype.dispose=function(){this.isDisposed||(ft().disposeTensor(this),this.isDisposedInternal=!0)},Object.defineProperty(t.prototype,"isDisposed",{get:function(){return this.isDisposedInternal},enumerable:!0,configurable:!0}),t.prototype.throwIfDisposed=function(){if(this.isDisposed)throw new Error("Tensor is disposed.")},t.prototype.toFloat=function(){return this.asType("float32")},t.prototype.toInt=function(){return this.asType("int32")},t.prototype.toBool=function(){return this.asType("bool")},t.prototype.print=function(t){return void 0===t&&(t=!1),ht.print(this,t)},t.prototype.reshape=function(t){return this.throwIfDisposed(),ht.reshape(this,t)},t.prototype.reshapeAs=function(t){return this.throwIfDisposed(),this.reshape(t.shape)},t.prototype.expandDims=function(t){return void 0===t&&(t=0),ht.expandDims(this,t)},t.prototype.cumsum=function(t,e,n){return void 0===t&&(t=0),void 0===e&&(e=!1),void 0===n&&(n=!1),ht.cumsum(this,t,e,n)},t.prototype.squeeze=function(t){return this.throwIfDisposed(),ht.squeeze(this,t)},t.prototype.clone=function(){return this.throwIfDisposed(),ht.clone(this)},t.prototype.oneHot=function(t,e,n){return this.throwIfDisposed(),ht.oneHot(this,t,e,n)},t.prototype.toString=function(t){return void 0===t&&(t=!1),function(t,e,n,r){var o=Y(e),a=function(t,e,n,r){var o=R(e),a=r[r.length-1],i=new Array(a).fill(0),s=e.length,u="complex64"===n?ct(t):t;if(s>1)for(var c=0;c<o/a;c++)for(var l=c*a,f=0;f<a;f++)i[f]=Math.max(i[f],st(u[l+f],0,n).length);return i}(t,e,n,o),i=e.length,s=function t(e,n,r,o,a,i){void 0===i&&(i=!0);var s="complex64"===r?2:1,u=n[0],c=n.length;if(0===c)return"complex64"===r?[st(ct(e)[0],0,r)]:"bool"===r?[ut(e[0])]:[e[0].toString()];if(1===c){if(u>20){var l=3*s,f=Array.from(e.slice(0,l)),h=Array.from(e.slice((u-3)*s,u*s));return"complex64"===r&&(f=ct(f),h=ct(h)),["["+f.map((function(t,e){return st(t,a[e],r)})).join(", ")+", ..., "+h.map((function(t,e){return st(t,a[u-3+e],r)})).join(", ")+"]"]}return["["+("complex64"===r?ct(e):Array.from(e)).map((function(t,e){return st(t,a[e],r)})).join(", ")+"]"]}var p=n.slice(1),d=o.slice(1),v=o[0]*s,m=[];if(u>20){for(var g=0;g<3;g++){var y=(b=g*v)+v;m.push.apply(m,t(e.slice(b,y),p,r,d,a,!1))}m.push("...");for(g=u-3;g<u;g++){y=(b=g*v)+v;m.push.apply(m,t(e.slice(b,y),p,r,d,a,g===u-1))}}else for(g=0;g<u;g++){var b;y=(b=g*v)+v;m.push.apply(m,t(e.slice(b,y),p,r,d,a,g===u-1))}var x=2===c?",":"";m[0]="["+m[0]+x;for(g=1;g<m.length-1;g++)m[g]=" "+m[g]+x;var w=",\n";for(g=2;g<c;g++)w+="\n";return m[m.length-1]=" "+m[m.length-1]+"]"+(i?"":w),m}(t,e,n,o,a),u=["Tensor"];return r&&(u.push(" dtype: "+n),u.push(" rank: "+i),u.push(" shape: ["+e+"]"),u.push(" values:")),u.push(s.map((function(t){return" "+t})).join("\n")),u.join("\n")}(this.dataSync(),this.shape,this.dtype,t)},t.prototype.tile=function(t){return this.throwIfDisposed(),ht.tile(this,t)},t.prototype.gather=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),ht.gather(this,t,e)},t.prototype.matMul=function(t,e,n){return void 0===e&&(e=!1),void 0===n&&(n=!1),this.throwIfDisposed(),ht.matMul(this,t,e,n)},t.prototype.dot=function(t){return this.throwIfDisposed(),ht.dot(this,t)},t.prototype.norm=function(t,e,n){return void 0===t&&(t="euclidean"),void 0===e&&(e=null),void 0===n&&(n=!1),this.throwIfDisposed(),ht.norm(this,t,e,n)},t.prototype.slice=function(t,e){return this.throwIfDisposed(),ht.slice(this,t,e)},t.prototype.reverse=function(t){return this.throwIfDisposed(),ht.reverse(this,t)},t.prototype.concat=function(e,n){return void 0===n&&(n=0),this.throwIfDisposed(),e instanceof t&&(e=[e]),ht.concat([this].concat(e),n)},t.prototype.split=function(t,e){return void 0===e&&(e=0),this.throwIfDisposed(),ht.split(this,t,e)},t.prototype.stack=function(t,e){return void 0===e&&(e=0),ht.stack([this,t],e)},t.prototype.unstack=function(t){return void 0===t&&(t=0),ht.unstack(this,t)},t.prototype.pad=function(t,e){return void 0===e&&(e=0),ht.pad(this,t,e)},t.prototype.batchNormalization=function(t,e,n,r,o){return void 0===n&&(n=.001),pt("tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon"),this.batchNorm(t,e,o,r,n)},t.prototype.batchNorm=function(t,e,n,r,o){return void 0===o&&(o=.001),this.throwIfDisposed(),ht.batchNorm(this,t,e,n,r,o)},t.prototype.all=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ht.all(this,t,e)},t.prototype.any=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ht.any(this,t,e)},t.prototype.logSumExp=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ht.logSumExp(this,t,e)},t.prototype.sum=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ht.sum(this,t,e)},t.prototype.prod=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ht.prod(this,t,e)},t.prototype.mean=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ht.mean(this,t,e)},t.prototype.min=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ht.min(this,t,e)},t.prototype.max=function(t,e){return void 0===t&&(t=null),void 0===e&&(e=!1),this.throwIfDisposed(),ht.max(this,t,e)},t.prototype.argMin=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),ht.argMin(this,t)},t.prototype.argMax=function(t){return void 0===t&&(t=null),this.throwIfDisposed(),ht.argMax(this,t)},t.prototype.cast=function(t){return this.throwIfDisposed(),ht.cast(this,t)},t.prototype.add=function(t){return this.throwIfDisposed(),ht.add(this,t)},t.prototype.addStrict=function(t){return this.throwIfDisposed(),ht.addStrict(this,t)},t.prototype.atan2=function(t){return this.throwIfDisposed(),ht.atan2(this,t)},t.prototype.sub=function(t){return this.throwIfDisposed(),ht.sub(this,t)},t.prototype.subStrict=function(t){return this.throwIfDisposed(),ht.subStrict(this,t)},t.prototype.pow=function(t){return this.throwIfDisposed(),ht.pow(this,t)},t.prototype.powStrict=function(t){return this.throwIfDisposed(),ht.powStrict(this,t)},t.prototype.mul=function(t){return this.throwIfDisposed(),ht.mul(this,t)},t.prototype.mulStrict=function(t){return this.throwIfDisposed(),ht.mulStrict(this,t)},t.prototype.div=function(t){return this.throwIfDisposed(),ht.div(this,t)},t.prototype.divNoNan=function(t){return this.throwIfDisposed(),ht.divNoNan(this,t)},t.prototype.floorDiv=function(t){return this.throwIfDisposed(),ht.floorDiv(this,t)},t.prototype.divStrict=function(t){return this.throwIfDisposed(),ht.divStrict(this,t)},t.prototype.minimum=function(t){return this.throwIfDisposed(),ht.minimum(this,t)},t.prototype.minimumStrict=function(t){return this.throwIfDisposed(),ht.minimumStrict(this,t)},t.prototype.maximum=function(t){return this.throwIfDisposed(),ht.maximum(this,t)},t.prototype.maximumStrict=function(t){return this.throwIfDisposed(),ht.maximumStrict(this,t)},t.prototype.mod=function(t){return this.throwIfDisposed(),ht.mod(this,t)},t.prototype.modStrict=function(t){return this.throwIfDisposed(),ht.modStrict(this,t)},t.prototype.squaredDifference=function(t){return this.throwIfDisposed(),ht.squaredDifference(this,t)},t.prototype.squaredDifferenceStrict=function(t){return this.throwIfDisposed(),ht.squaredDifferenceStrict(this,t)},t.prototype.transpose=function(t){return this.throwIfDisposed(),ht.transpose(this,t)},t.prototype.notEqual=function(t){return this.throwIfDisposed(),ht.notEqual(this,t)},t.prototype.notEqualStrict=function(t){return this.throwIfDisposed(),ht.notEqualStrict(this,t)},t.prototype.less=function(t){return this.throwIfDisposed(),ht.less(this,t)},t.prototype.lessStrict=function(t){return this.throwIfDisposed(),ht.lessStrict(this,t)},t.prototype.equal=function(t){return this.throwIfDisposed(),ht.equal(this,t)},t.prototype.equalStrict=function(t){return this.throwIfDisposed(),ht.equalStrict(this,t)},t.prototype.lessEqual=function(t){return this.throwIfDisposed(),ht.lessEqual(this,t)},t.prototype.lessEqualStrict=function(t){return this.throwIfDisposed(),ht.lessEqualStrict(this,t)},t.prototype.greater=function(t){return this.throwIfDisposed(),ht.greater(this,t)},t.prototype.greaterStrict=function(t){return this.throwIfDisposed(),ht.greaterStrict(this,t)},t.prototype.greaterEqual=function(t){return this.throwIfDisposed(),ht.greaterEqual(this,t)},t.prototype.greaterEqualStrict=function(t){return this.throwIfDisposed(),ht.greaterEqualStrict(this,t)},t.prototype.logicalAnd=function(t){return this.throwIfDisposed(),ht.logicalAnd(this,t)},t.prototype.logicalOr=function(t){return this.throwIfDisposed(),ht.logicalOr(this,t)},t.prototype.logicalNot=function(){return this.throwIfDisposed(),ht.logicalNot(this)},t.prototype.logicalXor=function(t){return this.throwIfDisposed(),ht.logicalXor(this,t)},t.prototype.where=function(t,e){return this.throwIfDisposed(),ht.where(t,this,e)},t.prototype.neg=function(){return this.throwIfDisposed(),ht.neg(this)},t.prototype.ceil=function(){return this.throwIfDisposed(),ht.ceil(this)},t.prototype.floor=function(){return this.throwIfDisposed(),ht.floor(this)},t.prototype.sign=function(){return this.throwIfDisposed(),ht.sign(this)},t.prototype.isNaN=function(){return this.throwIfDisposed(),ht.isNaN(this)},t.prototype.isInf=function(){return this.throwIfDisposed(),ht.isInf(this)},t.prototype.isFinite=function(){return this.throwIfDisposed(),ht.isFinite(this)},t.prototype.exp=function(){return this.throwIfDisposed(),ht.exp(this)},t.prototype.expm1=function(){return this.throwIfDisposed(),ht.expm1(this)},t.prototype.log=function(){return this.throwIfDisposed(),ht.log(this)},t.prototype.log1p=function(){return this.throwIfDisposed(),ht.log1p(this)},t.prototype.sqrt=function(){return this.throwIfDisposed(),ht.sqrt(this)},t.prototype.rsqrt=function(){return this.throwIfDisposed(),ht.rsqrt(this)},t.prototype.square=function(){return this.throwIfDisposed(),ht.square(this)},t.prototype.reciprocal=function(){return this.throwIfDisposed(),ht.reciprocal(this)},t.prototype.abs=function(){return this.throwIfDisposed(),ht.abs(this)},t.prototype.clipByValue=function(t,e){return this.throwIfDisposed(),ht.clipByValue(this,t,e)},t.prototype.relu=function(){return this.throwIfDisposed(),ht.relu(this)},t.prototype.relu6=function(){return this.throwIfDisposed(),ht.relu6(this)},t.prototype.elu=function(){return this.throwIfDisposed(),ht.elu(this)},t.prototype.selu=function(){return this.throwIfDisposed(),ht.selu(this)},t.prototype.leakyRelu=function(t){return void 0===t&&(t=.2),this.throwIfDisposed(),ht.leakyRelu(this,t)},t.prototype.prelu=function(t){return this.throwIfDisposed(),ht.prelu(this,t)},t.prototype.sigmoid=function(){return this.throwIfDisposed(),ht.sigmoid(this)},t.prototype.logSigmoid=function(){return this.throwIfDisposed(),ht.logSigmoid(this)},t.prototype.softplus=function(){return this.throwIfDisposed(),ht.softplus(this)},t.prototype.zerosLike=function(){return this.throwIfDisposed(),ht.zerosLike(this)},t.prototype.onesLike=function(){return this.throwIfDisposed(),ht.onesLike(this)},t.prototype.sin=function(){return this.throwIfDisposed(),ht.sin(this)},t.prototype.cos=function(){return this.throwIfDisposed(),ht.cos(this)},t.prototype.tan=function(){return this.throwIfDisposed(),ht.tan(this)},t.prototype.asin=function(){return this.throwIfDisposed(),ht.asin(this)},t.prototype.acos=function(){return this.throwIfDisposed(),ht.acos(this)},t.prototype.atan=function(){return this.throwIfDisposed(),ht.atan(this)},t.prototype.sinh=function(){return this.throwIfDisposed(),ht.sinh(this)},t.prototype.cosh=function(){return this.throwIfDisposed(),ht.cosh(this)},t.prototype.tanh=function(){return this.throwIfDisposed(),ht.tanh(this)},t.prototype.asinh=function(){return this.throwIfDisposed(),ht.asinh(this)},t.prototype.acosh=function(){return this.throwIfDisposed(),ht.acosh(this)},t.prototype.atanh=function(){return this.throwIfDisposed(),ht.atanh(this)},t.prototype.erf=function(){return this.throwIfDisposed(),ht.erf(this)},t.prototype.round=function(){return this.throwIfDisposed(),ht.round(this)},t.prototype.step=function(t){return void 0===t&&(t=0),this.throwIfDisposed(),ht.step(this,t)},t.prototype.softmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),ht.softmax(this,t)},t.prototype.logSoftmax=function(t){return void 0===t&&(t=-1),this.throwIfDisposed(),ht.logSoftmax(this,t)},t.prototype.resizeBilinear=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),ht.image.resizeBilinear(this,t,e)},t.prototype.resizeNearestNeighbor=function(t,e){return void 0===e&&(e=!1),this.throwIfDisposed(),ht.image.resizeNearestNeighbor(this,t,e)},t.prototype.conv1d=function(t,e,n,r,o,a){return void 0===r&&(r="NWC"),void 0===o&&(o=1),this.throwIfDisposed(),ht.conv1d(this,t,e,n,r,o,a)},t.prototype.conv2d=function(t,e,n,r,o,a){return void 0===r&&(r="NHWC"),void 0===o&&(o=[1,1]),this.throwIfDisposed(),ht.conv2d(this,t,e,n,r,o,a)},t.prototype.conv2dTranspose=function(t,e,n,r,o){return this.throwIfDisposed(),ht.conv2dTranspose(this,t,e,n,r,o)},t.prototype.depthwiseConv2D=function(t,e,n,r,o,a){return void 0===r&&(r="NHWC"),void 0===o&&(o=[1,1]),this.throwIfDisposed(),ht.depthwiseConv2d(this,t,e,n,r,o,a)},t.prototype.separableConv2d=function(t,e,n,r,o,a){return void 0===o&&(o=[1,1]),void 0===a&&(a="NHWC"),this.throwIfDisposed(),ht.separableConv2d(this,t,e,n,r,o,a)},t.prototype.avgPool=function(t,e,n,r){return this.throwIfDisposed(),ht.avgPool(this,t,e,n,r)},t.prototype.maxPool=function(t,e,n,r){return this.throwIfDisposed(),ht.maxPool(this,t,e,n,r)},t.prototype.localResponseNormalization=function(t,e,n,r){return void 0===t&&(t=5),void 0===e&&(e=1),void 0===n&&(n=1),void 0===r&&(r=.5),ht.localResponseNormalization(this,t,e,n,r)},t.prototype.pool=function(t,e,n,r,o){return this.throwIfDisposed(),ht.pool(this,t,e,n,r,o)},t.prototype.variable=function(t,e,n){return void 0===t&&(t=!0),this.throwIfDisposed(),ft().makeVariable(this,t,e,n)},t.prototype.unsortedSegmentSum=function(t,e){return this.throwIfDisposed(),ht.unsortedSegmentSum(this,t,e)},t.prototype.batchToSpaceND=function(t,e){return this.throwIfDisposed(),ht.batchToSpaceND(this,t,e)},t.prototype.spaceToBatchND=function(t,e){return this.throwIfDisposed(),ht.spaceToBatchND(this,t,e)},t.prototype.topk=function(t,e){return void 0===t&&(t=1),void 0===e&&(e=!0),this.throwIfDisposed(),ht.topk(this,t,e)},t.prototype.stridedSlice=function(t,e,n,r,o,a,i,s){return void 0===r&&(r=0),void 0===o&&(o=0),void 0===a&&(a=0),void 0===i&&(i=0),void 0===s&&(s=0),this.throwIfDisposed(),ht.stridedSlice(this,t,e,n,r,o,a,i,s)},t.prototype.depthToSpace=function(t,e){return this.throwIfDisposed(),ht.depthToSpace(this,t,e)},t.prototype.fft=function(){return this.throwIfDisposed(),ht.spectral.fft(this)},t.prototype.ifft=function(){return this.throwIfDisposed(),ht.spectral.ifft(this)},t.prototype.rfft=function(){return this.throwIfDisposed(),ht.spectral.rfft(this)},t.prototype.irfft=function(){return this.throwIfDisposed(),ht.spectral.irfft(this)},t}();Object.defineProperty(dt,Symbol.hasInstance,{value:function(t){return!!t&&null!=t.dataId&&null!=t.shape&&null!=t.dtype}});var vt,mt,gt,yt,bt,xt=function(t){function e(e,n,r,o){var a=t.call(this,e.shape,e.dtype,e.dataId,o)||this;return a.trainable=n,a.name=r,a}return s(e,t),e.prototype.assign=function(t){if(t.dtype!==this.dtype)throw new Error("dtype of the new value ("+t.dtype+") and previous value ("+this.dtype+") must match");if(!I(t.shape,this.shape))throw new Error("shape of the new value ("+t.shape+") and previous value ("+this.shape+") must match");ft().disposeTensor(this),this.dataId=t.dataId,ft().incRef(this,null)},e.prototype.dispose=function(){ft().disposeVariable(this),this.isDisposedInternal=!0},e}(dt);Object.defineProperty(xt,Symbol.hasInstance,{value:function(t){return t instanceof dt&&null!=t.assign&&t.assign instanceof Function}}),function(t){t.R0="R0",t.R1="R1",t.R2="R2",t.R3="R3",t.R4="R4",t.R5="R5",t.R6="R6"}(vt||(vt={})),function(t){t.float32="float32",t.int32="int32",t.bool="int32",t.complex64="complex64"}(mt||(mt={})),function(t){t.float32="float32",t.int32="int32",t.bool="bool",t.complex64="complex64"}(gt||(gt={})),function(t){t.float32="float32",t.int32="float32",t.bool="float32",t.complex64="complex64"}(yt||(yt={})),function(t){t.float32="complex64",t.int32="complex64",t.bool="complex64",t.complex64="complex64"}(bt||(bt={}));var wt={float32:yt,int32:mt,bool:gt,complex64:bt};function Et(t,e){if("string"===t||"string"===e){if("string"===t&&"string"===e)return"string";throw new Error("Can not upcast "+t+" with "+e)}return wt[t][e]}function Ct(t){return Et(t,"int32")}function _t(t,e){if(t.dtype===e.dtype)return[t,e];var n=Et(t.dtype,e.dtype);return[t.cast(n),e.cast(n)]}function kt(t,e){E(t.dtype===e.dtype,(function(){return"The dtypes of the first("+t.dtype+") and second("+e.dtype+") input must match"}))}function Rt(t){var e=[];return function t(e,n,r){if(null!=e)if(e instanceof dt)n.push(e);else if(o=e,Array.isArray(o)||"object"==typeof o){var o,a=e;for(var i in a){var s=a[i];r.has(s)||(r.add(s),t(s,n,r))}}}(t,e,new Set),e}Object.freeze({makeTypesMatch:_t,assertTypesMatch:kt,isTensorInList:function(t,e){for(var n=0;n<e.length;n++)if(e[n].id===t.id)return!0;return!1},getTensorsInContainer:Rt});var It,St=function(){function t(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}return t.prototype.dispose=function(){for(var t in this.registeredVariables)this.registeredVariables[t].dispose()},t}(),At=function(){function t(t){this.ENV=t,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new St}return t.prototype.ready=function(){return u(this,void 0,void 0,(function(){var t,e,n;return c(this,(function(r){switch(r.label){case 0:if(null!=this.pendingBackendInit)return[2,this.pendingBackendInit.then((function(){}))];if(null!=this.backendInstance)return[2];t=this.getSortedBackends(),e=0,r.label=1;case 1:return e<t.length?(n=t[e],[4,this.initializeBackend(n).success]):[3,5];case 2:return r.sent()?[4,this.setBackend(n)]:[3,4];case 3:return r.sent(),[2];case 4:return e++,[3,1];case 5:throw new Error("Could not initialize any backends, all backend initializations failed.")}}))}))},Object.defineProperty(t.prototype,"backend",{get:function(){if(null!=this.pendingBackendInit)throw new Error("Backend '"+this.backendName+"' has not yet been initialized. Make sure to await tf.ready() before calling other methods");if(null==this.backendInstance){var t=this.initializeBackendsAndReturnBest(),e=t.name;if(t.asyncInit)throw new Error("The highest priority backend '"+e+"' has not yet been initialized. Make sure to await tf.ready() before calling other methods");this.setBackend(e)}return this.backendInstance},enumerable:!0,configurable:!0}),t.prototype.backendNames=function(){return Object.keys(this.registryFactory)},t.prototype.findBackend=function(t){if(!(t in this.registry)){if(!(t in this.registryFactory))return null;if(this.initializeBackend(t).asyncInit)return null}return this.registry[t]},t.prototype.findBackendFactory=function(t){return t in this.registryFactory?this.registryFactory[t].factory:null},t.prototype.registerBackend=function(t,e,n){return void 0===n&&(n=1),!(t in this.registryFactory)&&(this.registryFactory[t]={factory:e,priority:n},!0)},t.prototype.setBackend=function(t){return u(this,void 0,void 0,(function(){var e,n,r;return c(this,(function(o){switch(o.label){case 0:if(null==this.registryFactory[t])throw new Error("Backend name '"+t+"' not found in registry");return this.backendName=t,null!=this.registry[t]?[3,4]:(this.backendInstance=null,e=this.initializeBackend(t),n=e.success,e.asyncInit?[4,n]:[3,2]);case 1:return r=o.sent(),[3,3];case 2:r=n,o.label=3;case 3:if(!r)return[2,!1];o.label=4;case 4:return this.backendInstance=this.registry[t],this.setupRegisteredKernels(),this.profiler=new at(this.backendInstance),[2,!0]}}))}))},t.prototype.setupRegisteredKernels=function(){var t=this;v(this.backendName).forEach((function(e){null!=e.setupFunc&&e.setupFunc(t.backendInstance)}))},t.prototype.disposeRegisteredKernels=function(t){var e=this;v(t).forEach((function(n){null!=n.disposeFunc&&n.disposeFunc(e.registry[t])}))},t.prototype.initializeBackend=function(t){var e=this,n=this.registryFactory[t];if(null==n)throw new Error("Cannot initialize backend "+t+", no registration found.");try{var r=n.factory();if(Promise.resolve(r)===r){var o=++this.pendingBackendInitId,a=r.then((function(n){return!(o<e.pendingBackendInitId||(e.registry[t]=n,e.pendingBackendInit=null,0))})).catch((function(t){return!(o<e.pendingBackendInitId||(e.pendingBackendInit=null,1))}));return this.pendingBackendInit=a,{success:a,asyncInit:!0}}return this.registry[t]=r,{success:!0,asyncInit:!1}}catch(e){return{success:!1,asyncInit:!1}}},t.prototype.removeBackend=function(t){if(!(t in this.registryFactory))throw new Error(t+" backend not found in registry");this.backendName===t&&null!=this.pendingBackendInit&&this.pendingBackendInitId++,t in this.registry&&(this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t]),delete this.registryFactory[t],this.backendName===t&&(this.pendingBackendInit=null,this.backendName=null,this.backendInstance=null)},t.prototype.getSortedBackends=function(){var t=this;if(0===Object.keys(this.registryFactory).length)throw new Error("No backend found in registry.");return Object.keys(this.registryFactory).sort((function(e,n){return t.registryFactory[n].priority-t.registryFactory[e].priority}))},t.prototype.initializeBackendsAndReturnBest=function(){for(var t=this.getSortedBackends(),e=0;e<t.length;e++){var n=t[e],r=this.initializeBackend(n),o=r.success,a=r.asyncInit;if(a||o)return{name:n,asyncInit:a}}throw new Error("Could not initialize any backends, all backend initializations failed.")},t.prototype.moveData=function(t,e){var n=this.state.tensorInfo.get(e),r=n.backend,o=this.readSync(e);r.disposeData(e),n.backend=t,t.move(e,o,n.shape,n.dtype),this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack[this.state.numDataMovesStack.length-1]++},t.prototype.tidy=function(t,e){var n,r=this,o=null;if(null==e){if("function"!=typeof t)throw new Error("Please provide a function to tidy()");e=t}else{if("string"!=typeof t&&!(t instanceof String))throw new Error("When calling with two arguments, the first argument to tidy() must be a string");if("function"!=typeof e)throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function");o=t}return this.scopedRun((function(){return r.startScope(o)}),(function(){return r.endScope(n)}),(function(){return n=e()}))},t.prototype.scopedRun=function(t,e,n){t();try{var r=n();return e(),r}catch(t){throw e(),t}},t.prototype.nextTensorId=function(){return t.nextTensorId++},t.prototype.nextVariableId=function(){return t.nextVariableId++},t.prototype.clone=function(t){var e=this.makeTensorFromDataId(t.dataId,t.shape,t.dtype),n={x:t};return this.addTapeNode(this.state.activeScope.name,n,[e],(function(t){return{x:function(){return t.toFloat()}}}),[]),e},t.prototype.runKernel=function(t,e,n,r,o){return this.runKernelFunc(null,e,null,t,n,r,o)},t.prototype.shouldCheckForMemLeaks=function(){return this.ENV.getBool("IS_TEST")},t.prototype.checkKernelForMemLeak=function(t,e,n){var r=this.backend.numDataIds(),o=0;n.forEach((function(t){o+="complex64"===t.dtype?3:1}));var a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-e-o-a;if(i>0)throw new Error("Backend '"+this.backendName+"' has an internal memory leak ("+i+" data ids) after running '"+t+"'")},t.prototype.runKernelFunc=function(t,e,n,r,o,a,i){var s,u=this;void 0===a&&(a=[]),void 0===i&&(i=[]);var c,l=[],f=this.isTapeOn(),h=null!=this.state.activeScope?this.state.activeScope.name:"",p=function(t){f&&(l=t.map((function(t){return u.keep(u.clone(t))})))},v=this.state.numBytes,m=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);var g,y=d(r,this.backendName);return c=null!=y?function(){var t=u.backend.numDataIds();g=y.kernelFunc({inputs:e,attrs:o,backend:u.backend});var n=Array.isArray(g)?g:[g];u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(h,t,n);var r=n.map((function(t){var e=t.dataId,n=t.shape,r=t.dtype;return u.makeTensorFromDataId(e,n,r)})),s=r.filter((function(t,e){return i[e]}));return p(a.slice().concat(s)),r}:function(){var e=u.backend.numDataIds();g=u.tidy((function(){return t(u.backend,p)}));var n=Array.isArray(g)?g:[g];return u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(h,e,n),n},this.scopedRun((function(){return u.state.kernelDepth++}),(function(){return u.state.kernelDepth--}),(function(){s=u.ENV.getBool("DEBUG")?u.profiler.profileKernel(h,e,(function(){return c()})):c()})),f&&this.addTapeNode(h,e,s,n,l),this.state.profiling&&this.state.activeProfile.kernels.push({name:h,bytesAdded:this.state.numBytes-v,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-m,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(e).map((function(t){return e[t].shape})),outputShapes:s.map((function(t){return t.shape}))}),Array.isArray(g)?s:s[0]},t.prototype.makeTensor=function(t,e,n,r){if(null==t)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;var o=t;"string"===n&&G(t[0])&&(o=t.map((function(t){return rt(t)})));var a=r.write(o,e,n),i=new dt(e,n,a,this.nextTensorId());if(this.incRef(i,r),"string"===n){var s=this.state.tensorInfo.get(a),u=V(o);this.state.numBytes+=u-s.bytes,s.bytes=u}return i},t.prototype.makeTensorFromDataId=function(t,e,n,r){var o=new dt(e,n=n||"float32",t,this.nextTensorId());return this.incRef(o,r),o},t.prototype.makeVariable=function(t,e,n,r){void 0===e&&(e=!0),n=n||this.nextVariableId().toString(),null!=r&&r!==t.dtype&&(t=t.asType(r));var o=new xt(t,e,n,this.nextTensorId());if(null!=this.state.registeredVariables[o.name])throw new Error("Variable with name "+o.name+" was already registered");return this.state.registeredVariables[o.name]=o,this.incRef(o,this.backend),o},t.prototype.incRef=function(t,e){var n=this.state.tensorInfo.has(t.dataId)?this.state.tensorInfo.get(t.dataId).refCount:0;if(this.state.numTensors++,"string"===t.dtype&&this.state.numStringTensors++,0===n){this.state.numDataBuffers++;var r=0;"complex64"!==t.dtype&&"string"!==t.dtype&&(r=t.size*z(t.dtype)),this.state.tensorInfo.set(t.dataId,{backend:e||this.backend,dtype:t.dtype,shape:t.shape,bytes:r,refCount:0}),this.state.numBytes+=r}this.state.tensorInfo.get(t.dataId).refCount++,t instanceof xt||this.track(t)},t.prototype.disposeTensor=function(t){if(this.state.tensorInfo.has(t.dataId)){this.state.numTensors--,"string"===t.dtype&&this.state.numStringTensors--;var e=this.state.tensorInfo.get(t.dataId);e.refCount<=1?("complex64"!==t.dtype&&(this.state.numBytes-=e.bytes),this.state.numDataBuffers--,e.backend.disposeData(t.dataId),this.state.tensorInfo.delete(t.dataId)):this.state.tensorInfo.get(t.dataId).refCount--}},t.prototype.disposeVariables=function(){for(var t in this.state.registeredVariables){var e=this.state.registeredVariables[t];this.disposeVariable(e)}},t.prototype.disposeVariable=function(t){this.disposeTensor(t),null!=this.state.registeredVariables[t.name]&&delete this.state.registeredVariables[t.name]},t.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.state.numTensors,t.numDataBuffers=this.state.numDataBuffers,t.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(t.unreliable=!0,null==t.reasons&&(t.reasons=[]),t.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),t},t.prototype.profile=function(t){return u(this,void 0,void 0,(function(){var e,n;return c(this,(function(r){return this.state.profiling=!0,e=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],this.state.activeProfile.result=t(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map((function(t){return t.totalBytesSnapshot}))),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-n,[2,this.state.activeProfile]}))}))},t.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},t.prototype.addTapeNode=function(t,e,n,r,o){var a=this,i={id:this.state.nextTapeNodeId++,name:t,inputs:e,outputs:n,saved:o};null!=r&&(i.gradient=function(t){return t=t.map((function(t,e){if(null==t){var r=n[e],o=tt(r.size,r.dtype);return a.makeTensor(o,r.shape,r.dtype)}return t})),r(t.length>1?t:t[0],o)}),this.state.activeTape.push(i)},t.prototype.keep=function(t){return t.kept=!0,t},t.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++},t.prototype.endTape=function(){this.state.gradientDepth--},t.prototype.startScope=function(t){var e={track:[],name:"unnamed scope",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e},t.prototype.endScope=function(t){for(var e=this,n=Rt(t),r=new Set(n.map((function(t){return t.id}))),o=0;o<this.state.activeScope.track.length;o++){var a=this.state.activeScope.track[o];a.kept||r.has(a.id)||a.dispose()}var i=this.state.scopeStack.pop();this.state.activeScope=0===this.state.scopeStack.length?null:this.state.scopeStack[this.state.scopeStack.length-1],n.forEach((function(t){t.kept||t.scopeId!==i.id||e.track(t)}))},t.prototype.gradients=function(t,e,n,r){var o=this;if(void 0===r&&(r=!1),E(e.length>0,(function(){return"gradients() received an empty list of xs."})),null!=n&&"float32"!==n.dtype)throw new Error("dy must have 'float32' dtype, but has '"+n.dtype+"'");var a=this.scopedRun((function(){return o.startTape()}),(function(){return o.endTape()}),(function(){return o.tidy("forward",t)}));E(a instanceof dt,(function(){return"The result y returned by f() must be a tensor."}));var i=function(t,e,n){for(var r={},o={},a=0;a<e.length;a++)r[e[a].id]=!0;for(a=0;a<t.length;a++){var i=(d=t[a]).inputs;for(var s in i){for(var u=i[s],c=!1,l=0;l<e.length;l++)if(r[u.id]){d.outputs.forEach((function(t){return r[t.id]=!0})),c=!0,o[d.id]=!0;break}if(c)break}}var f={};f[n.id]=!0;var h={};for(a=t.length-1;a>=0;a--)for(i=(d=t[a]).inputs,l=0;l<d.outputs.length;l++)if(f[d.outputs[l].id]){for(var s in i)f[i[s].id]=!0,h[d.id]=!0;break}var p=[];for(a=0;a<t.length;a++){var d;if(o[(d=t[a]).id]&&h[d.id]){var v={};for(var s in d.inputs){var m=d.inputs[s];r[m.id]&&(v[s]=m)}var g=Object.assign({},d);g.inputs=v,g.outputs=d.outputs,p.push(g)}}return p}(this.state.activeTape,e,a);if(!r&&0===i.length&&e.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",(function(){var t,r,s={};s[a.id]=null==n?(r=Z(R(t=a.shape),"float32"),Ot.makeTensor(r,t,"float32")):n,function(t,e,n){for(var r=function(r){var o=e[r],a=[];if(o.outputs.forEach((function(e){var n=t[e.id];null!=n?a.push(n):a.push(null)})),null==o.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+o.name+".");var i=o.gradient(a),s=function(e){if(!(e in i))throw new Error("Cannot backprop through input "+e+". Available gradients found: "+Object.keys(i)+".");var r=n((function(){return i[e]()}));if("float32"!==r.dtype)throw new Error("Error in gradient for op "+o.name+". The gradient of input "+e+" must have 'float32' dtype, but has '"+r.dtype+"'");var a=o.inputs[e];if(!I(r.shape,a.shape))throw new Error("Error in gradient for op "+o.name+". The gradient of input '"+e+"' has shape '"+r.shape+"', which does not match the shape of the input '"+a.shape+"'");if(null==t[a.id])t[a.id]=r;else{var s=t[a.id];t[a.id]=s.add(r),s.dispose()}};for(var u in o.inputs)s(u)},o=e.length-1;o>=0;o--)r(o)}(s,i,(function(t){return o.tidy(t)}));var u=e.map((function(t){return s[t.id]}));return 0===o.state.gradientDepth&&(o.state.activeTape.forEach((function(t){for(var e=0,n=t.saved;e<n.length;e++)n[e].dispose()})),o.state.activeTape=null),{value:a,grads:u}}))},t.prototype.customGrad=function(t){var e=this;return E(X(t),(function(){return"The f passed in customGrad(f) must be a function."})),function(){for(var n,r=[],o=0;o<arguments.length;o++)r[o]=arguments[o];E(r.every((function(t){return t instanceof dt})),(function(){return"The args passed in customGrad(f)(x1, x2,...) must all be tensors"}));var a={};return r.forEach((function(t,e){a[e]=t})),e.runKernelFunc((function(e,o){return E((n=t.apply(void 0,r.concat([o]))).value instanceof dt,(function(){return"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"})),E(X(n.gradFunc),(function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."})),n.value}),a,(function(t,e){var o=n.gradFunc(t,e),a=Array.isArray(o)?o:[o];E(a.length===r.length,(function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."})),E(a.every((function(t){return t instanceof dt})),(function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."}));var i={};return a.forEach((function(t,e){i[e]=function(){return t}})),i}))}},t.prototype.readSync=function(t){return this.state.tensorInfo.get(t).backend.readSync(t)},t.prototype.read=function(t){return this.state.tensorInfo.get(t).backend.read(t)},t.prototype.time=function(t){return u(this,void 0,void 0,(function(){var e,n;return c(this,(function(r){switch(r.label){case 0:return e=et(),[4,this.backend.time(t)];case 1:return(n=r.sent()).wallMs=et()-e,[2,n]}}))}))},t.prototype.track=function(t){return null!=this.state.activeScope&&(t.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(t)),t},Object.defineProperty(t.prototype,"registeredVariables",{get:function(){return this.state.registeredVariables},enumerable:!0,configurable:!0}),t.prototype.reset=function(){for(var t in this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new St,this.registry)this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null},t.nextTensorId=0,t.nextVariableId=0,t}(),Ot=function(){var e=function(){if(null==It){var e=void 0;if("undefined"!=typeof window)e=window;else if(void 0!==t)e=t;else if(void 0!==r)e=r;else{if("undefined"==typeof self)throw new Error("Could not find a global object");e=self}It=e}return It}();if(null==e._tfengine){var n=new l(e);e._tfengine=new At(n)}return function(t){h=t}(e._tfengine.ENV),ft=function(){return e._tfengine},e._tfengine}();function Tt(){return"undefined"!=typeof window&&null!=window.document||"undefined"!=typeof WorkerGlobalScope}var Dt=f();Dt.registerFlag("DEBUG",(function(){return!1}),(function(t){})),Dt.registerFlag("IS_BROWSER",(function(){return Tt()})),Dt.registerFlag("IS_NODE",(function(){return void 0!==r&&void 0!==r.versions&&void 0!==r.versions.node})),Dt.registerFlag("IS_CHROME",(function(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)})),Dt.registerFlag("PROD",(function(){return!1})),Dt.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",(function(){return Dt.getBool("DEBUG")})),Dt.registerFlag("DEPRECATION_WARNINGS_ENABLED",(function(){return!0})),Dt.registerFlag("IS_TEST",(function(){return!1}));var Nt,Ft,Mt,Pt={},Bt={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function Lt(t,e){Pt[t]=e}function Wt(t){t in Pt||(Pt[t]=function(t){if(1!==t&&2!==t)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");var e=function(t){if("undefined"!=typeof OffscreenCanvas&&2===t)return new OffscreenCanvas(300,150);if("undefined"!=typeof document)return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}(t);return e.addEventListener("webglcontextlost",(function(e){e.preventDefault(),delete Pt[t]}),!1),1===t?e.getContext("webgl",Bt)||e.getContext("experimental-webgl",Bt):e.getContext("webgl2",Bt)}(t));var e=Pt[t];return e.isContextLost()?(delete Pt[t],Wt(t)):(e.disable(e.DEPTH_TEST),e.disable(e.STENCIL_TEST),e.disable(e.BLEND),e.disable(e.DITHER),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SAMPLE_COVERAGE),e.enable(e.SCISSOR_TEST),e.enable(e.CULL_FACE),e.cullFace(e.BACK),Pt[t])}function Ut(t,e){return[e,t]}function jt(t){var e=R(t);return O(Math.ceil(e/4))}function zt(t,e){return[Math.max(1,Math.ceil(e/2)),Math.max(1,Math.ceil(t/2))]}function Vt(t,e){var n,r,o,a,i,s,u,c,l,h=t;return 2===f().getNumber("WEBGL_VERSION")?(n=h.R32F,r=h.R16F,o=h.RGBA16F,a=h.RGBA32F,i=h.RED,s=4,u=1,c=h.HALF_FLOAT,l=h.FLOAT):(n=t.RGBA,r=t.RGBA,o=t.RGBA,a=h.RGBA,i=t.RGBA,s=4,u=4,c=null!=e?e.HALF_FLOAT_OES:null,l=t.FLOAT),{internalFormatFloat:n,internalFormatHalfFloat:r,internalFormatPackedHalfFloat:o,internalFormatPackedFloat:a,textureFormatFloat:i,downloadTextureFormat:t.RGBA,downloadUnpackNumChannels:s,defaultNumChannels:u,textureTypeHalfFloat:c,textureTypeFloat:l}}function Gt(t,e,n){var r=n();return e&&function(t){var e=t.getError();if(e!==t.NO_ERROR)throw new Error("WebGL Error: "+qt(t,e))}(t),r}!function(t){t[t.DENSE=0]="DENSE",t[t.SHARED_BATCH=1]="SHARED_BATCH"}(Nt||(Nt={})),function(t){t[t.RENDER=0]="RENDER",t[t.UPLOAD=1]="UPLOAD",t[t.PIXELS=2]="PIXELS",t[t.DOWNLOAD=3]="DOWNLOAD"}(Ft||(Ft={})),function(t){t[t.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",t[t.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",t[t.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",t[t.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",t[t.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"}(Mt||(Mt={}));function Ht(t){return!!(f().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||0===t||5.96e-8<Math.abs(t)&&Math.abs(t)<65504)}function qt(t,e){switch(e){case t.NO_ERROR:return"NO_ERROR";case t.INVALID_ENUM:return"INVALID_ENUM";case t.INVALID_VALUE:return"INVALID_VALUE";case t.INVALID_OPERATION:return"INVALID_OPERATION";case t.INVALID_FRAMEBUFFER_OPERATION:return"INVALID_FRAMEBUFFER_OPERATION";case t.OUT_OF_MEMORY:return"OUT_OF_MEMORY";case t.CONTEXT_LOST_WEBGL:return"CONTEXT_LOST_WEBGL";default:return"Unknown error code "+e}}function Kt(t,e,n){return me(t,e,(function(){return t.getExtension(n)}),'Extension "'+n+'" not supported on this browser.')}function Xt(t,e,n){var r=me(t,e,(function(){return t.createShader(t.VERTEX_SHADER)}),"Unable to create vertex WebGLShader.");if(Gt(t,e,(function(){return t.shaderSource(r,n)})),Gt(t,e,(function(){return t.compileShader(r)})),!1===t.getShaderParameter(r,t.COMPILE_STATUS))throw new Error("Failed to compile vertex shader.");return r}function $t(t,e,n){var r=me(t,e,(function(){return t.createShader(t.FRAGMENT_SHADER)}),"Unable to create fragment WebGLShader.");if(Gt(t,e,(function(){return t.shaderSource(r,n)})),Gt(t,e,(function(){return t.compileShader(r)})),!1===t.getShaderParameter(r,t.COMPILE_STATUS))throw function(t,e){var n=Qt.exec(e);if(null!=n){for(var r=+n[1],o=t.split("\n"),a=o.length.toString().length+2,i=o.map((function(t,e){return T((e+1).toString(),a)+t})),s=0,u=0;u<i.length;u++)s=Math.max(i[u].length,s);i.slice(0,r-1),i.slice(r-1,r),i.slice(r)}}(n,t.getShaderInfoLog(r)),new Error("Failed to compile fragment shader.");return r}var Yt,Jt,Qt=/ERROR: [0-9]+:([0-9]+):/g;function Zt(t,e){return me(t,e,(function(){return t.createProgram()}),"Unable to create WebGLProgram.")}function te(t,e,n){if(Gt(t,e,(function(){return t.linkProgram(n)})),!1===t.getProgramParameter(n,t.LINK_STATUS))throw new Error("Failed to link vertex and fragment shaders.")}function ee(t,e,n){if(Gt(t,e,(function(){return t.validateProgram(n)})),!1===t.getProgramParameter(n,t.VALIDATE_STATUS))throw new Error("Shader program validation failed.")}function ne(t,e,n){var r=me(t,e,(function(){return t.createBuffer()}),"Unable to create WebGLBuffer");return Gt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,r)})),Gt(t,e,(function(){return t.bufferData(t.ARRAY_BUFFER,n,t.STATIC_DRAW)})),r}function re(t,e,n){var r=me(t,e,(function(){return t.createBuffer()}),"Unable to create WebGLBuffer");return Gt(t,e,(function(){return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,r)})),Gt(t,e,(function(){return t.bufferData(t.ELEMENT_ARRAY_BUFFER,n,t.STATIC_DRAW)})),r}function oe(t,e){return me(t,e,(function(){return t.createTexture()}),"Unable to create WebGLTexture.")}function ae(t,e){var n=f().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(t<=0||e<=0){var r="["+t+"x"+e+"]";throw new Error("Requested texture size "+r+" is invalid.")}if(t>n||e>n)throw r="["+t+"x"+e+"]",new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU ["+n+"x"+n+"].")}function ie(t,e){return me(t,e,(function(){return t.createFramebuffer()}),"Unable to create WebGLFramebuffer.")}function se(t,e,n,r,o,a,i,s){var u=t.getAttribLocation(n,r);return-1!==u&&(Gt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,o)})),Gt(t,e,(function(){return t.vertexAttribPointer(u,a,t.FLOAT,!1,i,s)})),Gt(t,e,(function(){return t.enableVertexAttribArray(u)})),!0)}function ue(t,e,n,r){ge(t,r),Gt(t,e,(function(){return t.activeTexture(t.TEXTURE0+r)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)}))}function ce(t,e,n,r){return me(t,e,(function(){return t.getUniformLocation(n,r)}),'uniform "'+r+'" not present in program.')}function le(t,e,n){return t.getUniformLocation(e,n)}function fe(t,e,n,r,o,a){Gt(t,e,(function(){return ue(t,e,r,a)})),Gt(t,e,(function(){return t.uniform1i(o,a)}))}function he(t,e,n,r){Gt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,r)})),Gt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0)}))}function pe(t,e,n){Gt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,n)})),Gt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,null,0)}))}function de(t){var e=t.checkFramebufferStatus(t.FRAMEBUFFER);if(e!==t.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+ve(t,e))}function ve(t,e){switch(e){case t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case t.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+e}}function me(t,e,n,r){var o=Gt(t,e,(function(){return n()}));if(null==o)throw new Error(r);return o}function ge(t,e){var n=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=e+t.TEXTURE0;if(r<t.TEXTURE0||r>n)throw new Error("textureUnit must be in [gl.TEXTURE0, gl.TEXTURE"+n+"].")}function ye(t,e){return void 0===e&&(e=2),R(t.slice(0,t.length-e))}function be(t){if(0===t.length)throw Error("Cannot get rows and columns of an empty shape array.");return[t.length>1?t[t.length-2]:1,t[t.length-1]]}function xe(t){var e=[1,1,1];return 0===t.length||1===t.length&&1===t[0]||(e=[ye(t)].concat(be(t))),e}function we(t,e){var n;void 0===e&&(e=!1);var r=f().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e&&(r*=2,1===(t=t.map((function(e,n){return n>=t.length-2?x(t[n]):t[n]}))).length&&(t=[2,t[0]])),2!==t.length){var o=M(t);t=o.newShape}var a=R(t);if(t.length<=1&&a<=r)return[1,a];if(2===t.length&&t[0]<=r&&t[1]<=r)return t;if(3===t.length&&t[0]*t[1]<=r&&t[2]<=r)return[t[0]*t[1],t[2]];if(3===t.length&&t[0]<=r&&t[1]*t[2]<=r)return[t[0],t[1]*t[2]];if(4===t.length&&t[0]*t[1]*t[2]<=r&&t[3]<=r)return[t[0]*t[1]*t[2],t[3]];if(4===t.length&&t[0]<=r&&t[1]*t[2]*t[3]<=r)return[t[0],t[1]*t[2]*t[3]];if(e){var i=ye(t),s=2,u=2;return t.length&&(s=(n=be(t))[0],u=n[1]),O(a=i*(s/2)*(u/2)).map((function(t){return 2*t}))}return O(a)}function Ee(t){return t%2==0}function Ce(t,e){if(I(t=t.slice(-2),e=e.slice(-2)))return!0;if(!t.length||!e.length)return!0;if(0===t[0]||0===t[1]||0===e[0]||0===e[1])return!0;if(t.length!==e.length){var n=t.slice(-1)[0],r=e.slice(-1)[0];if(n===r)return!0;if(Ee(n)&&Ee(r)&&(1===t[0]||1===e[0]))return!0}return t[1]===e[1]&&Ee(t[0])&&Ee(e[0])}function _e(t){if(null==Yt){var e=Wt(t);Yt=e.getParameter(e.MAX_TEXTURE_SIZE)}return Yt}function ke(t){if(null==Jt){var e=Wt(t);Jt=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,Jt)}function Re(t){if(0===t)return 0;var e=Wt(t);return Ie(e,"EXT_disjoint_timer_query_webgl2")&&2===t?2:Ie(e,"EXT_disjoint_timer_query")?1:0}function Ie(t,e){return null!=t.getExtension(e)}function Se(t){try{if(null!=Wt(t))return!0}catch(t){return!1}return!1}function Ae(t){if(0===t)return!1;var e=Wt(t);if(1===t){if(!Ie(e,"OES_texture_float"))return!1}else if(!Ie(e,"EXT_color_buffer_float"))return!1;return Te(e)}function Oe(t){if(0===t)return!1;var e=Wt(t);if(1!==t){if(Ie(e,"EXT_color_buffer_float"))return Te(e);if(Ie(e,"EXT_color_buffer_half_float")){var n=e.getExtension("EXT_color_buffer_half_float");return function(t,e){var n=Vt(t,e),r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r),t.texImage2D(t.TEXTURE_2D,0,n.internalFormatHalfFloat,1,1,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);var o=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,o),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);var a=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(r),t.deleteFramebuffer(o),a}(e,n)}return!1}return!!Ie(e,"OES_texture_float")&&!!Ie(e,"WEBGL_color_buffer_float")&&Te(e)}function Te(t){var e=Vt(t),n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.texImage2D(t.TEXTURE_2D,0,e.internalFormatFloat,1,1,0,e.textureFormatFloat,e.textureTypeFloat,null);var r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0);var o=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(n),t.deleteFramebuffer(r),o}function De(t){return 2===t&&null!=Wt(t).fenceSync}var Ne=Object.freeze({callAndCheck:Gt,canBeRepresented:Ht,getWebGLErrorMessage:qt,getExtensionOrThrow:Kt,createVertexShader:Xt,createFragmentShader:$t,createProgram:Zt,linkProgram:te,validateProgram:ee,createStaticVertexBuffer:ne,createStaticIndexBuffer:re,getNumChannels:function(){return 2===f().getNumber("WEBGL_VERSION")?1:4},createTexture:oe,validateTextureSize:ae,createFramebuffer:ie,bindVertexBufferToProgramAttribute:se,bindTextureUnit:ue,unbindTextureUnit:function(t,e,n){ge(t,n),Gt(t,e,(function(){return t.activeTexture(t.TEXTURE0+n)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))},getProgramUniformLocationOrThrow:ce,getProgramUniformLocation:le,bindTextureToProgramUniformSampler:fe,bindCanvasToFramebuffer:function(t,e){Gt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,null)})),Gt(t,e,(function(){return t.viewport(0,0,t.canvas.width,t.canvas.height)})),Gt(t,e,(function(){return t.scissor(0,0,t.canvas.width,t.canvas.height)}))},bindColorTextureToFramebuffer:he,unbindColorTextureFromFramebuffer:pe,validateFramebuffer:de,getFramebufferErrorMessage:ve,getBatchDim:ye,getRowsCols:be,getShapeAs3D:xe,getTextureShapeFromLogicalShape:we,isReshapeFree:Ce,getWebGLMaxTextureSize:_e,resetMaxTextureSize:function(){Yt=null},resetMaxTexturesInShader:function(){Jt=null},getMaxTexturesInShader:ke,getWebGLDisjointQueryTimerVersion:Re,hasExtension:Ie,isWebGLVersionEnabled:Se,isCapableOfRenderingToFloatTexture:Ae,isDownloadFloatTextureEnabled:Oe,isWebGLFenceEnabled:De}),Fe=f();function Me(t){f().getBool("DEPRECATION_WARNINGS_ENABLED")}function Pe(t,e){return Ot.tidy(t,e)}function Be(t){Rt(t).forEach((function(t){return t.dispose()}))}function Le(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];f().getBool("IS_TEST")}function We(t,e){var n=t;if(j(t))return"string"===e?[]:[t.length];if(!Array.isArray(t))return[];for(var r=[];Array.isArray(n)||j(n)&&"string"!==e;)r.push(n.length),n=n[0];return Array.isArray(t)&&f().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&function t(e,n,r){if(r=r||[],Array.isArray(e)||j(e)){E(n.length>0,(function(){return"Element arr["+r.join("][")+"] should be a primitive, but is an array of "+e.length+" elements"})),E(e.length===n[0],(function(){return"Element arr["+r.join("][")+"] should have "+n[0]+" elements, but has "+e.length+" elements"}));for(var o=n.slice(1),a=0;a<e.length;++a)t(e[a],o,r.concat(a))}else E(0===n.length,(function(){return"Element arr["+r.join("][")+"] is a primitive, but should be an array/TypedArray of "+n[0]+" elements"}))}(t,r,[]),r}function Ue(t,e,n,r){if(null!=t&&("numeric"!==t&&t!==e||"numeric"===t&&"string"===e))throw new Error("Argument '"+n+"' passed to '"+r+"' must be "+t+" tensor, but got "+e+" tensor")}function je(t,e,n,r){if(void 0===r&&(r="numeric"),t instanceof dt)return Ue(r,t.dtype,e,n),t;var o=K(t);if("string"!==o&&["bool","int32","float32"].indexOf(r)>=0&&(o=r),Ue(r,o,e,n),null==t||!j(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t){var a=null==t?"null":t.constructor.name;throw new Error("Argument '"+e+"' passed to '"+n+"' must be a Tensor or TensorLike, but got '"+a+"'")}var i=We(t,o);j(t)||Array.isArray(t)||(t=[t]);var s="string"!==o?J(t,o,f().getBool("DEBUG")):k(t,[],!0);return Ot.makeTensor(s,i,o)}function ze(t,e,n,r){if(void 0===r&&(r="numeric"),!Array.isArray(t))throw new Error("Argument "+e+" passed to "+n+" must be a `Tensor[]` or `TensorLike[]`");return t.map((function(t,r){return je(t,e+"["+r+"]",n)}),r)}function Ve(t,e){for(var n=0;n<t.length;++n)if(t[t.length-n-1]!==e-1-n)return!1;return!0}function Ge(t,e,n){for(var r=t.length+e.length,o=[],a=0,i=0,s=0;s<r;s++)-1===n.indexOf(s)?o.push(t[a++]):o.push(e[i++]);return o}function He(t,e){for(var n=[],r=t.length,o=0;o<r;o++)-1===e.indexOf(o)&&n.push(t[o]);return[n,e.map((function(e){return t[e]}))]}function qe(t,e){return Ge(t,e.map((function(t){return 1})),e)}function Ke(t,e,n){E(Ve(e,n),(function(){return t+" supports only inner-most axes for now. Got axes "+e+" and rank-"+n+" input."}))}function Xe(t,e){if(Ve(t,e))return null;for(var n=[],r=0;r<e;++r)-1===t.indexOf(r)&&n.push(r);return t.forEach((function(t){return n.push(t)})),n}function $e(t){return t.map((function(t,e){return[e,t]})).sort((function(t,e){return t[1]-e[1]})).map((function(t){return t[0]}))}function Ye(t,e){for(var n=[],r=e-t;r<e;++r)n.push(r);return n}function Je(t,e){var n=t[0].length;t.forEach((function(t,e){E(t.length===n,(function(){return"Error in concat"+n+"D: rank of tensors["+e+"] must be the same as the rank of the rest ("+n+")"}))})),E(e>=0&&e<n,(function(){return"Error in concat"+n+"D: axis must be between 0 and "+(n-1)+"."}));var r=t[0];t.forEach((function(t,o){for(var a=0;a<n;a++)E(a===e||t[a]===r[a],(function(){return"Error in concat"+n+"D: Shape of tensors["+o+"] ("+t+") does not match the shape of the rest ("+r+") along the non-concatenated axis "+o+"."}))}))}function Qe(t,e){for(var n=t[0].slice(),r=1;r<t.length;r++)n[e]+=t[r][e];return n}function Ze(t){var e=Object.keys(t);if(1!==e.length)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+e.length+" keys.");var n=e[0],r=t[n];n.endsWith("_")&&(n=n.substring(0,n.length-1));var o=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];Ot.startScope(n);try{var o=r.apply(void 0,t);return Ot.endScope(o),o}catch(t){throw Ot.endScope(null),t}};return Object.defineProperty(o,"name",{value:n,configurable:!0}),o}Fe.registerFlag("HAS_WEBGL",(function(){return Fe.getNumber("WEBGL_VERSION")>0})),Fe.registerFlag("WEBGL_VERSION",(function(){return Se(2)?2:Se(1)?1:0})),Fe.registerFlag("WEBGL_BUFFER_SUPPORTED",(function(){return 2===Fe.get("WEBGL_VERSION")})),Fe.registerFlag("WEBGL_CPU_FORWARD",(function(){return!0})),Fe.registerFlag("WEBGL_FORCE_F16_TEXTURES",(function(){return!1})),Fe.registerFlag("WEBGL_PACK",(function(){return Fe.getBool("HAS_WEBGL")})),Fe.registerFlag("WEBGL_PACK_NORMALIZATION",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_CLIP",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_DEPTHWISECONV",(function(){return!1})),Fe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_PACK_REDUCE",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_LAZILY_UNPACK",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_CONV_IM2COL",(function(){return Fe.getBool("WEBGL_PACK")})),Fe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",(function(){return _e(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",(function(){return ke(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",(function(){var t=Fe.getNumber("WEBGL_VERSION");return 0===t?0:Re(t)})),Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",(function(){return Fe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&(t=navigator.userAgent||navigator.vendor||window.opera,!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))));var t})),Fe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",(function(){return Ae(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",(function(){return!Fe.getBool("WEBGL_FORCE_F16_TEXTURES")&&Fe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")})),Fe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",(function(){return Oe(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_FENCE_API_ENABLED",(function(){return De(Fe.getNumber("WEBGL_VERSION"))})),Fe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",(function(){return Fe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0})),pt=Me;var tn=Ze({complex_:function(t,e){var n=je(t,"real","complex"),r=je(e,"imag","complex");return C(n.shape,r.shape,"real and imag shapes, "+n.shape+" and "+r.shape+", must match in call to tf.complex()."),Ot.runKernelFunc((function(t){return t.complex(n,r)}),{$real:n,$imag:r})}}),en=Ze({real_:function(t){var e=je(t,"input","real");return Ot.runKernelFunc((function(t){return t.real(e)}),{$input:e})}}),nn=Ze({imag_:function(t){var e=je(t,"input","imag");return Ot.runKernelFunc((function(t){return t.imag(e)}),{$input:e})}});function rn(t,e,n){return on(t,e,We(t,n),n)}function on(t,e,n,r){if(null==r&&(r=K(t)),"complex64"===r)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!j(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t)throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(null!=e){nt(e);var o=R(e),a=R(n);E(o===a,(function(){return"Based on the provided shape, ["+e+"], the tensor should have "+o+" values but has "+a}));for(var i=0;i<n.length;++i){var s=n[i],u=i!==n.length-1||s!==R(e.slice(i));E(n[i]===e[i]||!u,(function(){return"Error creating a new Tensor. Inferred shape ("+n+") does not match the provided shape ("+e+"). "}))}}return j(t)||Array.isArray(t)||(t=[t]),e=e||n,t="string"!==r?J(t,r,f().getBool("DEBUG")):k(t,[],!0),Ot.makeTensor(t,e,r)}function an(t,e){if((j(t)&&"string"!==e||Array.isArray(t))&&"complex64"!==e)throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if("string"===e&&j(t)&&!(t instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return on(t,[],[],e)}function sn(t,e){_(t);var n=We(t,e);if(1!==n.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return on(t,null,n,e)}function un(t,e,n){if(_(t),null!=e&&2!==e.length)throw new Error("tensor2d() requires shape to have two numbers");var r=We(t,n);if(2!==r.length&&1!==r.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return on(t,e,r,n)}function cn(t,e,n){if(_(t),null!=e&&3!==e.length)throw new Error("tensor3d() requires shape to have three numbers");var r=We(t,n);if(3!==r.length&&1!==r.length)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return on(t,e,r,n)}function ln(t,e,n){if(_(t),null!=e&&4!==e.length)throw new Error("tensor4d() requires shape to have four numbers");var r=We(t,n);if(4!==r.length&&1!==r.length)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return on(t,e,r,n)}function fn(t,e){if(void 0===e&&(e="float32"),"complex64"===e){var n=fn(t,"float32"),r=hn(t,"float32");return tn(n,r)}var o=Z(R(t),e);return Ot.makeTensor(o,t,e)}function hn(t,e){if(void 0===e&&(e="float32"),"complex64"===e){var n=hn(t,"float32"),r=hn(t,"float32");return tn(n,r)}var o=tt(R(t),e);return Ot.makeTensor(o,t,e)}function pn(t,e,n){return Ot.runKernelFunc((function(r){return r.fill(t,e,n)}),{})}function dn(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r="float32"),0===n)throw new Error("Cannot have a step of zero");if(t===e||t<e&&n<0||e<t&&n>1)return hn([0],r);var o=tt(Math.abs(Math.ceil((e-t)/n)),r);e<t&&1===n&&(n=-1),o[0]=t;for(var a=1;a<o.length;a++)o[a]=o[a-1]+n;return sn(o,r)}var vn=Ze({onesLike_:function(t){var e=je(t,"x","onesLike");if("complex64"===e.dtype){var n=vn(en(e)),r=mn(nn(e));return tn(n,r)}return Ot.runKernelFunc((function(t){return t.onesLike(e)}),{$x:e},(function(t,e){return{$x:function(){return mn(t)}}}))}}),mn=Ze({zerosLike_:function(t){var e=je(t,"x","zerosLike");return Ot.runKernelFunc((function(t){return t.zerosLike(e)}),{$x:e},(function(t,e){return{$x:function(){return mn(t)}}}))}}),gn=Ze({concat_:function(t,e){void 0===e&&(e=0),E(t.length>=1,(function(){return"Pass at least one tensor to concat"}));var n=ze(t,"tensors","concat");"complex64"===n[0].dtype&&n.forEach((function(t){if("complex64"!==t.dtype)throw new Error("Cannot concatenate complex64 tensors with a tensor\n with dtype "+t.dtype+". ")})),e=F(e,n[0].shape)[0];var r=Qe(n.map((function(t){return t.shape})),e);if(0===R(r))return rn([],r);if(1===(n=n.filter((function(t){return t.size>0}))).length)return n[0];var o=n.map((function(t){return t.shape}));Je(o,e);var a=n,i={axis:e};return Ot.runKernelFunc((function(t){return t.concat(n,e)}),a,(function(t){var n=o.map((function(t){return t[e]}));return En(t,n,e).map((function(t){return function(){return t}}))}),"Concat",i)}}),yn=Ze({concat1d_:function(t){return gn(t,0)}}),bn=Ze({concat2d_:function(t,e){return gn(t,e)}}),xn=Ze({concat3d_:function(t,e){return gn(t,e)}}),wn=Ze({concat4d_:function(t,e){return gn(t,e)}}),En=Ze({split_:function(t,e,n){void 0===n&&(n=0);var r,o=je(t,"x","split");return n=F(n,o.shape)[0],"number"==typeof e?(E(o.shape[n]%e==0,(function(){return"Number of splits must evenly divide the axis."})),r=new Array(e).fill(o.shape[n]/e)):(E(o.shape[n]===e.reduce((function(t,e){return t+e})),(function(){return"The sum of sizes must match the size of the axis dimension."})),r=e),Ot.runKernelFunc((function(t){return t.split(o,r,n)}),{$x:o},(function(t){return{$x:function(){return gn(t,n)}}}))}});function Cn(t,e){return t(e={exports:{}},e.exports),e.exports}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t||"undefined"!=typeof self&&self;var _n=Cn((function(t){!function(t,e,n){function r(t){var e,n=this,r=(e=4022871197,function(t){t=t.toString();for(var n=0;n<t.length;n++){var r=.02519603282416938*(e+=t.charCodeAt(n));r-=e=r>>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e)}return 2.3283064365386963e-10*(e>>>0)});n.next=function(){var t=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=t-(n.c=0|t)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(t),n.s0<0&&(n.s0+=1),n.s1-=r(t),n.s1<0&&(n.s1+=1),n.s2-=r(t),n.s2<0&&(n.s2+=1),r=null}function o(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function a(t,e){var n=new r(t),a=e&&e.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+11102230246251565e-32*(2097152*i()|0)},i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:this.alea=a}(0,t)})),kn=Cn((function(t){!function(t,e,n){function r(t){var e=this,n="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:this.xor128=a}(0,t)})),Rn=Cn((function(t){!function(t,e,n){function r(t){var e=this,n="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,e.v=0,t===(0|t)?e.x=t:n+=t;for(var r=0;r<n.length+64;r++)e.x^=0|n.charCodeAt(r),r==n.length&&(e.d=e.x<<10^e.x>>>4),e.next()}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:this.xorwow=a}(0,t)})),In=Cn((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.x,o=e.i;return t=r[o],n=(t^=t>>>7)^t<<24,n^=(t=r[o+1&7])^t>>>10,n^=(t=r[o+3&7])^t>>>3,n^=(t=r[o+4&7])^t<<7,t=r[o+7&7],n^=(t^=t<<13)^t<<9,r[o]=n,e.i=o+1&7,n},function(t,e){var n,r=[];if(e===(0|e))r[0]=e;else for(e=""+e,n=0;n<e.length;++n)r[7&n]=r[7&n]<<15^e.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&0===r[n];++n);for(8==n?r[7]=-1:r[n],t.x=r,t.i=0,n=256;n>0;--n)t.next()}(e,t)}function o(t,e){return e.x=t.x.slice(),e.i=t.i,e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.x&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:this.xorshift7=a}(0,t)})),Sn=Cn((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.w,o=e.X,a=e.i;return e.w=r=r+1640531527|0,n=o[a+34&127],t=o[a=a+1&127],n^=n<<13,t^=t<<17,n^=n>>>15,t^=t>>>12,n=o[a]=n^t,e.i=a,n+(r^r>>>16)|0},function(t,e){var n,r,o,a,i,s=[],u=128;for(e===(0|e)?(r=e,e=null):(e+="\0",r=0,u=Math.max(u,e.length)),o=0,a=-32;a<u;++a)e&&(r^=e.charCodeAt((a+32)%e.length)),0===a&&(i=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,a>=0&&(i=i+1640531527|0,o=0==(n=s[127&a]^=r+i)?o+1:0);for(o>=128&&(s[127&(e&&e.length||0)]=-1),o=127,a=512;a>0;--a)r=s[o+34&127],n=s[o=o+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[o]=r^n;t.w=i,t.X=s,t.i=o}(e,t)}function o(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.X&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:this.xor4096=a}(0,t)})),An=Cn((function(t){!function(t,e,n){function r(t){var e=this,n="";e.next=function(){var t=e.b,n=e.c,r=e.d,o=e.a;return t=t<<25^t>>>7^n,n=n-r|0,r=r<<24^r>>>8^o,o=o-t|0,e.b=t=t<<20^t>>>12^n,e.c=n=n-r|0,e.d=r<<16^n>>>16^o,e.a=o-t|0},e.a=0,e.b=0,e.c=-1640531527,e.d=1367130551,t===Math.floor(t)?(e.a=t/4294967296|0,e.b=0|t):n+=t;for(var r=0;r<n.length+20;r++)e.b^=0|n.charCodeAt(r),e.next()}function o(t,e){return e.a=t.a,e.b=t.b,e.c=t.c,e.d=t.d,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===t);return t},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:this.tychei=a}(0,t)})),On=Cn((function(t){!function(e,r){var o,a=this,i=256,s="random",u=r.pow(i,6),c=r.pow(2,52),l=2*c,f=255;function h(t,n,f){var h=[],g=v(function t(e,n){var r,o=[],a=typeof e;if(n&&"object"==a)for(r in e)try{o.push(t(e[r],n-1))}catch(t){}return o.length?o:"string"==a?e:e+"\0"}((n=1==n?{entropy:!0}:n||{}).entropy?[t,m(e)]:null==t?function(){try{var t;return o&&(t=o.randomBytes)?t=t(i):(t=new Uint8Array(i),(a.crypto||a.msCrypto).getRandomValues(t)),m(t)}catch(t){var n=a.navigator,r=n&&n.plugins;return[+new Date,a,r,a.screen,m(e)]}}():t,3),h),y=new p(h),b=function(){for(var t=y.g(6),e=u,n=0;t<c;)t=(t+n)*i,e*=i,n=y.g(1);for(;t>=l;)t/=2,e/=2,n>>>=1;return(t+n)/e};return b.int32=function(){return 0|y.g(4)},b.quick=function(){return y.g(4)/4294967296},b.double=b,v(m(y.S),e),(n.pass||f||function(t,e,n,o){return o&&(o.S&&d(o,y),t.state=function(){return d(y,{})}),n?(r[s]=t,e):t})(b,g,"global"in n?n.global:this==r,n.state)}function p(t){var e,n=t.length,r=this,o=0,a=r.i=r.j=0,s=r.S=[];for(n||(t=[n++]);o<i;)s[o]=o++;for(o=0;o<i;o++)s[o]=s[a=f&a+t[o%n]+(e=s[o])],s[a]=e;(r.g=function(t){for(var e,n=0,o=r.i,a=r.j,s=r.S;t--;)e=s[o=f&o+1],n=n*i+s[f&(s[o]=s[a=f&a+e])+(s[a]=e)];return r.i=o,r.j=a,n})(i)}function d(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function v(t,e){for(var n,r=t+"",o=0;o<r.length;)e[f&o]=f&(n^=19*e[f&o])+r.charCodeAt(o++);return m(e)}function m(t){return String.fromCharCode.apply(0,t)}if(r.seedrandom=h,v(r.random(),e),t.exports){t.exports=h;try{o=n(67)}catch(t){}}}([],Math)}));On.alea=_n,On.xor128=kn,On.xorwow=Rn,On.xorshift7=In,On.xor4096=Sn,On.tychei=An;var Tn=On.alea,Dn=function(){function t(t,e,n,r,o){this.mean=t,this.stdDev=e,this.dtype=n,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);var a=o||Math.random();this.random=Tn(a.toString())}return t.prototype.nextValue=function(){if(!isNaN(this.nextVal)){var t=this.nextVal;return this.nextVal=NaN,t}for(var e,n,r=!1;!r;){var o=void 0,a=void 0,i=void 0;do{i=(o=2*this.random()-1)*o+(a=2*this.random()-1)*a}while(i>=1||0===i);var s=Math.sqrt(-2*Math.log(i)/i);e=this.mean+this.stdDev*o*s,n=this.mean+this.stdDev*a*s,this.truncated&&!this.isValidTruncated(e)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(e)},t.prototype.convertValue=function(t){return null==this.dtype||"float32"===this.dtype?t:Math.round(t)},t.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},t}(),Nn=function(){function t(t,e,n,r){this.alpha=t,this.beta=1/e,this.dtype=n;var o=r||Math.random();this.randu=Tn(o.toString()),this.randn=new Dn(0,1,n,!1,this.randu()),this.d=t<1?t+2/3:t-1/3,this.c=1/Math.sqrt(9*this.d)}return t.prototype.nextValue=function(){for(var t,e,n,r,o,a;;){do{r=this.randn.nextValue(),a=1+this.c*r}while(a<=0);if(a*=a*a,e=1-.331*(t=r*r)*t,n=.5*t+this.d*(1-a+Math.log(a)),(o=this.randu())<e||Math.log(o)<n)break}return a=1/this.beta*this.d*a,this.alpha<1&&(a*=Math.pow(this.randu(),1/this.alpha)),this.convertValue(a)},t.prototype.convertValue=function(t){return"float32"===this.dtype?t:Math.round(t)},t}(),Fn=function(){function t(t,e,n,r){var o=this;if(void 0===t&&(t=0),void 0===e&&(e=1),this.canReturnFloat=function(){return null==o.dtype||"float32"===o.dtype},this.min=t,this.range=e-t,this.dtype=n,null==r&&(r=Math.random()),"number"==typeof r&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error("The difference between "+t+" - "+e+" <= 1 and dtype is not float");this.random=Tn(r)}return t.prototype.convertValue=function(t){return this.canReturnFloat()?t:Math.round(t)},t.prototype.nextValue=function(){return this.convertValue(this.min+this.range*this.random())},t}();function Mn(t,e,n){return void 0===e&&(e="float32"),e=e||"float32",nt(t),new lt(t,e,n)}var Pn=Ze({batchToSpaceND_:function(t,e,n){var r=je(t,"x","batchToSpaceND"),o=e.reduce((function(t,e){return t*e}));return E(r.rank>=1+e.length,(function(){return"input rank is "+r.rank+" but should be > than blockShape.length "+e.length})),E(n.length===e.length,(function(){return"crops.length is "+n.length+" but should be equal to blockShape.length "+e.length})),E(r.shape[0]%o==0,(function(){return"input tensor batch is "+r.shape[0]+" but is not divisible by the product of the elements of blockShape "+e.join(" * ")+" === "+o})),Ot.runKernelFunc((function(t){return t.batchToSpaceND(r,e,n)}),{$x:r},(function(t){return{$x:function(){return t.spaceToBatchND(e,n)}}}))}}),Bn=Ze({broadcastTo_:function(t,e){var n=je(t,"broadcastTo","x"),r=n.shape;if(e.some((function(t){return!(t>0)||t%1!=0})))throw new Error("broadcastTo(): Invalid broadcast shape ["+e+"].");if(e.length<n.rank)throw new Error("broadcastTo(): shape.length="+e.length+" < input.rank="+n.rank+".");if(e.length>n.rank){for(var o=n.shape.slice();o.length<e.length;)o.unshift(1);n=n.reshape(o)}for(var a=Array.from(e),i=e.length-1;i>=0;i--)if(n.shape[i]===e[i])a[i]=1;else if(1!==n.shape[i])throw new Error("broadcastTo(): ["+r+"] cannot be broadcast to ["+e+"].");var s=a.map((function(t,e){return t>1?e:-1})).filter((function(t){return t>=0}));return 0===s.length?n.clone():Ot.runKernelFunc((function(t){return t.tile(n,a)}),{input:n},(function(t){return{input:function(){return t.sum(s,!0)}}}))}}),Ln=Ze({cast_:function(t,e){var n=je(t,"x","cast");if(!W(e))throw new Error("Failed to cast to unknown dtype "+e);if("string"===e&&"string"!==n.dtype||"string"!==e&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");var r={dtype:e};return Ot.runKernelFunc((function(t){return t.cast(n,e)}),{x:n},(function(t){return{x:function(){return t.clone()}}}),"Cast",r)}}),Wn=Ze({clone_:function(t){var e=je(t,"x","clone",null);return Ot.runKernelFunc((function(){return Ot.makeTensorFromDataId(e.dataId,e.shape,e.dtype)}),{$x:e},(function(t){return{$x:function(){return t.toFloat()}}}))}}),Un=Ze({cumsum_:function(t,e,n,r){void 0===e&&(e=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var o=je(t,"x","cumsum"),a=Xe([e|=0],o.rank),i=o;null!=a&&(i=o.transpose(a));var s=Ye(1,o.rank)[0],u=Ot.runKernelFunc((function(t){return t.cumsum(i,s,n,r)}),{permutedX:i},(function(t){return{permutedX:function(){return t.cumsum(e,n,!r)}}}));return null!=a&&(u=u.transpose(a)),u}}),jn=Ze({depthToSpace_:function(t,e,n){void 0===n&&(n="NHWC");var r=je(t,"x","depthToSpace"),o="NHWC"===n?r.shape[1]:r.shape[2],a="NHWC"===n?r.shape[2]:r.shape[3],i="NHWC"===n?r.shape[3]:r.shape[1];return E(o*e>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n "+o+" and "+e+" for depthToSpace with input shape\n "+r.shape})),E(a*e>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n "+a+" and "+e+" for depthToSpace with input shape\n "+r.shape})),E(i%(e*e)==0,(function(){return"Dimension size must be evenly divisible by "+e*e+" but is "+i+" for depthToSpace with input shape "+r.shape})),Ot.runKernelFunc((function(t){return t.depthToSpace(r,e,n)}),{$x:r})}}),zn=Ze({expandDims_:function(t,e){void 0===e&&(e=0);var n=je(t,"x","expandDims",null);E(e<=n.rank,(function(){return"Axis must be <= rank of the tensor"}));var r=n.shape.slice();return e<0&&(E(-(n.rank+1)<=e,(function(){return"Axis must be in the interval ["+-(n.rank+1)+", "+n.rank+"]"})),e=n.rank+e+1),r.splice(e,0,1),er(n,r)}}),Vn=Ze({eye_:function(t,e,n,r){void 0===r&&(r="float32"),null==e&&(e=t);for(var o=Mn([t,e],r),a=t<=e?t:e,i=0;i<a;++i)o.set(1,i,i);var s=o.toTensor().as2D(t,e);if(null==n)return s;if(1===n.length)return ar(zn(s,0),[n[0],1,1]);if(2===n.length)return ar(zn(zn(s,0),0),[n[0],n[1],1,1]);if(3===n.length)return ar(zn(zn(zn(s,0),0),0),[n[0],n[1],n[2],1,1]);throw new Error("eye() currently supports only 1D and 2D batchShapes, but received "+n.length+"D.")}}),Gn=Ze({multinomial_:function(t,e,n,r){void 0===r&&(r=!1);var o=je(t,"logits","multinomial"),a=o.size,i=o.rank;if(a<2)throw new Error("Error in multinomial: you need at least 2 outcomes, but got "+a+".");if(i>2)throw new Error("Rank of probabilities must be 1 or 2, but is "+i);n=n||Math.random();var s=1===i?o.as2D(1,-1):o,u=Ot.runKernelFunc((function(t){return t.multinomial(s,r,e,n)}),{logits2D:s});return 1===i?u.as1D():u}}),Hn=Ze({oneHot_:function(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r=0),e<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+e);var o=je(t,"indices","oneHot","int32"),a=o.shape.concat([e]);return o=o.flatten(),Ot.runKernelFunc((function(t){return t.oneHot(o,e,n,r)}),{$indices:o},(function(t){return{$indices:function(){return hn(o.shape,"float32")}}})).reshape(a)}}),qn=Ze({pad_:function(t,e,n){void 0===n&&(n=0);var r=je(t,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var o={paddings:e,constantValue:n};return Ot.runKernelFunc((function(t){return t.pad(r,e,n)}),{x:r},(function(t){var n=e.map((function(t){return t[0]}));return{x:function(){return t.slice(n,r.shape)}}}),"PadV2",o)}}),Kn=Ze({pad1d_:function(t,e,n){return void 0===n&&(n=0),E(2===e.length,(function(){return"Invalid number of paddings. Must be length of 2."})),qn(t,[e],n)}}),Xn=Ze({pad2d_:function(t,e,n){return void 0===n&&(n=0),E(2===e.length&&2===e[0].length&&2===e[1].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),qn(t,e,n)}}),$n=Ze({pad3d_:function(t,e,n){return void 0===n&&(n=0),E(3===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),qn(t,e,n)}}),Yn=Ze({pad4d_:function(t,e,n){return void 0===n&&(n=0),E(4===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length&&2===e[3].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),qn(t,e,n)}}),Jn=Ze({rand_:function(t,e,n){var r=R(t),o=null;if(null==n||"float32"===n)o=new Float32Array(r);else if("int32"===n)o=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type "+n);o=new Uint8Array(r)}for(var a=0;a<r;a++)o[a]=e();return Ot.makeTensor(o,t,n)}}),Qn=Ze({randomNormal_:function(t,e,n,r,o){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&"bool"===r)throw new Error("Unsupported data type "+r);for(var a=new Dn(e,n,r,!1,o),i=Mn(t,r),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}}),Zn=Ze({randomGamma_:function(t,e,n,r,o){if(void 0===n&&(n=1),void 0===r&&(r="float32"),null==n&&(n=1),null==r&&(r="float32"),"float32"!==r&&"int32"!==r)throw new Error("Unsupported data type "+r);for(var a=new Nn(e,n,r,o),i=Mn(t,r),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}}),tr=Ze({randomUniform_:function(t,e,n,r,o){void 0===e&&(e=0),void 0===n&&(n=1),void 0===r&&(r="float32");for(var a=Mn(t,r),i=new Fn(e,n,null,o),s=0;s<a.values.length;s++)a.values[s]=i.nextValue();return a.toTensor()}}),er=Ze({reshape_:function(t,e){var n=je(t,"x","reshape",null);e=N(e,n.size),E(n.size===R(e),(function(){return"new shape and old shape must have the same number of elements."}));var r={shape:e};return Ot.runKernelFunc((function(t){return t.reshape(n,e)}),{x:n},(function(t){return{x:function(){return t.reshape(n.shape)}}}),"Reshape",r)}}),nr=Ze({spaceToBatchND_:function(t,e,n){var r=je(t,"x","spaceToBatchND");return E(r.rank>=1+e.length,(function(){return"input rank "+r.rank+" should be > than [blockShape] "+e.length})),E(n.length===e.length,(function(){return"paddings.shape[0] "+n.length+" must be equal to [blockShape] "+e.length})),E(r.shape.reduce((function(t,r,o){return o>0&&o<=e.length?t&&(r+n[o-1][0]+n[o-1][1])%e[o-1]==0:t}),!0),(function(){return"input spatial dimensions "+r.shape.slice(1)+" with paddings "+n.toString()+" must be divisible by blockShapes "+e.toString()})),Ot.runKernelFunc((function(t){return t.spaceToBatchND(r,e,n)}),{$x:r},(function(t){return{$x:function(){return t.batchToSpaceND(e,n)}}}))}}),rr=Ze({squeeze_:function(t,e){var n=je(t,"x","squeeze");return er(n,M(n.shape,e).newShape)}}),or=Ze({stack_:function(t,e){void 0===e&&(e=0);var n=ze(t,"tensors","stack");if(E(n.length>=1,(function(){return"Pass at least one tensor to tf.stack"})),1===n.length)return n[0].expandDims(e);var r=n[0].rank,o=n[0].shape,a=n[0].dtype;E(e<=r,(function(){return"Axis must be <= rank of the tensor"})),n.forEach((function(t){C(o,t.shape,"All tensors passed to stack must have matching shapes")})),n.forEach((function(t){E(a===t.dtype,(function(){return"All tensors passed to stack must have matching dtypes"}))}));var i=n.map((function(t){return t.expandDims(e)}));return gn(i,e)}}),ar=Ze({tile_:function(t,e){var n=je(t,"x","tile",null);return E(n.rank===e.length,(function(){return"Error in transpose: rank of input "+n.rank+" must match length of reps "+e+"."})),Ot.runKernelFunc((function(t,r){var o=t.tile(n,e);return r([n]),o}),{$x:n},(function(t,n){var r=n[0];return{$x:function(){var n=mn(r);if(1===r.rank)for(var o=0;o<e[0];++o)n=n.add(t.slice([o*r.shape[0]],[r.shape[0]]));else if(2===r.rank)for(o=0;o<e[0];++o)for(var a=0;a<e[1];++a)n=n.add(t.slice([o*r.shape[0],a*r.shape[1]],[r.shape[0],r.shape[1]]));else if(3===r.rank)for(o=0;o<e[0];++o)for(a=0;a<e[1];++a)for(var i=0;i<e[2];++i)n=n.add(t.slice([o*r.shape[0],a*r.shape[1],i*r.shape[2]],[r.shape[0],r.shape[1],r.shape[2]]));else{if(4!==r.rank)throw new Error("Gradient for tile operation is not implemented for rank-"+r.rank+" tensors yet.");for(o=0;o<e[0];++o)for(a=0;a<e[1];++a)for(i=0;i<e[2];++i)for(var s=0;s<e[3];++s)n=n.add(t.slice([o*r.shape[0],a*r.shape[1],i*r.shape[2],s*r.shape[3]],[r.shape[0],r.shape[1],r.shape[2],r.shape[3]]))}return n}}}))}}),ir=Ze({truncatedNormal_:function(t,e,n,r,o){if(void 0===e&&(e=0),void 0===n&&(n=1),null!=r&&"bool"===r)throw new Error("Unsupported data type "+r);for(var a=new Dn(e,n,r,!0,o),i=Mn(t,r),s=0;s<i.values.length;s++)i.values[s]=a.nextValue();return i.toTensor()}}),sr=Ze({unstack_:function(t,e){void 0===e&&(e=0),e=e||0;var n=je(t,"x","unstack");return E(e>=-n.shape.length&&e<n.shape.length,(function(){return"Axis = "+e+" is not in [-"+n.shape.length+", "+n.shape.length+")"})),e<0&&(e+=n.shape.length),Ot.runKernelFunc((function(t){return t.unstack(n,e)}),{$x:n},(function(t){return{$x:function(){return or(t,e)}}}))}});function ur(t,e,n,r){void 0===r&&(r=!0);var o=[];if(r)(o=o.concat(e.slice(0))).push(t[0]/n),o=o.concat(t.slice(1));else{o=o.concat(t[0]);for(var a=e.length,i=0;i<a;++i)o=o.concat([t[i+1]/e[i],e[i]]);o=o.concat(t.slice(a+1))}return o}function cr(t,e,n){void 0===n&&(n=!0);var r=[];if(n){r.push(e);for(var o=e+1;o<t;++o)o<=2*e?(r.push(o),r.push(o-(e+1))):r.push(o)}else{var a=[],i=[];for(o=1;o<t;++o)o>=2*e+1||o%2==1?i.push(o):a.push(o);r.push.apply(r,a),r.push(0),r.push.apply(r,i)}return r}function lr(t,e,n,r){void 0===r&&(r=!0);var o=[];r?o.push(t[0]/n):o.push(t[0]*n);for(var a=1;a<t.length;++a)a<=e.length?r?o.push(e[a-1]*t[a]):o.push(t[a]/e[a-1]):o.push(t[a]);return o}function fr(t,e){for(var n=[0],r=0;r<e;++r)n.push(t[r][0]);return n}function hr(t,e,n){for(var r=t.slice(0,1),o=0;o<n;++o)r.push(t[o+1]-e[o][0]-e[o][1]);return r}function pr(t,e){if(t.rank<1)throw new Error("tf.gatherND() expects the input to be rank 1 or higher, but the rank was "+t.rank+".");if(e.rank<1)throw new Error("tf.gatherND() expects the indices to be rank 1 or higher, but the rank was "+e.rank+".");if("int32"!==e.dtype)throw new Error("tf.gatherND() expects the indices to be int32 type, but the dtype was "+e.dtype+".");if(e.shape[e.rank-1]>t.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+e.shape[e.rank-1]+" vs. "+t.rank);if(0===t.size)throw new Error("Requested more than 0 entries, but input is empty. Input shape: "+t.shape+".");for(var n=e.shape,r=n[n.length-1],o=1,a=0;a<n.length-1;++a)o*=n[a];var i=t.shape,s=n.slice();s.pop();var u=1;for(a=r;a<t.rank;++a)u*=i[a],s.push(i[a]);var c=Y(t.shape).map((function(t){return t/u})).concat([1]).slice(0,r);return[s,o,u,c]}function dr(t){return t<=30?t:$(t,Math.floor(Math.sqrt(t)))}function vr(t,e,n){for(var r=e.rank>1?e.shape[e.rank-1]:1,o=n.length,a=1,i=r;i<o;++i)a*=n[i];var s=r<1?1:r;return{sliceRank:r,numUpdates:e.size/s,sliceSize:a,strides:Y(n.slice(0,r)).concat([1]),outputSize:R(n)}}function mr(t,e,n){E(t.rank===e.length,(function(){return"Error in slice"+t.rank+"D: Length of begin "+e+" must match the rank of the array ("+t.rank+")."})),E(t.rank===n.length,(function(){return"Error in slice"+t.rank+"D: Length of size "+n+" must match the rank of the array ("+t.rank+")."}));for(var r=function(r){E(e[r]+n[r]<=t.shape[r],(function(){return"Error in slice"+t.rank+"D: begin["+r+"] + size["+r+"] ("+(e[r]+n[r])+") would overflow input.shape["+r+"] ("+t.shape[r]+")"}))},o=0;o<t.rank;++o)r(o)}function gr(t){for(var e=[],n=0;t>0;)1&t&&e.push(n),t/=2,n++;return e}function yr(t,e,n){for(var r=[],o=0;o<t.length;o++)r[o]=Math.ceil((e[o]-t[o])/n[o]);return r}function br(t,e,n,r,o){var a=e[o],i=n[o]||1;(t&1<<o||null==a)&&(a=i>0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),b(0,a,s-1)}function xr(t,e,n,r,o){var a=e[o],i=n[o]||1;(t&1<<o||null==a)&&(a=i>0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),i>0?b(0,a,s):b(-1,a,s-1)}function wr(t,e,n){for(var r=n.length,o=0;o<n.length;o++)if(n[o]>1){r=o;break}for(o=r+1;o<n.length;o++)if(e[o]>0||n[o]!==t[o])return!1;return!0}function Er(t,e){for(var n=t.length>0?t[t.length-1]:1,r=0;r<t.length-1;r++)n+=t[r]*e[r];return n}Object.freeze({assertParamsValid:mr,maskToAxes:gr,computeOutShape:yr,startForAxis:br,stopForAxis:xr,isSliceContinous:wr,computeFlatOffset:Er});function Cr(t){return Ot.customGrad(t)}var _r=Ze({softmax_:function(t,e){void 0===e&&(e=-1);var n=je(t,"logits","softmax");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and dim was "+e);return Cr((function(t,n){var r=t.logSumExp([e],!0),o=t.toFloat().sub(r).exp();return n([o]),{value:o,gradFunc:function(t,n){var r=n[0],o=t.mul(r);return o.sub(o.sum([e],!0).mul(r))}}}))(n)}}),kr=Ze({logSoftmax_:function(t,e){void 0===e&&(e=-1);var n=je(t,"logits","logSoftmax");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and axis was "+e);return Cr((function(t,n){var r=t.max(e,!0),o=t.sub(r),a=o.toFloat().sub(o.exp().sum(e,!0).log());return n([a]),{value:a,gradFunc:function(t,n){var r=n[0].exp();return t.sub(t.sum(e,!0).mul(r))}}}))(n)}}),Rr=function(){function t(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap,this.dataIdsCount=0}return t.prototype.get=function(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)},t.prototype.set=function(t,e){this.dataIdsCount++,this.data.set(t,e)},t.prototype.has=function(t){return this.data.has(t)},t.prototype.delete=function(t){return this.dataIdsCount--,this.data.delete(t)},t.prototype.numDataIds=function(){return this.dataIdsCount},t}(),Ir=function(){function t(){}return t.prototype.time=function(t){return Sr("time")},t.prototype.read=function(t){return Sr("read")},t.prototype.readSync=function(t){return Sr("readSync")},t.prototype.numDataIds=function(){return Sr("numDataIds")},t.prototype.disposeData=function(t){return Sr("disposeData")},t.prototype.write=function(t,e,n){return Sr("write")},t.prototype.move=function(t,e,n,r){return Sr("move")},t.prototype.memory=function(){return Sr("memory")},t.prototype.floatPrecision=function(){return Sr("floatPrecision")},t.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},t.prototype.batchMatMul=function(t,e,n,r){return Sr("batchMatMul")},t.prototype.fusedBatchMatMul=function(t){return t.a,t.b,t.transposeA,t.transposeB,t.bias,t.activation,t.preluActivationWeights,Sr("fusedBatchMatMul")},t.prototype.slice=function(t,e,n){return Sr("slice")},t.prototype.stridedSlice=function(t,e,n,r){return Sr("stridedSlice")},t.prototype.unstack=function(t,e){return Sr("unstack")},t.prototype.reverse=function(t,e){return Sr("reverse")},t.prototype.concat=function(t,e){return Sr("concat")},t.prototype.neg=function(t){return Sr("neg")},t.prototype.add=function(t,e){return Sr("add")},t.prototype.addN=function(t){return Sr("addN")},t.prototype.subtract=function(t,e){return Sr("subtract")},t.prototype.multiply=function(t,e){return Sr("multiply")},t.prototype.realDivide=function(t,e){return Sr("realDivide")},t.prototype.floorDiv=function(t,e){return Sr("floorDiv")},t.prototype.sum=function(t,e){return Sr("sum")},t.prototype.prod=function(t,e){return Sr("prod")},t.prototype.unsortedSegmentSum=function(t,e,n){return Sr("unsortedSegmentSum")},t.prototype.argMin=function(t,e){return Sr("argMin")},t.prototype.argMax=function(t,e){return Sr("argMax")},t.prototype.equal=function(t,e){return Sr("equal")},t.prototype.notEqual=function(t,e){return Sr("notEqual")},t.prototype.less=function(t,e){return Sr("less")},t.prototype.lessEqual=function(t,e){return Sr("lessEqual")},t.prototype.greater=function(t,e){return Sr("greater")},t.prototype.greaterEqual=function(t,e){return Sr("greaterEqual")},t.prototype.logicalNot=function(t){return Sr("logicalNot")},t.prototype.logicalAnd=function(t,e){return Sr("logicalAnd")},t.prototype.logicalOr=function(t,e){return Sr("logicalOr")},t.prototype.where=function(t){return Sr("where")},t.prototype.select=function(t,e,n){return Sr("select")},t.prototype.topk=function(t,e,n){return Sr("topk")},t.prototype.min=function(t,e){return Sr("min")},t.prototype.minimum=function(t,e){return Sr("minimum")},t.prototype.mod=function(t,e){return Sr("mod")},t.prototype.max=function(t,e){return Sr("max")},t.prototype.maximum=function(t,e){return Sr("maximum")},t.prototype.all=function(t,e){return Sr("all")},t.prototype.any=function(t,e){return Sr("any")},t.prototype.squaredDifference=function(t,e){return Sr("squaredDifference")},t.prototype.ceil=function(t){return Sr("ceil")},t.prototype.floor=function(t){return Sr("floor")},t.prototype.round=function(t){return Sr("round")},t.prototype.sign=function(t){return Sr("sign")},t.prototype.isNaN=function(t){return Sr("isNaN")},t.prototype.isInf=function(t){return Sr("isInf")},t.prototype.isFinite=function(t){return Sr("isFinite")},t.prototype.pow=function(t,e){return Sr("pow")},t.prototype.exp=function(t){return Sr("exp")},t.prototype.expm1=function(t){return Sr("expm1")},t.prototype.log=function(t){return Sr("log")},t.prototype.log1p=function(t){return Sr("log1p")},t.prototype.sqrt=function(t){return Sr("sqrt")},t.prototype.rsqrt=function(t){return Sr("rsqrt")},t.prototype.square=function(t){return Sr("square")},t.prototype.reciprocal=function(t){return Sr("reciprocal")},t.prototype.relu=function(t){return Sr("relu")},t.prototype.relu6=function(t){return Sr("relu6")},t.prototype.prelu=function(t,e){return Sr("prelu")},t.prototype.elu=function(t){return Sr("elu")},t.prototype.eluDer=function(t,e){return Sr("eluDer")},t.prototype.selu=function(t){return Sr("selu")},t.prototype.int=function(t){return Sr("int")},t.prototype.clip=function(t,e,n){return Sr("clip")},t.prototype.abs=function(t){return Sr("abs")},t.prototype.complexAbs=function(t){return Sr("complexAbs")},t.prototype.sigmoid=function(t){return Sr("sigmoid")},t.prototype.softplus=function(t){return Sr("softplus")},t.prototype.sin=function(t){return Sr("sin")},t.prototype.cos=function(t){return Sr("cos")},t.prototype.tan=function(t){return Sr("tan")},t.prototype.asin=function(t){return Sr("asin")},t.prototype.acos=function(t){return Sr("acos")},t.prototype.atan=function(t){return Sr("atan")},t.prototype.atan2=function(t,e){return Sr("atan2")},t.prototype.sinh=function(t){return Sr("sinh")},t.prototype.cosh=function(t){return Sr("cosh")},t.prototype.tanh=function(t){return Sr("tanh")},t.prototype.asinh=function(t){return Sr("asinh")},t.prototype.acosh=function(t){return Sr("acosh")},t.prototype.atanh=function(t){return Sr("atanh")},t.prototype.erf=function(t){return Sr("erf")},t.prototype.step=function(t,e){return Sr("step")},t.prototype.fusedConv2d=function(t){return t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights,Sr("fusedConv2d")},t.prototype.conv2d=function(t,e,n){return Sr("conv2d")},t.prototype.conv2dDerInput=function(t,e,n){return Sr("conv2dDerInput")},t.prototype.conv2dDerFilter=function(t,e,n){return Sr("conv2dDerFilter")},t.prototype.fusedDepthwiseConv2D=function(t){return t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights,Sr("fusedDepthwiseConv2D")},t.prototype.depthwiseConv2D=function(t,e,n){return Sr("depthwiseConv2D")},t.prototype.depthwiseConv2DDerInput=function(t,e,n){return Sr("depthwiseConv2DDerInput")},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){return Sr("depthwiseConv2DDerFilter")},t.prototype.conv3d=function(t,e,n){return Sr("conv3d")},t.prototype.conv3dDerInput=function(t,e,n){return Sr("conv3dDerInput")},t.prototype.conv3dDerFilter=function(t,e,n){return Sr("conv3dDerFilter")},t.prototype.maxPool=function(t,e){return Sr("maxPool")},t.prototype.maxPoolBackprop=function(t,e,n,r){return Sr("maxPoolBackprop")},t.prototype.avgPool=function(t,e){return Sr("avgPool")},t.prototype.avgPoolBackprop=function(t,e,n){return Sr("avgPoolBackprop")},t.prototype.avgPool3d=function(t,e){return Sr("avgPool3d")},t.prototype.avgPool3dBackprop=function(t,e,n){return Sr("avgPool3dBackprop")},t.prototype.maxPool3d=function(t,e){return Sr("maxPool3d")},t.prototype.maxPool3dBackprop=function(t,e,n,r){return Sr("maxPool3dBackprop")},t.prototype.reshape=function(t,e){return Sr("reshape")},t.prototype.cast=function(t,e){return Sr("cast")},t.prototype.tile=function(t,e){return Sr("tile")},t.prototype.pad=function(t,e,n){return Sr("pad")},t.prototype.transpose=function(t,e){return Sr("transpose")},t.prototype.gather=function(t,e,n){return Sr("gather")},t.prototype.gatherND=function(t,e){return Sr("gatherND")},t.prototype.scatterND=function(t,e,n){return Sr("scatterND")},t.prototype.batchToSpaceND=function(t,e,n){return Sr("batchToSpaceND")},t.prototype.spaceToBatchND=function(t,e,n){return Sr("spaceToBatchND")},t.prototype.resizeBilinear=function(t,e,n,r){return Sr("resizeBilinear")},t.prototype.resizeBilinearBackprop=function(t,e,n){return Sr("resizeBilinearBackprop")},t.prototype.resizeNearestNeighbor=function(t,e,n,r){return Sr("resizeNearestNeighbor")},t.prototype.resizeNearestNeighborBackprop=function(t,e,n){return Sr("resizeNearestNeighborBackprop")},t.prototype.batchNormalization=function(t,e,n,r,o,a){return Sr("batchNormalization")},t.prototype.localResponseNormalization4D=function(t,e,n,r,o){return Sr("localResponseNormalization4D")},t.prototype.LRNGrad=function(t,e,n,r,o,a,i){return Sr("LRNGrad")},t.prototype.multinomial=function(t,e,n,r){return Sr("multinomial")},t.prototype.oneHot=function(t,e,n,r){return Sr("oneHot")},t.prototype.cumsum=function(t,e,n,r){return Sr("cumsum")},t.prototype.nonMaxSuppression=function(t,e,n,r,o){return Sr("nonMaxSuppression")},t.prototype.fft=function(t){return Sr("fft")},t.prototype.ifft=function(t){return Sr("ifft")},t.prototype.complex=function(t,e){return Sr("complex")},t.prototype.real=function(t){return Sr("real")},t.prototype.imag=function(t){return Sr("imag")},t.prototype.cropAndResize=function(t,e,n,r,o,a){return Sr("cropAndResize")},t.prototype.depthToSpace=function(t,e,n){return Sr("depthToSpace")},t.prototype.split=function(t,e,n){return Sr("split")},t.prototype.sparseToDense=function(t,e,n,r){return Sr("sparseToDense")},t.prototype.diag=function(t){return Sr("diag")},t.prototype.fill=function(t,e,n){return Sr("fill")},t.prototype.onesLike=function(t){return Sr("onesLike")},t.prototype.zerosLike=function(t){return Sr("zerosLike")},t.prototype.linspace=function(t,e,n){return Sr("linspace")},t.prototype.dispose=function(){return Sr("dispose")},t}();function Sr(t){throw new Error("'"+t+"' not yet implemented or not found in the registry. Did you forget to import the kernel?")}function Ar(t,e){for(var n=t.length,r=[],o=0;o<n;o++){var a=n-1-o,i=t[a]||1;(e[e.length-1-o]||1)>1&&1===i&&r.unshift(a)}return r}function Or(t,e){for(var n=[],r=0;r<e.length;r++){var o=t[t.length-r-1],a=e.length-r-1,i=e[a];(null==o||1===o&&i>1)&&n.unshift(a)}return n}function Tr(t,e){for(var n=[],r=Math.max(t.length,e.length),o=0;o<r;o++){var a=t[t.length-o-1];null==a&&(a=1);var i=e[e.length-o-1];if(null==i&&(i=1),1===a)n.unshift(i);else if(1===i)n.unshift(a);else{if(a!==i)throw Error("Operands could not be broadcast together with shapes "+t+" and "+e+".");n.unshift(a)}}return n}function Dr(t,e,n,r,o,a,i){void 0===i&&(i="channelsLast");var s,u=Br(e),c=u[0],l=u[1];if("channelsLast"===i)s=[c,l,t[3],t[3]];else{if("channelsFirst"!==i)throw new Error("Unknown dataFormat "+i);s=[c,l,t[1],t[1]]}return Fr(t,s,n,r,o,a,!1,i)}function Nr(t,e,n,r,o,a,i){void 0===i&&(i="NDHWC");var s,u,c=Lr(e),l=c[0],f=c[1],h=c[2];if("NDHWC"===i)u="channelsLast",s=[l,f,h,t[4],t[4]];else{if("NCDHW"!==i)throw new Error("Unknown dataFormat "+i);u="channelsFirst",s=[l,f,h,t[1],t[1]]}return Mr(t,s,n,r,o,!1,u,a)}function Fr(t,e,n,r,o,a,i,s){void 0===i&&(i=!1),void 0===s&&(s="channelsLast");var u=[-1,-1,-1,-1],c=u[0],l=u[1],f=u[2],h=u[3];if("channelsLast"===s)c=t[0],l=t[1],f=t[2],h=t[3];else{if("channelsFirst"!==s)throw new Error("Unknown dataFormat "+s);c=t[0],h=t[1],l=t[2],f=t[3]}var p,d=e[0],v=e[1],m=e[3],g=Br(n),y=g[0],b=g[1],x=Br(r),w=x[0],C=x[1],_=Wr(d,w),k=Wr(v,C),R=function(t,e,n,r,o,a,i,s){var u,c,l;if("number"==typeof t){u={top:t,bottom:t,left:t,right:t,type:0===t?"VALID":"NUMBER"};var f=function(t,e,n,r,o){null==r&&(r=Pr(t,e,n));var a=t[1],i=Ur((t[0]-e+2*r)/n+1,o);E(S(i),(function(){return"The output # of rows ("+i+") must be an integer. Change the stride and/or zero pad parameters"}));var s=Ur((a-e+2*r)/n+1,o);return E(S(s),(function(){return"The output # of columns ("+s+") must be an integer. Change the stride and/or zero pad parameters"})),[i,s]}([e,n],a,r,t,s);c=f[0],l=f[1]}else if("same"===t){c=Math.ceil(e/r),l=Math.ceil(n/o);var h=Math.max(0,(c-1)*r+a-e),p=Math.max(0,(l-1)*o+i-n),d=Math.floor(h/2),v=h-d,m=Math.floor(p/2);u={top:d,bottom:v,left:m,right:p-m,type:"SAME"}}else{if("valid"!==t)throw Error("Unknown padding parameter: "+t);u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((e-a+1)/r),l=Math.ceil((n-i+1)/o)}return{padInfo:u,outHeight:c,outWidth:l}}(o,l,f,y,b,_,k,a),I=R.padInfo,A=R.outHeight,O=R.outWidth,T=i?m*h:m;return"channelsFirst"===s?p=[c,T,A,O]:"channelsLast"===s&&(p=[c,A,O,T]),{batchSize:c,dataFormat:s,inHeight:l,inWidth:f,inChannels:h,outHeight:A,outWidth:O,outChannels:T,padInfo:I,strideHeight:y,strideWidth:b,filterHeight:d,filterWidth:v,effectiveFilterHeight:_,effectiveFilterWidth:k,dilationHeight:w,dilationWidth:C,inShape:t,outShape:p,filterShape:e}}function Mr(t,e,n,r,o,a,i,s){void 0===a&&(a=!1),void 0===i&&(i="channelsLast");var u=[-1,-1,-1,-1,-1],c=u[0],l=u[1],f=u[2],h=u[3],p=u[4];if("channelsLast"===i)c=t[0],l=t[1],f=t[2],h=t[3],p=t[4];else{if("channelsFirst"!==i)throw new Error("Unknown dataFormat "+i);c=t[0],p=t[1],l=t[2],f=t[3],h=t[4]}var d,v=e[0],m=e[1],g=e[2],y=e[4],b=Lr(n),x=b[0],w=b[1],C=b[2],_=Lr(r),k=_[0],R=_[1],I=_[2],A=Wr(v,k),O=Wr(m,R),T=Wr(g,I),D=function(t,e,n,r,o,a,i,s,u,c,l){var f,h,p,d;if("number"==typeof t){f={top:t,bottom:t,left:t,right:t,front:t,back:t,type:0===t?"VALID":"NUMBER"};var v=function(t,e,n,r,o,a){null==o&&(o=Pr(t,e,r));var i=t[1],s=t[2],u=Ur((t[0]-e+2*o)/r+1,a);E(S(u),(function(){return"The output # of depths ("+u+") must be an integer. Change the stride and/or zero pad parameters"}));var c=Ur((i-e+2*o)/r+1,a);E(S(c),(function(){return"The output # of rows ("+c+") must be an integer. Change the stride and/or zero pad parameters"}));var l=Ur((s-e+2*o)/r+1,a);return E(S(l),(function(){return"The output # of columns ("+l+") must be an integer. Change the stride and/or zero pad parameters"})),[u,c,l,1]}([e,n,r,1],s,0,o,t,l);h=v[0],p=v[1],d=v[2]}else if("same"===t){var m=((h=Math.ceil(e/o))-1)*o+s-e,g=((p=Math.ceil(n/a))-1)*a+u-n,y=((d=Math.ceil(r/i))-1)*i+c-r,b=Math.floor(m/2),x=m-b,w=Math.floor(g/2),C=g-w,_=Math.floor(y/2);f={top:w,bottom:C,left:_,right:y-_,front:b,back:x,type:"SAME"}}else{if("valid"!==t)throw Error("Unknown padding parameter: "+t);f={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},h=Math.ceil((e-s+1)/o),p=Math.ceil((n-u+1)/a),d=Math.ceil((r-c+1)/i)}return{padInfo:f,outDepth:h,outHeight:p,outWidth:d}}(o,l,f,h,x,w,C,A,O,T,s),N=D.padInfo,F=D.outDepth,M=D.outHeight,P=D.outWidth,B=a?y*p:y;return"channelsFirst"===i?d=[c,B,F,M,P]:"channelsLast"===i&&(d=[c,F,M,P,B]),{batchSize:c,dataFormat:i,inDepth:l,inHeight:f,inWidth:h,inChannels:p,outDepth:F,outHeight:M,outWidth:P,outChannels:B,padInfo:N,strideDepth:x,strideHeight:w,strideWidth:C,filterDepth:v,filterHeight:m,filterWidth:g,effectiveFilterDepth:A,effectiveFilterHeight:O,effectiveFilterWidth:T,dilationDepth:k,dilationHeight:R,dilationWidth:I,inShape:t,outShape:d,filterShape:e}}function Pr(t,e,n,r){void 0===r&&(r=1);var o=Wr(e,r);return Math.floor((t[0]*(n-1)-n+o)/2)}function Br(t){return"number"==typeof t?[t,t,t]:2===t.length?[t[0],t[1],1]:t}function Lr(t){return"number"==typeof t?[t,t,t]:t}function Wr(t,e){return e<=1?t:t+(t-1)*(e-1)}function Ur(t,e){if(!e)return t;switch(e){case"round":return Math.round(t);case"ceil":return Math.ceil(t);case"floor":return Math.floor(t);default:throw new Error("Unknown roundingMode "+e)}}function jr(t){var e=Br(t),n=e[0],r=e[1],o=e[2];return 1===n&&1===r&&1===o}function zr(t,e){return jr(t)||jr(e)}function Vr(t){if("NHWC"===t)return"channelsLast";if("NCHW"===t)return"channelsFirst";throw new Error("Unknown dataFormat "+t)}function Gr(t,e,n){if("complex64"===e){if("complex64"===t.dtype)return t.clone();var r=hn(t.shape),o=t.toFloat(),a=n.complex(o,r);return r.dispose(),o.dispose(),a}if(!U(t.dtype,e))return Ot.makeTensorFromDataId(t.dataId,t.shape,e);if("complex64"===t.dtype){var i=n.real(t);return a=i.cast(e),i.dispose(),a}if("int32"===e)return n.int(t);if("bool"===e){var s=an(0,t.dtype);return a=n.notEqual(t,s),s.dispose(),a}throw new Error("Error in Cast: failed to cast "+t.dtype+" to "+e)}function Hr(t,e){return Ot.makeTensorFromDataId(t.dataId,e,t.dtype)}function qr(t,e,n){var r=(e-t)/(n-1),o=tt(n,"float32");o[0]=t;for(var a=1;a<o.length;a++)o[a]=o[a-1]+r;return sn(o,"float32")}Object.freeze({castTensor:Gr,reshapeTensor:Hr,linspaceImpl:qr,upcastType:Et,axesAreInnerMostDims:Ve,combineLocations:Ge,computeOutAndReduceShapes:He,expandShapeToKeepDim:qe,assertAxesAreInnerMostDims:Ke,getAxesPermutation:Xe,getUndoAxesPermutation:$e,getInnerMostAxes:Ye,getBroadcastDims:Ar,getReductionAxes:Or,assertAndGetBroadcastShape:Tr,assertParamsConsistent:Je,computeOutShape:Qe,computePool2DInfo:Dr,computePool3DInfo:Nr,computeConv2DInfo:Fr,computeConv3DInfo:Mr,computeDefaultPad:Pr,tupleValuesAreOne:jr,eitherStridesOrDilationsAreOne:zr,convertConv2DDataFormat:Vr});function Kr(t,e){if(t.length!==e.length)throw new Error("Cannot merge real and imag arrays of different lengths. real:"+t.length+", imag: "+e.length+".");for(var n=new Float32Array(2*t.length),r=0;r<n.length;r+=2)n[r]=t[r/2],n[r+1]=e[r/2];return n}function Xr(t,e){return{real:t[2*e],imag:t[2*e+1]}}function $r(t,e,n,r){t[2*r]=e,t[2*r+1]=n}function Yr(t,e,n){var r=(n?2:-2)*Math.PI*(t/e);return{real:Math.cos(r),imag:Math.sin(r)}}function Jr(t,e,n,r,o){for(var a=Array.from(e).map((function(t,e){return{score:t,boxIndex:e}})).filter((function(t){return t.score>o})).sort((function(t,e){return e.score-t.score})),i=[],s=0;s<a.length;s++){var u=a[s],c=u.score,l=u.boxIndex;if(c<o)break;for(var f=!1,h=i.length-1;h>=0;--h)if(Qr(t,l,i[h])>=r){f=!0;break}if(!f&&(i.push(l),i.length>=n))break}return sn(i,"int32")}function Qr(t,e,n){var r=t.subarray(4*e,4*e+4),o=t.subarray(4*n,4*n+4),a=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),c=Math.min(o[0],o[2]),l=Math.min(o[1],o[3]),f=Math.max(o[0],o[2]),h=Math.max(o[1],o[3]),p=(s-a)*(u-i),d=(f-c)*(h-l);if(p<=0||d<=0)return 0;var v=Math.max(a,c),m=Math.max(i,l),g=Math.min(s,f),y=Math.min(u,h),b=Math.max(g-v,0)*Math.max(y-m,0);return b/(p+d-b)}function Zr(t,e,n){var r=new Array(t.rank).fill(0),o=t.shape.slice();return e.map((function(e){o[n]=e;var a=t.slice(r,o);return r[n]+=e,a}))}function to(t,e){for(var n=new Array(t.rank),r=0;r<n.length;r++)n[r]=t.shape[r]*e[r];var o=Mn(n,t.dtype);for(r=0;r<o.values.length;++r){for(var a=o.indexToLoc(r),i=new Array(t.rank),s=0;s<i.length;s++)i[s]=a[s]%t.shape[s];var u=t.locToIndex(i);o.values[r]=t.values[u]}return o.toTensor()}function eo(t,e,n,r,o){for(var a=e[e.length-1],i=[t.length/a,a],s=i[0],u=i[1],c=P(n,s*r),l=P("int32",s*r),f=0;f<s;f++){for(var h=f*u,p=t.subarray(h,h+u),d=[],v=0;v<p.length;v++)d.push({value:p[v],index:v});d.sort((function(t,e){return e.value-t.value}));var m=f*r,g=c.subarray(m,m+r),y=l.subarray(m,m+r);for(v=0;v<r;v++)g[v]=d[v].value,y[v]=d[v].index}var b=e.slice();return b[b.length-1]=r,[rn(c,b,n),rn(l,b,"int32")]}function no(t,e){for(var n=[],r=0;r<e.length;r++)e[r]&&n.push(r);var o=Mn(t,"int32"),a=Mn([n.length,t.length],"int32");for(r=0;r<n.length;r++){var i=o.indexToLoc(n[r]),s=r*t.length;a.values.set(i,s)}return a.toTensor()}var ro=function(t,e){this.outputShape=[],this.outputShape=t,this.variableNames=e.map((function(t,e){return"T"+e}));var n=[];this.variableNames.forEach((function(t){n.push("float v"+t+" = get"+t+"AtOutCoords();")}));var r=this.variableNames.map((function(t){return"v"+t})).join(" + ");this.userCode="\n void main() {\n "+n.join("\n ")+"\n\n float result = "+r+";\n setOutput(result);\n }\n "},oo=function(t,e){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.variableNames=e.map((function(t,e){return"T"+e}));var n=[];this.variableNames.forEach((function(t){n.push("vec4 v"+t+" = get"+t+"AtOutCoords();")}));var r=this.variableNames.map((function(t){return"v"+t})).join(" + ");this.userCode="\n void main() {\n "+n.join("\n ")+"\n\n vec4 result = "+r+";\n setOutput(result);\n }\n "},ao=function(t,e,n){this.variableNames=["A"];var r=t.windowSize,o=t.batchSize,a=t.inSize,i=Math.ceil(a/r);n||this.variableNames.push("bestIndicesA"),this.outputShape=[o,i];var s="max"===e?">":"<",u=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+r+";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < "+r+"; i++) {\n int inIdx = "+u+";\n float candidate = getA(batch, inIdx);\n if (candidate "+s+" bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n "};function io(t,e){return["x","y","z","w","u","v"].slice(0,e).map((function(e){return t+"."+e}))}function so(t,e){return 1===e?[t]:io(t,e)}function uo(){var t,e,n,r,o,a,i,s,u,c;return 2===f().getNumber("WEBGL_VERSION")?(t="#version 300 es",e="in",n="out",r="in",o="texture",a="outputColor",i="out vec4 outputColor;",s="\n bool isnan_custom(float val) {\n return (val > 0.0 || val < 0.0) ? false : val != 0.0;\n }\n\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan_custom(val.x),\n isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\n }\n\n #define isnan(value) isnan_custom(value)\n ",u="",c="\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "):(t="",e="attribute",n="varying",r="varying",o="texture2D",a="gl_FragColor",i="",s="\n #define isnan(value) isnan_custom(value)\n bool isnan_custom(float val) {\n return (val > 0. || val < 1. || val == 0.) ? false : true;\n }\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n }\n ",u="\n uniform float INFINITY;\n\n bool isinf(float val) {\n return abs(val) == INFINITY;\n }\n bvec4 isinf(vec4 val) {\n return equal(abs(val), vec4(INFINITY));\n }\n ",c="\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "),{version:t,attribute:e,varyingVs:n,varyingFs:r,texture2D:o,output:a,defineOutput:i,defineSpecialNaN:s,defineSpecialInf:u,defineRound:c}}function co(t,e,n){void 0===n&&(n="index");var r=Y(e);return r.map((function(e,o){return"int "+t[o]+" = "+n+" / "+e+"; "+(o===r.length-1?"int "+t[o+1]+" = "+n+" - "+t[o]+" * "+e:"index -= "+t[o]+" * "+e)+";"})).join("")}function lo(t){var e=Y(t).map((function(t){return t.toString()}));return"\n int getFlatIndex(ivec3 coords) {\n return coords.x * "+e[0]+" + coords.y * "+e[1]+" + coords.z;\n }\n"}var fo="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isnan(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n";function ho(t,e,n,r){var o=[];t.forEach((function(t){var e=R(t.shapeInfo.logicalShape);t.shapeInfo.isUniform?o.push("uniform float "+t.name+(e>1?"["+e+"]":"")+";"):(o.push("uniform sampler2D "+t.name+";"),o.push("uniform int offset"+t.name+";"))}));var a,i,s=o.join("\n"),u=t.map((function(t){return function(t,e,n){void 0===n&&(n=!1);var r="";r+=n?function t(e){var n,r,o;switch(e.shapeInfo.logicalShape.length){case 0:return n=e.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),o=uo(),"\n vec4 "+r+"() {\n return "+o.texture2D+"("+n+", halfCR);\n }\n ";case 1:return function(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1),r=t.shapeInfo.texShape,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],a=uo();return"\n vec4 "+n+"(int index) {\n vec2 uv = packedUVfrom1D(\n "+o[0]+", "+o[1]+", index);\n return "+a.texture2D+"("+e+", uv);\n }\n "}(e);case 2:return function(t){var e=t.shapeInfo.logicalShape,n=t.name,r="get"+n.charAt(0).toUpperCase()+n.slice(1),o=t.shapeInfo.texShape,a=o[0],i=o[1],s=uo();if(null!=o&&I(e,o))return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+i+".0, "+a+".0);\n\n return "+s.texture2D+"("+n+", uv);\n }\n ";var u=[Math.ceil(o[0]/2),Math.ceil(o[1]/2)];return"\n vec4 "+r+"(int row, int col) {\n vec2 uv = packedUVfrom2D("+Math.ceil(e[1]/2)+", "+u[0]+", "+u[1]+", row, col);\n return "+s.texture2D+"("+n+", uv);\n }\n "}(e);case 3:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=e.shapeInfo.texShape,i=[Math.ceil(a[0]/2),Math.ceil(a[1]/2)];if(1===n[0]){var s=wo(e,n.slice(1));return"\n "+t(s)+"\n vec4 "+o+"(int b, int row, int col) {\n return "+o+"("+Eo(["b","row","col"],[1,2])+");\n }\n "}var u=i[0],c=i[1],l=Math.ceil(n[2]/2);return"\n vec4 "+o+"(int b, int row, int col) {\n vec2 uv = packedUVfrom3D(\n "+u+", "+c+", "+l*Math.ceil(n[1]/2)+", "+l+", b, row, col);\n return "+uo().texture2D+"("+r+", uv);\n }\n "}(e);default:return function(t){for(var e=t.shapeInfo.logicalShape,n=e.length,r=t.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=t.shapeInfo.texShape,i=[Math.ceil(a[0]/2),Math.ceil(a[1]/2)],s=i[0],u=i[1],c=Math.ceil(e[n-1]/2),l=c*Math.ceil(e[n-2]/2),f="int b, int row, int col",h="b * "+l+" + (row / 2) * "+c+" + (col / 2)",p=2;p<n-1;p++)f="int b"+p+", "+f,h="b"+p+" * "+(l*=e[n-p-1])+" + "+h;return"\n vec4 "+o+"("+f+") {\n int index = "+h+";\n int texR = index / "+u+";\n int texC = index - texR * "+u+";\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+u+", "+s+");\n return "+uo().texture2D+"("+r+", uv);\n }\n "}(e)}}(t):function t(e){var n=e.shapeInfo.logicalShape;switch(n.length){case 0:return function(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return"float "+n+"() {return "+e+";}";var r=t.shapeInfo.texShape,o=r[0],a=r[1];if(1===o&&1===a)return"\n float "+n+"() {\n return sampleTexture("+e+", halfCR);\n }\n ";var i=t.shapeInfo.texShape;return"\n float "+n+"() {\n vec2 uv = uvFromFlat("+i[0]+", "+i[1]+", "+yo(e)+");\n return sampleTexture("+e+", uv);\n }\n "}(e);case 1:return function(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1);if(t.shapeInfo.isUniform)return"\n float "+n+"(int index) {\n "+bo(t)+"\n }\n ";var r=t.shapeInfo.texShape,o=r[0],a=r[1];if(1===a&&1===o)return"\n float "+n+"(int index) {\n return sampleTexture("+e+", halfCR);\n }\n ";var i=yo(e);return 1===a?"\n float "+n+"(int index) {\n vec2 uv = vec2(0.5, (float(index + "+i+") + 0.5) / "+o+".0);\n return sampleTexture("+e+", uv);\n }\n ":1===o?"\n float "+n+"(int index) {\n vec2 uv = vec2((float(index + "+i+") + 0.5) / "+a+".0, 0.5);\n return sampleTexture("+e+", uv);\n }\n ":"\n float "+n+"(int index) {\n vec2 uv = uvFromFlat("+o+", "+a+", index + "+i+");\n return sampleTexture("+e+", uv);\n }\n "}(e);case 2:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=e.shapeInfo.texShape;if(null!=a&&I(n,a)){var i=a[0];return"\n float "+o+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+a[1]+".0, "+i+".0);\n return sampleTexture("+r+", uv);\n }\n "}var s=M(n),u=s.newShape,c=s.keptDims,l=u;if(l.length<n.length){var f=wo(e,l);return"\n "+t(f)+"\n float "+o+"(int row, int col) {\n return "+o+"("+Eo(["row","col"],c)+");\n }\n "}if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col) {\n int index = round(dot(vec2(row, col), vec2("+n[1]+", 1)));\n "+bo(e)+"\n }\n ";var h=a[0],p=a[1],d=yo(r);return 1===p?"\n float "+o+"(int row, int col) {\n float index = dot(vec3(row, col, "+d+"), vec3("+n[1]+", 1, 1));\n vec2 uv = vec2(0.5, (index + 0.5) / "+h+".0);\n return sampleTexture("+r+", uv);\n }\n ":1===h?"\n float "+o+"(int row, int col) {\n float index = dot(vec3(row, col, "+d+"), vec3("+n[1]+", 1, 1));\n vec2 uv = vec2((index + 0.5) / "+p+".0, 0.5);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+n[1]+" + col + "+d+";\n vec2 uv = uvFromFlat("+h+", "+p+", index);\n return sampleTexture("+r+", uv);\n }\n"}(e);case 3:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=n[1]*n[2],i=n[2],s=M(n),u=s.newShape,c=s.keptDims,l=u;if(l.length<n.length){var f=wo(e,l);return"\n "+t(f)+"\n float "+o+"(int row, int col, int depth) {\n return "+o+"("+Eo(["row","col","depth"],c)+");\n }\n "}if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col, int depth) {\n int index = round(dot(vec3(row, col, depth),\n vec3("+a+", "+i+", 1)));\n "+bo(e)+"\n }\n ";var h=e.shapeInfo.texShape,p=h[0],d=h[1],v=e.shapeInfo.flatOffset;return d===a&&null==v?"\n float "+o+"(int row, int col, int depth) {\n float texR = float(row);\n float texC = dot(vec2(col, depth), vec2("+i+", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+d+".0, "+p+".0);\n return sampleTexture("+r+", uv);\n }\n ":d===i&&null==v?"\n float "+o+"(int row, int col, int depth) {\n float texR = dot(vec2(row, col), vec2("+n[1]+", 1));\n float texC = float(depth);\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+d+".0, "+p+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+a+" + col * "+i+" + depth + "+yo(r)+";\n vec2 uv = uvFromFlat("+p+", "+d+", index);\n return sampleTexture("+r+", uv);\n }\n "}(e);case 4:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=n[3],i=n[2]*a,s=n[1]*i,u=M(n),c=u.newShape,l=u.keptDims;if(c.length<n.length){var f=wo(e,c);return"\n "+t(f)+"\n float "+o+"(int row, int col, int depth, int depth2) {\n return "+o+"("+Eo(["row","col","depth","depth2"],l)+");\n }\n "}if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col, int depth, int depth2) {\n int index = round(dot(vec4(row, col, depth, depth2),\n vec4("+s+", "+i+", "+a+", 1)));\n "+bo(e)+"\n }\n ";var h=e.shapeInfo.flatOffset,p=e.shapeInfo.texShape,d=p[0],v=p[1];return v===s&&null==h?"\n float "+o+"(int row, int col, int depth, int depth2) {\n float texR = float(row);\n float texC =\n dot(vec3(col, depth, depth2),\n vec3("+i+", "+a+", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+v+".0, "+d+".0);\n return sampleTexture("+r+", uv);\n }\n ":v===a&&null==h?"\n float "+o+"(int row, int col, int depth, int depth2) {\n float texR = dot(vec3(row, col, depth),\n vec3("+n[1]*n[2]+", "+n[2]+", 1));\n float texC = float(depth2);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+v+".0, "+d+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth, int depth2) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+s+" + col * "+i+" +\n depth * "+a+" + depth2;\n vec2 uv = uvFromFlat("+d+", "+v+", index + "+yo(r)+");\n return sampleTexture("+r+", uv);\n }\n "}(e);case 5:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=n[4],i=n[3]*a,s=n[2]*i,u=n[1]*s,c=M(n),l=c.newShape,f=c.keptDims;if(l.length<n.length){var h=wo(e,l);return"\n "+t(h)+"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n return "+o+"("+Eo(["row","col","depth","depth2","depth3"],f)+");\n }\n "}if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n float index = dot(\n vec4(row, col, depth, depth2),\n vec4("+u+", "+s+", "+i+", "+a+")) +\n depth3;\n "+bo(e)+"\n }\n ";var p=e.shapeInfo.flatOffset,d=e.shapeInfo.texShape,v=d[0],m=d[1];return m===u&&null==p?"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4("+s+", "+i+", "+a+", 1));\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m+".0, "+v+".0);\n return sampleTexture("+r+", uv);\n }\n ":m===a&&null==p?"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n float texR = dot(\n vec4(row, col, depth, depth2),\n vec4("+n[1]*n[2]*n[3]+",\n "+n[2]*n[3]+", "+n[3]+", 1));\n int texC = depth3;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+m+".0, "+v+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth, int depth2, int depth3) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+u+" + col * "+s+" + depth * "+i+" +\n depth2 * "+a+" + depth3 + "+yo(r)+";\n vec2 uv = uvFromFlat("+v+", "+m+", index);\n return sampleTexture("+r+", uv);\n }\n "}(e);case 6:return function(e){var n=e.shapeInfo.logicalShape,r=e.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=M(n),i=a.newShape,s=a.keptDims;if(i.length<n.length){var u=wo(e,i);return"\n "+t(u)+"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n return "+o+"("+Eo(["row","col","depth","depth2","depth3","depth4"],s)+");\n }\n "}var c=n[5],l=n[4]*c,f=n[3]*l,h=n[2]*f,p=n[1]*h;if(e.shapeInfo.isUniform)return"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int index = round(dot(\n vec4(row, col, depth, depth2),\n vec4("+p+", "+h+", "+f+", "+l+")) +\n dot(\n vec2(depth3, depth4),\n vec2("+c+", 1)));\n "+bo(e)+"\n }\n ";var d=e.shapeInfo.flatOffset,v=e.shapeInfo.texShape,m=v[0],g=v[1];return g===p&&null==d?"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n int texR = row;\n float texC = dot(vec4(col, depth, depth2, depth3),\n vec4("+h+", "+f+", "+l+", "+c+")) +\n float(depth4);\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+g+".0, "+m+".0);\n return sampleTexture("+r+", uv);\n }\n ":g===c&&null==d?"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n float texR = dot(vec4(row, col, depth, depth2),\n vec4("+n[1]*n[2]*n[3]*n[4]+",\n "+n[2]*n[3]*n[4]+",\n "+n[3]*n[4]+",\n "+n[4]+")) + float(depth3);\n int texC = depth4;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+g+".0, "+m+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth,\n int depth2, int depth3, int depth4) {\n // Explicitly use integer operations as dot() only works on floats.\n int index = row * "+p+" + col * "+h+" + depth * "+f+" +\n depth2 * "+l+" + depth3 * "+c+" + depth4 + "+yo(r)+";\n vec2 uv = uvFromFlat("+m+", "+g+", index);\n return sampleTexture("+r+", uv);\n }\n "}(e);default:throw new Error(n.length+"-D input sampling is not yet supported")}}(t);var o=t.shapeInfo.logicalShape,a=e.logicalShape;return o.length<=a.length&&(r+=n?function(t,e){var n,r=t.name,o=r.charAt(0).toUpperCase()+r.slice(1),a="get"+o+"AtOutCoords",i=t.shapeInfo.logicalShape.length,s=e.logicalShape.length,u=Ar(t.shapeInfo.logicalShape,e.logicalShape),c=xo(s),l=s-i,f=["x","y","z","w","u","v"];n=0===i?"":s<2&&u.length>=1?"coords = 0;":u.map((function(t){return"coords."+f[t+l]+" = 0;"})).join("\n");var h;h=s<2&&i>0?"coords":t.shapeInfo.logicalShape.map((function(t,e){return"coords."+f[e+l]})).join(", ");var p="return outputValue;",d=1===R(t.shapeInfo.logicalShape),v=1===R(e.logicalShape);if(1!==i||d||v){if(d&&!v)p=1===s?"\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ":"\n return vec4(outputValue.x);\n ";else if(u.length){var m=i-2,g=i-1;u.indexOf(m)>-1&&u.indexOf(g)>-1?p="return vec4(outputValue.x);":u.indexOf(m)>-1?p="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":u.indexOf(g)>-1&&(p="return vec4(outputValue.xx, outputValue.zz);")}}else p="\n return vec4(outputValue.xy, outputValue.xy);\n ";return"\n vec4 "+a+"() {\n "+c+" coords = getOutputCoords();\n "+n+"\n vec4 outputValue = get"+o+"("+h+");\n "+p+"\n }\n "}(t,e):function(t,e){var n=t.name,r=n.charAt(0).toUpperCase()+n.slice(1),o="get"+r+"AtOutCoords",a=e.texShape,i=t.shapeInfo.texShape,s=t.shapeInfo.logicalShape.length,u=e.logicalShape.length;if(!t.shapeInfo.isUniform&&s===u&&null==t.shapeInfo.flatOffset&&I(i,a))return"\n float "+o+"() {\n return sampleTexture("+n+", resultUV);\n }\n ";var c=xo(u),l=Ar(t.shapeInfo.logicalShape,e.logicalShape),f=u-s,h=["x","y","z","w","u","v"];return"\n float "+o+"() {\n "+c+" coords = getOutputCoords();\n "+(0===s?"":u<2&&l.length>=1?"coords = 0;":l.map((function(t){return"coords."+h[t+f]+" = 0;"})).join("\n"))+"\n return get"+r+"("+(u<2&&s>0?"coords":t.shapeInfo.logicalShape.map((function(t,e){return"coords."+h[e+f]})).join(", "))+");\n }\n "}(t,e)),r}(t,e,r)})).join("\n"),c=e.texShape,l=uo(),f=function(t){return"\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return "+t.texture2D+"(textureSampler, uv).r;\n }\n "}(l),h=function(t){return t.version+"\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n "+t.varyingFs+" vec2 resultUV;\n "+t.defineOutput+"\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n "+t.defineSpecialNaN+"\n "+t.defineSpecialInf+"\n "+t.defineRound+"\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n "+po+"\n "+vo+"\n "+mo+"\n "}(l);return e.isPacked?(a=function(t,e){switch(t.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];return 1===n[0]?"\n int getOutputCoords() {\n return 2 * int(resultUV.x * "+n[1]+".0);\n }\n ":1===n[1]?"\n int getOutputCoords() {\n return 2 * int(resultUV.y * "+n[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n return 2 * (resTexRC.x * "+n[1]+" + resTexRC.y);\n }\n "}(0,e);case 2:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(I(t,e))return"\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2("+n[0]+", "+n[1]+"));\n }\n ";var r=Math.ceil(t[1]/2);return"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec2(r, c);\n }\n "}(t,e);case 3:return n=t,r=e,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],i=(a=Math.ceil(n[2]/2))*Math.ceil(n[1]/2),"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+o[0]+", "+o[1]+"));\n int index = resTexRC.x * "+o[1]+" + resTexRC.y;\n\n int b = index / "+i+";\n index -= b * "+i+";\n\n int r = 2 * (index / "+a+");\n int c = imod(index, "+a+") * 2;\n\n return ivec3(b, r, c);\n }\n ";default:return function(t,e){for(var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[t.length-1]/2),o=r*Math.ceil(t[t.length-2]/2),a=o,i="",s="b, r, c",u=2;u<t.length-1;u++)i="\n int b"+u+" = index / "+(a*=t[t.length-u-1])+";\n index -= b"+u+" * "+a+";\n "+i,s="b"+u+", "+s;return"\n ivec"+t.length+" getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n\n "+i+"\n\n int b = index / "+o+";\n index -= b * "+o+";\n\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec"+t.length+"("+s+");\n }\n "}(t,e)}var n,r,o,a,i}(e.logicalShape,c),i=function(t){return"\n void setOutput(vec4 val) {\n "+t.output+" = val;\n }\n "}(l)):(a=function(t,e){switch(t.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(t,e){return 1===e[0]?"\n int getOutputCoords() {\n return int(resultUV.x * "+e[1]+".0);\n }\n ":1===e[1]?"\n int getOutputCoords() {\n return int(resultUV.y * "+e[0]+".0);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n return resTexRC.x * "+e[1]+" + resTexRC.y;\n }\n "}(0,e);case 2:return function(t,e){return I(t,e)?"\n ivec2 getOutputCoords() {\n return ivec2(resultUV.yx * vec2("+e[0]+", "+e[1]+"));\n }\n ":1===t[1]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n return ivec2(index, 0);\n }\n ":1===t[0]?"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n return ivec2(0, index);\n }\n ":"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n int r = index / "+t[1]+";\n int c = index - r * "+t[1]+";\n return ivec2(r, c);\n }\n "}(t,e);case 3:return n=e,r=co(["r","c","d"],t),"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n "+r+"\n return ivec3(r, c, d);\n }\n ";case 4:return function(t,e){var n=co(["r","c","d","d2"],t);return"\n ivec4 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n "+n+"\n return ivec4(r, c, d, d2);\n }\n "}(t,e);case 5:return function(t,e){var n=co(["r","c","d","d2","d3"],t);return"\n ivec5 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx * vec2("+e[0]+",\n "+e[1]+"));\n\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec5 outShape = ivec5(r, c, d, d2, d3);\n return outShape;\n }\n "}(t,e);case 6:return function(t,e){var n=co(["r","c","d","d2","d3","d4"],t);return"\n ivec6 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = resTexRC.x * "+e[1]+" + resTexRC.y;\n\n "+n+"\n\n ivec6 result = ivec6(r, c, d, d2, d3, d4);\n return result;\n }\n "}(t,e);default:throw new Error(t.length+"-D output sampling is not yet supported")}var n,r}(e.logicalShape,c),i=function(t){return"\n void setOutput(float val) {\n "+t.output+" = vec4(val, 0, 0, 0);\n }\n "}(l)),r&&(h+=go),[h,f,i,s,a,u,n].join("\n")}var po="\nvec2 uvFromFlat(int texNumR, int texNumC, int index) {\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\nvec2 packedUVfrom1D(int texNumR, int texNumC, int index) {\n int texelIndex = index / 2;\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n",vo="\nvec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,\n int texNumC, int row, int col) {\n int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = texelIndex / texNumC;\n int texC = texelIndex - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n",mo="\nvec2 packedUVfrom3D(int texNumR, int texNumC,\n int texelsInBatch, int texelsInLogicalRow, int b,\n int row, int col) {\n int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);\n int texR = index / texNumC;\n int texC = index - texR * texNumC;\n return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\n}\n",go="\n float getChannel(vec4 frag, vec2 innerDims) {\n vec2 modCoord = mod(innerDims, 2.);\n return modCoord.x == 0. ?\n (modCoord.y == 0. ? frag.r : frag.g) :\n (modCoord.y == 0. ? frag.b : frag.a);\n }\n float getChannel(vec4 frag, int dim) {\n float modCoord = mod(float(dim), 2.);\n return modCoord == 0. ? frag.r : frag.g;\n }\n";function yo(t){return"offset"+t}function bo(t){var e=t.name,n=R(t.shapeInfo.logicalShape);return n<2?"return "+e+";":"\n for (int i = 0; i < "+n+"; i++) {\n if (i == index) {\n return "+e+"[i];\n }\n }\n "}function xo(t){if(t<=1)return"int";if(2===t)return"ivec2";if(3===t)return"ivec3";if(4===t)return"ivec4";if(5===t)return"ivec5";if(6===t)return"ivec6";throw Error("GPU for rank "+t+" is not yet supported")}function wo(t,e){var n=JSON.parse(JSON.stringify(t));return n.shapeInfo.logicalShape=e,n}function Eo(t,e){return e.map((function(e){return t[e]})).join(", ")}var Co=function(t,e,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,E(t.length>2,(function(){return"Packed arg"+(n.charAt(0).toUpperCase()+n.slice(1))+" supports only inputs with rank above 2."}));var o=t[t.length-1],a=Math.ceil(o/e);this.outputShape=t.slice(0,-1),a>1&&this.outputShape.push(a),r||this.variableNames.push("bestIndicesA");var i,s,u=this.outputShape,c=u.length,l=xo(c),f=so("coords",c);if(1===a){var h=xo(s=c+1);i="\n "+h+" sourceLocR = "+h+"("+f.join()+", 0);\n ++"+f[c-1]+";\n "+h+" sourceLocG = "+h+"("+f.join()+", 0);\n ++"+f[c-2]+";\n "+h+" sourceLocA = "+h+"("+f.join()+", 0);\n --"+f[c-1]+";\n "+h+" sourceLocB = "+h+"("+f.join()+", 0);\n --"+f[c-2]+";"}else s=c,i="\n "+l+" sourceLocR = coords;\n ++"+f[c-1]+";\n "+l+" sourceLocG = coords;\n ++"+f[c-2]+";\n "+l+" sourceLocA = coords;\n --"+f[c-1]+";\n "+l+" sourceLocB = coords;\n --"+f[c-2]+";";var p=["x","y","z","w","u","v"].slice(0,s),d="."+p[s-1],v=p.map((function(t){return"int "+t})),m=so("sourceLocR",s-1).concat("inIdx.r"),g=so("sourceLocG",s-1).concat("inIdx.g"),y=so("sourceLocB",s-1).concat("inIdx.b"),b=so("sourceLocA",s-1).concat("inIdx.a"),x="max"===n?"greaterThan":"lessThan",w=r?"":"\n inIdx = round(vec4(getBestIndicesAChannel("+m.join()+"),\n getBestIndicesAChannel("+g.join()+"),\n getBestIndicesAChannel("+y.join()+"),\n getBestIndicesAChannel("+b.join()+")));",C="vec4(\n getAChannel("+m.join()+"),\n hasNextCol ? getAChannel("+g.join()+") : 0.,\n hasNextRow ? getAChannel("+y.join()+") : 0.,\n hasNextRow && hasNextCol ? getAChannel("+b.join()+") : 0.)",_=r?"":"\n float getBestIndicesAChannel("+v.join()+") {\n return getChannel(getBestIndicesA("+p.join()+"),\n vec2("+p.slice(-2).join()+"));\n }";this.userCode="\n float getAChannel("+v.join()+") {\n return getChannel(getA("+p.join()+"),\n vec2("+p.slice(-2).join()+"));\n }\n "+_+"\n void main() {\n "+l+" coords = getOutputCoords();\n bool hasNextCol = "+f[c-1]+" < "+(u[c-1]-1)+";\n bool hasNextRow = "+f[c-2]+" < "+(u[c-2]-1)+";\n "+i+"\n ivec4 srcIdx = ivec4(sourceLocR"+d+", sourceLocG"+d+",\n sourceLocB"+d+", sourceLocA"+d+") * "+e+";\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = "+C+";\n\n for (int i = 0; i < "+e+"; i++) {\n inIdx = srcIdx;\n "+w+"\n vec4 candidate = "+C+";\n bvec4 nan = isnan(candidate);\n bvec4 replace = bvec4(\n vec4("+x+"(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n bestValue = vec4(replace.x ? candidate.x : bestValue.x,\n replace.y ? candidate.y : bestValue.y,\n replace.z ? candidate.z : bestValue.z,\n replace.w ? candidate.w : bestValue.w);\n bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n srcIdx++;\n }\n setOutput(bestIndex);\n }\n "},_o=function(t){this.variableNames=["dy"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterHeight,u=t.effectiveFilterWidth,c=s-1-t.padInfo.top,l=u-1-t.padInfo.left,f=1/(e*n);this.userCode="\n const ivec2 pads = ivec2("+c+", "+l+");\n const float avgMultiplier = float("+f+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+s+";\n wR += "+a+") {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+u+";\n wC+= "+i+") {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n "},ko=function(t){this.variableNames=["dy"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterDepth,f=t.effectiveFilterHeight,h=t.effectiveFilterWidth,p=l-1-t.padInfo.front,d=f-1-t.padInfo.top,v=h-1-t.padInfo.left,m=1/(e*n*r);this.userCode="\n const ivec3 pads = ivec3("+p+", "+d+", "+v+");\n const float avgMultiplier = float("+m+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < "+l+";\n wD += "+s+") {\n float dyD = float(dyDCorner + wD) / "+o+".0;\n\n if (dyD < 0.0 || dyD >= "+t.outDepth+".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < "+f+";\n wR += "+u+") {\n float dyR = float(dyRCorner + wR) / "+a+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+h+";\n wC += "+c+") {\n float dyC = float(dyCCorner + wC) / "+i+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n }\n setOutput(dotProd);\n }\n "},Ro=function(t,e,n,r,o,a){this.outputShape=[],this.variableNames=["x","mean","variance"],Tr(t,e),Tr(t,n);var i="0.0";null!=r&&(Tr(t,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");var s="1.0";null!=o&&(Tr(t,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = "+i+";\n float scale = "+s+";\n float inv = scale * inversesqrt(variance + float("+a+"));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n "},Io=function(t,e,n,r,o,a){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],Tr(t,e),Tr(t,n);var i="vec4(0.0)";null!=r&&(Tr(t,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");var s="vec4(1.0)";null!=o&&(Tr(t,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n vec4 offset = "+i+";\n vec4 scale = "+s+";\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4("+a+"));\n\n setOutput((x - mean) * inv + offset);\n }\n "},So=function(t,e,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=Tr(e,n),this.userCode="\n float binaryOpComplex(\n float areal, float aimag, float breal, float bimag) {\n "+t+"\n }\n\n void main() {\n float areal = getARealAtOutCoords();\n float aimag = getAImagAtOutCoords();\n float breal = getBRealAtOutCoords();\n float bimag = getBImagAtOutCoords();\n setOutput(binaryOpComplex(areal, aimag, breal, bimag));\n }\n "},Ao="return a + b;",Oo="return a - b;",To="return a * b;",Do="return (a < 0.) ? b * a : a;",No=function(t,e,n){this.variableNames=["A","B"],this.outputShape=Tr(e,n),this.userCode="\n float binaryOperation(float a, float b) {\n "+t+"\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n "},Fo="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",Mo=function(t,e,n,r){void 0===r&&(r=!1),this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=Tr(e,n);var o=this.outputShape.length,a="";if(r)if(0===o||1===R(this.outputShape))a="\n result.y = 0.;\n result.z = 0.;\n result.w = 0.;\n ";else if(a="\n "+xo(o)+" coords = getOutputCoords();\n ",1===o)a+="\n result.y = (coords + 1) >= "+this.outputShape[0]+" ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ";else{var i=so("coords",o);a+="\n bool nextRowOutOfBounds =\n ("+i[o-2]+" + 1) >= "+this.outputShape[o-2]+";\n bool nextColOutOfBounds =\n ("+i[o-1]+" + 1) >= "+this.outputShape[o-1]+";\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n "}this.userCode="\n vec4 binaryOperation(vec4 a, vec4 b) {\n "+t+"\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n\n vec4 result = binaryOperation(a, b);\n "+a+"\n\n setOutput(result);\n }\n "},Po=function(){function t(t){this.variableNames=["A"],this.outputShape=t,this.userCode="\n uniform float minVal;\n uniform float maxVal;\n\n void main() {\n float value = getAAtOutCoords();\n if (isnan(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, minVal, maxVal));\n }\n "}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=r.getUniformLocationNoThrow(o,"maxVal")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),Bo=function(){function t(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode="\n uniform float minVal;\n uniform float maxVal;\n\n void main() {\n vec4 value = getAAtOutCoords();\n\n if (any(isnan(value))) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\n }\n "}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=r.getUniformLocationNoThrow(o,"maxVal")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e)}},t}(),Lo=function(t){this.variableNames=["real","imag"],this.outputShape=t,this.userCode="\n void main() {\n float re = abs(getRealAtOutCoords());\n float im = abs(getImagAtOutCoords());\n float mx = max(re, im);\n\n // sadly the length function in glsl is not underflow-safe\n // (at least not on Intel GPUs). So the safe solution is\n // to ensure underflow-safety in all cases.\n setOutput(\n mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n );\n }\n "},Wo=function(t){this.outputShape=[],this.outputShape=Qe(t,1),this.variableNames=t.map((function(t,e){return"T"+e}));var e=new Array(t.length-1);e[0]=t[0][1];for(var n=1;n<e.length;n++)e[n]=e[n-1]+t[n][1];var r=["if (yC < "+e[0]+") setOutput(getT0(yR, yC));"];for(n=1;n<e.length;n++){var o=e[n-1];r.push("else if (yC < "+e[n]+") setOutput(getT"+n+"(yR, yC-"+o+"));")}var a=e.length,i=e[e.length-1];r.push("else setOutput(getT"+a+"(yR, yC-"+i+"));"),this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int yR = coords.x;\n int yC = coords.y;\n\n "+r.join("\n ")+"\n }\n "},Uo=function(t,e){this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[],this.outputShape=Qe(t,e);var n=this.outputShape,r=n.length,o=xo(r),a=so("coords",r),i=["x","y","z","w","u","v"].slice(0,r);this.variableNames=t.map((function(t,e){return"T"+e}));var s=new Array(t.length-1);s[0]=t[0][e];for(var u=1;u<s.length;u++)s[u]=s[u-1]+t[u][e];var c=i[e],l=i.slice(-2),f=i.join(),h="if ("+c+" < "+s[0]+") {\n return getChannel(\n getT0("+f+"), vec2("+l.join()+"));\n }";for(u=1;u<s.length;u++){var p=s[u-1];h+="\n if ("+c+" < "+s[u]+" && "+c+" >= "+s[u-1]+") {\n return getChannel(\n getT"+u+"("+jo(i,c,p)+"),\n vec2("+jo(l,c,p)+"));\n }"}var d=s.length,v=s[s.length-1];h+="\n return getChannel(\n getT"+d+"("+jo(i,c,v)+"),\n vec2("+jo(l,c,v)+"));",this.userCode="\n float getValue("+i.map((function(t){return"int "+t}))+") {\n "+h+"\n }\n\n void main() {\n "+o+" coords = getOutputCoords();\n vec4 result = vec4(getValue("+a+"), 0., 0., 0.);\n\n "+a[r-1]+" = "+a[r-1]+" + 1;\n if ("+a[r-1]+" < "+n[r-1]+") {\n result.g = getValue("+a+");\n }\n\n "+a[r-2]+" = "+a[r-2]+" + 1;\n if ("+a[r-2]+" < "+n[r-2]+") {\n result.a = getValue("+a+");\n }\n\n "+a[r-1]+" = "+a[r-1]+" - 1;\n if ("+a[r-2]+" < "+n[r-2]+" &&\n "+a[r-1]+" < "+n[r-1]+") {\n result.b = getValue("+a+");\n }\n setOutput(result);\n }\n "};function jo(t,e,n){var r=t.indexOf(e);return t.map((function(t,e){return e===r?t+" - "+n:t})).join()}var zo=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,a="channelsLast"===t.dataFormat;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+e+" - "+r+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+o+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n if ("+a+") {\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n } else {\n float dyValue = getDy(b, d2, yR, yC);\n float xValue = getX(b, d1, xR, xC);\n dotProd += (xValue * dyValue);\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n "},Vo=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a="channelsLast"===t.dataFormat,i=e-1-t.padInfo.top,s=n-1-t.padInfo.left,u=a?1:2,c=a?2:3,l=a?3:1;this.userCode="\n const ivec2 pads = ivec2("+i+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords["+l+"];\n\n ivec2 dyCorner = ivec2(coords["+u+"], coords["+c+"]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.outChannels+"; d2++) {\n\n if ("+a+") {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n } else {\n float xValue = getDy(batch, d2, idyR, idyC);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n "},Go=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.padInfo.front,a=t.padInfo.top,i=t.padInfo.left;this.userCode="\n void main() {\n ivec5 coords = getOutputCoords();\n int wF = coords.x;\n int wR = coords.y;\n int wC = coords.z;\n int d1 = coords.w;\n int d2 = coords.u;\n\n float dotProd = 0.0;\n\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yF = 0; yF < "+t.outDepth+"; yF++) {\n int xF = wF + yF * "+e+" - "+o+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+n+" - "+a+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+r+" - "+i+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yF, yR, yC, d2);\n float xValue = getX(b, xF, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "},Ho=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=e-1-t.padInfo.front,u=n-1-t.padInfo.top,c=r-1-t.padInfo.left;this.userCode="\n const ivec3 pads = ivec3("+s+", "+u+", "+c+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.u;\n\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyFCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n float dotProd = 0.0;\n for (int wF = 0; wF < "+e+"; wF++) {\n float dyF = float(dyFCorner + wF) / "+o+".0;\n\n if (dyF < 0.0 || dyF >= "+t.outDepth+".0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = "+e+" - 1 - wF;\n\n for (int wR = 0; wR < "+n+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+a+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+n+" - 1 - wR;\n\n for (int wC = 0; wC < "+r+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+i+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+r+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.outChannels+"; d2++) {\n float xValue = getDy(batch, idyF, idyR, idyC, d2);\n float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "},qo=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,a=t.outChannels/t.inChannels;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int dm = coords.w;\n int d2 = d1 * "+a+" + dm;\n\n float dotProd = 0.0;\n\n // TO DO: Vec4 over the batch size\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+e+" - "+r+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+o+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n "},Ko=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=e-1-t.padInfo.top,i=n-1-t.padInfo.left,s=t.outChannels/t.inChannels;this.userCode="\n const ivec2 pads = ivec2("+a+", "+i+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n // TO DO: Vec4 over the channelMul\n for (int dm = 0; dm < "+s+"; dm++) {\n int d2 = d1 * "+s+" + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n "},Xo=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.outputShape=t.outShape;var o=t.padInfo.top,a=t.padInfo.left,i=t.strideHeight,s=t.strideWidth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterHeight,f=t.filterWidth,h=4*Math.floor(t.inChannels/4),p=t.inChannels%4,d="channelsLast"===t.dataFormat,v=d?1:2,m=d?2:3,g=d?3:1,y="",b="";n&&(y=r?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n "+n+"\n }":"\n float activation(float x) {\n "+n+"\n }\n ",b="result = activation(result);");var x=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+y+"\n\n const ivec2 strides = ivec2("+i+", "+s+");\n const ivec2 pads = ivec2("+o+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords["+g+"];\n\n ivec2 xRCCorner =\n ivec2(coords["+v+"], coords["+m+"]) * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+l+"; wR++) {\n int xR = xRCorner + wR * "+u+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+f+"; wC++) {\n int xC = xCCorner + wC * "+c+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+h+"; d1 += 4) {\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n if ("+d+") {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec4 xValues = vec4(\n getX(batch, d1, xR, xC),\n getX(batch, d1 + 1, xR, xC),\n getX(batch, d1 + 2, xR, xC),\n getX(batch, d1 + 3, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n\n if ("+(1===p)+") {\n\n if ("+d+") {\n dotProd +=\n getX(batch, xR, xC, "+h+") *\n getW(wR, wC, "+h+", d2);\n } else {\n dotProd +=\n getX(batch, "+h+", xR, xC) *\n getW(wR, wC, "+h+", d2);\n }\n\n } else if ("+(2===p)+") {\n vec2 wValues = vec2(\n getW(wR, wC, "+h+", d2),\n getW(wR, wC, "+h+" + 1, d2)\n );\n\n if ("+d+") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, "+h+"),\n getX(batch, xR, xC, "+h+" + 1)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec2 xValues = vec2(\n getX(batch, "+h+", xR, xC),\n getX(batch, "+h+" + 1, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n } else if ("+(3===p)+") {\n vec3 wValues = vec3(\n getW(wR, wC, "+h+", d2),\n getW(wR, wC, "+h+" + 1, d2),\n getW(wR, wC, "+h+" + 2, d2)\n );\n\n if ("+d+") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, "+h+"),\n getX(batch, xR, xC, "+h+" + 1),\n getX(batch, xR, xC, "+h+" + 2)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec3 xValues = vec3(\n getX(batch, "+h+", xR, xC),\n getX(batch, "+h+" + 1, xR, xC),\n getX(batch, "+h+" + 2, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n }\n }\n }\n\n float result = dotProd;\n "+x+"\n "+b+"\n setOutput(result);\n }\n "},$o=function(t){this.variableNames=["x","W"],this.outputShape=t.outShape;var e=t.padInfo.front,n=t.padInfo.top,r=t.padInfo.left,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterDepth,f=t.filterHeight,h=t.filterWidth,p=4*Math.floor(t.inChannels/4),d=t.inChannels%4;this.userCode="\n const ivec3 strides = ivec3("+o+", "+a+", "+i+");\n const ivec3 pads = ivec3("+e+", "+n+", "+r+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d2 = coords.u;\n\n ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xFCorner = xFRCCorner.x;\n int xRCorner = xFRCCorner.y;\n int xCCorner = xFRCCorner.z;\n\n // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n // y(yF, yR, yC, d2). ? = to be determined. : = across all\n // values in that axis.\n float dotProd = 0.0;\n for (int wF = 0; wF < "+l+"; wF++) {\n int xF = xFCorner + wF * "+s+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+f+"; wR++) {\n int xR = xRCorner + wR * "+u+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+h+"; wC++) {\n int xC = xCCorner + wC * "+c+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+p+"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wF, wR, wC, d1, d2),\n getW(wF, wR, wC, d1 + 1, d2),\n getW(wF, wR, wC, d1 + 2, d2),\n getW(wF, wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if ("+(1===d)+") {\n dotProd +=\n getX(batch, xF, xR, xC, "+p+") *\n getW(wF, wR, wC, "+p+", d2);\n } else if ("+(2===d)+") {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, "+p+"),\n getX(batch, xF, xR, xC, "+p+" + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, "+p+", d2),\n getW(wF, wR, wC, "+p+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===d)+") {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, "+p+"),\n getX(batch, xF, xR, xC, "+p+" + 1),\n getX(batch, xF, xR, xC, "+p+" + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, "+p+", d2),\n getW(wF, wR, wC, "+p+" + 1, d2),\n getW(wF, wR, wC, "+p+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n "},Yo=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.outputShape=t.outShape;var o=t.inHeight,a=t.inWidth,i=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,f=t.dilationWidth,h=t.filterHeight,p=t.filterWidth,d=t.outChannels/t.inChannels,v="",m="";n&&(v=r?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n "+n+"\n }":"\n float activation(float x) {\n "+n+"\n }\n ",m="result = activation(result);");var g=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+v+"\n\n const ivec2 strides = ivec2("+u+", "+c+");\n const ivec2 pads = ivec2("+i+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / "+d+";\n int q = d2 - d1 * "+d+";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < "+h+"; wR++) {\n int xR = xRCorner + wR * "+l+";\n\n if (xR < 0 || xR >= "+o+") {\n continue;\n }\n\n for (int wC = 0; wC < "+p+"; wC++) {\n int xC = xCCorner + wC * "+f+";\n\n if (xC < 0 || xC >= "+a+") {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n\n float result = dotProd;\n "+g+"\n "+m+"\n setOutput(result);\n }\n "},Jo=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.outShape;for(var o=t.inHeight,a=t.inWidth,i=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,f=t.dilationWidth,h=t.filterHeight,p=t.filterWidth,d=p,v="int xR; int xC; int xCOffset;",m=0;m<h;m++)for(var g=0;g<p;g++)v+="\n vec4 xTexelR"+m+"C"+2*g+" = vec4(0.);\n vec4 wR"+m+"C"+g+" = vec4(0.);\n vec4 xR"+m+"C"+g+" = vec4(0.);";for(m=0;m<h;m++)for(var y=0;y<d;y++){if(v+="\n xR = xRCorner + "+m*l+";\n xC = xCCorner + "+(g=2*y)*f+";\n ",1===c){if(g<p&&(v+=s%2==1?"\n xCOffset = xC + 1;\n if(xR >= 0 && xR < "+o+" && xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n xCOffset = xC + 1 - 2;\n if(xR >= 0 && xR < "+o+" && xCOffset >= 0 && xCOffset < "+a+") {\n vec4 previous = getX(batch, xR, xCOffset, d1);\n xR"+m+"C"+g+" = vec4(previous.zw, xTexelR"+m+"C"+g+".xy);\n } else {\n xR"+m+"C"+g+" = vec4(0, 0, xTexelR"+m+"C"+g+".xy);\n }\n ":"\n if(xR >= 0 && xR < "+o+" && xC >= 0 && xC < "+a+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n xR"+m+"C"+g+" = xTexelR"+m+"C"+g+";\n ",g+1<p)){var b=s%2==0?x(f):f;f%2==0&&s%2==1||f%2!=0&&s%2!=1?(v+="\n xCOffset = xC + "+s%2+" + "+b+";\n\n if(xR >= 0 && xR < "+o+" &&\n xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xCOffset, d1);\n }\n ",f>1&&(v+="\n xCOffset -= 2;\n if(xR >= 0 && xR < "+o+" &&\n xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n "),v+="\n xR"+m+"C"+(g+1)+" = vec4(\n xTexelR"+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+".xy);\n "):v+="\n xCOffset = xC + "+b+";\n\n if(xR >= 0 && xR < "+o+" &&\n xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xCOffset, d1);\n }\n\n xR"+m+"C"+(g+1)+" = xTexelR"+m+"C"+(g+2)+";\n "}}else g<p&&(v+="\n if(xR >= 0 && xR < "+o+") {\n ",s%2==1?(v+="\n xCOffset = xC + 1 - "+c+";\n if(xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n if(xC + 1 >= 0 && xC + 1 < "+a+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xC + 1, d1);\n } else {\n xTexelR"+m+"C"+(g+2)+" = vec4(0.);\n }\n\n xR"+m+"C"+g+" = vec4(\n xTexelR"+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+".zw);\n ",g+1<p&&(v+="\n vec4 final = vec4(0.);\n xCOffset = xC + 1 + "+c+";\n if(xCOffset >= 0 && xCOffset < "+a+") {\n final = getX(batch, xR, xCOffset, d1);\n }\n xR"+m+"C"+(g+1)+" = vec4(xTexelR"+m+"C"+(g+2)+".xy, final.xy);\n ")):(v+="\n if(xC >= 0 && xC < "+a+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n xCOffset = xC + "+c+";\n if(xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+(g+2)+" = vec4(0.);\n }\n\n xR"+m+"C"+g+" = vec4(\n xTexelR"+m+"C"+g+".xy, xTexelR"+m+"C"+(g+2)+".xy);\n ",g+1<p&&(v+="\n xR"+m+"C"+(g+1)+" = vec4(\n xTexelR"+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+".zw);\n ")),v+="}");g<p&&(v+="\n vec4 wTexelR"+m+"C"+g+" = getW("+m+", "+g+", d1, q);\n wR"+m+"C"+g+" = vec4(wTexelR"+m+"C"+g+".xz, wTexelR"+m+"C"+g+".xz);\n ",g+1<p&&(v+="\n vec4 wTexelR"+m+"C"+(g+1)+" = getW("+m+", "+(g+1)+", d1, q);\n wR"+m+"C"+(g+1)+" =\n vec4(wTexelR"+m+"C"+(g+1)+".xz, wTexelR"+m+"C"+(g+1)+".xz);"))}for(m=0;m<h;m++)for(g=0;g<p;g++)v+="dotProd += xR"+m+"C"+g+" * wR"+m+"C"+g+";";var w="",E="";n&&(w=r?"vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n "+n+"\n }":"vec4 activation(vec4 x) {\n "+n+"\n }",E="result = activation(result);");var C=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+w+"\n\n const ivec2 strides = ivec2("+u+", "+c+");\n const ivec2 pads = ivec2("+i+", "+s+");\n\n void main() {\n\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2;\n int q = 0;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n vec4 dotProd = vec4(0.);\n\n "+v+"\n\n vec4 result = dotProd;\n "+C+"\n "+E+"\n setOutput(result);\n }\n "},Qo=function(t,e,n,r,o){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var a=t[0],i=t[1],s=t[2],u=t[3],c=e[0],l=n[0],f=n[1];this.outputShape=[c,l,f,u];var h="bilinear"===r?1:0,p=[i-1+".0",s-1+".0"],d=p[0],v=p[1],m=l>1?[""+(i-1)/(l-1),"(y2-y1) * height_ratio","y1*"+d+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+d],g=m[0],y=m[1],b=m[2],x=f>1?[""+(s-1)/(f-1),"(x2-x1) * width_ratio","x1*"+v+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+v],w=x[0],E=x[1],C=x[2];this.userCode="\n const float height_ratio = float("+g+");\n const float width_ratio = float("+w+");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= "+a+") {\n return;\n }\n\n float height_scale = "+y+";\n float width_scale = "+E+";\n\n float in_y = "+b+";\n if( in_y < 0.0 || in_y > "+d+" ) {\n setOutput(float("+o+"));\n return;\n }\n float in_x = "+C+";\n if( in_x < 0.0 || in_x > "+v+" ) {\n setOutput(float("+o+"));\n return;\n }\n\n vec2 sourceFracIndexCR = vec2(in_x,in_y);\n if("+h+" == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\n ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\n\n float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\n float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\n float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\n float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\n\n vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n\n float top = topLeft + (topRight - topLeft) * fracCR.x;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n float newValue = top + (bottom - top) * fracCR.y;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestCR = ivec2(floor(\n sourceFracIndexCR + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\n setOutput(newValue);\n }\n }\n "},Zo=function(t,e,n){this.variableNames=["x"],this.outputShape=t;var r=t.length,o=t[t.length-1],a=n?"<":">";this.userCode="\n int getIndex(int i) {\n "+(n?"return "+o+" -i - 1;":"return i;")+"\n }\n\n void main() {\n "+xo(r)+" coords = getOutputCoords();\n int end = "+ta(r,"coords")+";\n float val = 0.0;\n for (int i = "+o+" - 1; i >= 0; i -= 1) {\n int idx = getIndex(i);\n if (idx "+a+" end) {\n continue;\n }\n if (idx == end && "+e+") {\n continue;\n }\n "+ta(r,"coords")+" = idx;\n val += getX("+function(t,e){if(1===t)return""+e;if(2===t)return e+".x, "+e+".y";if(3===t)return e+".x, "+e+".y, "+e+".z";if(4===t)return e+".x, "+e+".y, "+e+".z, "+e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}(r,"coords")+");\n }\n setOutput(val);\n }\n "};function ta(t,e){if(1===t)return""+e;if(2===t)return e+".y";if(3===t)return e+".z";if(4===t)return e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}var ea=function(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=Nt.DENSE;var e=jt(t),n=uo();this.outputShape=t,this.userCode="\n ivec3 outCoordsFromFlatIndex(int index) {\n "+co(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = 4 * (resTexRC.x * "+e[1]+" + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getA(rc.x, rc.y, rc.z);\n }\n\n "+n.output+" = result;\n }\n "},na=function(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=Nt.DENSE;var e=jt(t),n=uo();this.outputShape=t,this.userCode="\n ivec3 outCoordsFromFlatIndex(int index) {\n "+co(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = 4 * (resTexRC.x * "+e[1]+" + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\n }\n\n "+n.output+" = result;\n }\n "},ra=function(){function t(t,e,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=n,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = "+this.getHeightCoordString()+";\n int w = "+this.getWidthCoordString()+";\n int d = "+this.getDepthCoordString()+";\n\n int in_h = h / "+e+";\n int offset_h = imod(h, "+e+");\n int in_w = w / "+e+";\n int offset_w = imod(w, "+e+");\n int offset_d = (offset_h * "+e+" + offset_w) *\n "+this.getOutputDepthSize()+";\n int in_d = d + offset_d;\n\n float result = "+this.getInputSamplingString()+";\n setOutput(result);\n }\n "}return t.prototype.getHeightCoordString=function(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"},t.prototype.getWidthCoordString=function(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"},t.prototype.getDepthCoordString=function(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"},t.prototype.getOutputDepthSize=function(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},t.prototype.getInputSamplingString=function(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},t}(),oa=function(t){this.variableNames=["X"],this.outputShape=[t,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\n setOutput(val);\n }\n "},aa=function(t){this.variableNames=["A"],this.outTexUsage=Ft.DOWNLOAD;var e=uo();this.outputShape=t,this.userCode="\n "+fo+"\n\n void main() {\n float x = getAAtOutCoords();\n "+e.output+" = encode_float(x);\n }\n "},ia=function(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Ft.DOWNLOAD;var e=uo();this.outputShape=t,this.userCode="\n "+fo+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\n "+e.output+" = encode_float(x);\n }\n "},sa=function(t,e,n){void 0===n&&(n=!1),this.variableNames=["A"];var r=uo(),o=e[0],a=e[1];this.outputShape=t;var i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode="\n "+lo(t)+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n int flatIndex = getFlatIndex(coords);\n int offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n \n int r = flatIndex / "+a+";\n int c = imod(flatIndex, "+a+");\n vec2 uv = (vec2(c, r) + halfCR) / vec2("+a+".0, "+o+".0);\n vec4 values = "+r.texture2D+"(A, uv);\n\n float result;\n\n if(offset == 0) {\n result = values[0];\n } else if(offset == 1) {\n result = values[1];\n } else if(offset == 2) {\n result = values[2];\n } else {\n result = values[3];\n }\n\n "+r.output+" = vec4("+i+", 0., 0., 0.);\n }\n "},ua=function(t,e,n){void 0===n&&(n=!1),this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var r=uo(),o=e[0],a=e[1];this.outputShape=t;var i="",s="result";n&&(s="floor(result * 255. + 0.5)");for(var u=0;u<=1;u++)for(var c=0;c<=1;c++){var l=2*u+c;i+="\n localCoords = coords;\n if(localCoords[2] + "+c+" < "+t[2]+") {\n localCoords[2] += "+c+";\n if(localCoords[1] + "+u+" < "+t[1]+") {\n localCoords[1] += "+u+";\n\n flatIndex = getFlatIndex(localCoords);\n offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n\n r = flatIndex / "+a+";\n c = imod(flatIndex, "+a+");\n uv = (vec2(c, r) + halfCR) / vec2("+a+".0, "+o+".0);\n values = "+r.texture2D+"(A, uv);\n\n if(offset == 0) {\n result["+l+"] = values[0];\n } else if(offset == 1) {\n result["+l+"] = values[1];\n } else if(offset == 2) {\n result["+l+"] = values[2];\n } else {\n result["+l+"] = values[3];\n }\n }\n }\n "}this.userCode="\n "+lo(t)+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n vec4 result = vec4(0.);\n int flatIndex, r, c, offset;\n ivec3 localCoords;\n vec2 uv;\n vec4 values;\n\n "+i+"\n\n "+r.output+" = "+s+";\n }\n "},ca=function(t,e,n){this.variableNames=["real","imag"];var r=e[1];this.outputShape=e;var o=n?"2.0 * "+Math.PI:"-2.0 * "+Math.PI,a=n?r+".0":"1.0";this.userCode="\n const float exponentMultiplier = "+o+";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n "+t+"\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float("+r+");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < "+r+"; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / "+a+";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n "},la=function(){function t(t,e){this.outputShape=[],this.variableNames=["x"],this.outputShape=t,this.userCode="\n uniform float value;\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.valueLoc&&(e.valueLoc=n.getUniformLocationNoThrow(r,"value")),n.gl.uniform1f(e.valueLoc,t)}},t}(),fa=function(t,e,n){this.variableNames=["A","indices"];var r=t.slice();r[n]=e,this.outputShape=r,this.rank=r.length;var o=xo(this.rank),a=function(t,e){var n=t.length;if(n>4)throw Error("Gather for rank "+n+" is not yet supported");if(1===n)return"int(getIndices(resRC))";for(var r=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],a=0;a<t.length;a++)a===e?o.push("int(getIndices("+r[a]+"))"):o.push(""+r[a]);return o.join()}(t,n);this.userCode="\n void main() {\n "+o+" resRC = getOutputCoords();\n setOutput(getA("+a+"));\n }\n "},ha=function(t,e,n){this.sliceDim=t,this.strides=e,this.variableNames=["x","indices"],this.outputShape=n;var r=xo(e.length),o=xo(n.length),a=this.sliceDim>1?"strides[j]":"strides";this.userCode="\n "+r+" strides = "+r+"("+this.strides+");\n void main() {\n "+o+" coords = getOutputCoords();\n int flattenIndex = 0;\n for (int j = 0; j < "+this.sliceDim+"; j++) {\n int index = round(getIndices(coords[0], j));\n flattenIndex += index * "+a+";\n }\n setOutput(getX(flattenIndex, coords[1]));\n }\n "};function pa(t,e){var n=uo();return Xt(t,e,n.version+"\n precision highp float;\n "+n.attribute+" vec3 clipSpacePos;\n "+n.attribute+" vec2 uv;\n "+n.varyingVs+" vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function da(t,e){return ne(t,e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function va(t,e){return re(t,e,new Uint16Array([0,1,2,2,1,3]))}function ma(t,e,n,r,o,a,i){ae(n,r);var s=oe(t,e),u=t.TEXTURE_2D;return Gt(t,e,(function(){return t.bindTexture(u,s)})),Gt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE)})),Gt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)})),Gt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MIN_FILTER,t.NEAREST)})),Gt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MAG_FILTER,t.NEAREST)})),Gt(t,e,(function(){return t.texImage2D(u,0,o,n,r,0,a,i,null)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)})),s}function ga(t,e,n,r,o){var a=Ut(n,r);return ma(t,e,a[0],a[1],o.internalFormatFloat,o.textureFormatFloat,t.FLOAT)}function ya(t,e,n,r,o){var a=Ut(n,r);return ma(t,e,a[0],a[1],o.internalFormatHalfFloat,o.textureFormatFloat,o.textureTypeHalfFloat)}function ba(t,e,n,r,o){var a=Ut(n,r);return ma(t,e,a[0],a[1],t.RGBA,t.RGBA,t.UNSIGNED_BYTE)}function xa(t,e,n,r,o){var a=zt(n,r);return ma(t,e,a[0],a[1],o.internalFormatPackedFloat,t.RGBA,t.FLOAT)}function wa(t,e,n,r,o){var a=zt(n,r);return ma(t,e,a[0],a[1],o.internalFormatPackedHalfFloat,t.RGBA,o.textureTypeHalfFloat)}function Ea(t,e,n,r){return Gt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,r)})),se(t,e,n,"clipSpacePos",r,3,20,0)&&se(t,e,n,"uv",r,2,20,12)}function Ca(t,e,n,r,o,a,i){var s,u,c;Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),a instanceof Uint8Array?(s=new Uint8Array(r*o*4),u=t.UNSIGNED_BYTE,c=t.RGBA):(s=new Float32Array(r*o*4),u=t.FLOAT,c=i.internalFormatPackedFloat),s.set(a),Gt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,c,r,o,0,t.RGBA,u,s)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))}function _a(t,e,n,r){Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),r.data instanceof Uint8Array?Gt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,r.width,r.height,0,t.RGBA,t.UNSIGNED_BYTE,r.data)})):Gt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)})),Gt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}))}function ka(t,e,n,r,o){var a=t.createBuffer();Gt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,a)}));var i=16*n*r;return Gt(t,e,(function(){return t.bufferData(t.PIXEL_PACK_BUFFER,i,t.STREAM_READ)})),Gt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,0)})),Gt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,null)})),a}function Ra(t,e,n){var r=t,o=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,e),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,o),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),o}function Ia(t,e,n,r,o){var a=Ut(n,r),i=a[0],s=a[1],u=new Uint8Array(n*r*4);return Gt(t,e,(function(){return t.readPixels(0,0,i,s,o.downloadTextureFormat,t.UNSIGNED_BYTE,u)})),new Float32Array(u.buffer)}function Sa(t,e,n,r,o,a,i,s){var u=t,c=new Float32Array(function(t,e){var n=zt(t,e);return n[0]*n[1]*4}(a,i));return u.bindBuffer(u.PIXEL_PACK_BUFFER,e),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,c),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),c}function Aa(t,e,n,r){var o=new Float32Array(n*r*4);return Gt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,o)})),o}var Oa=Object.freeze({createVertexShader:pa,createVertexBuffer:da,createIndexBuffer:va,createFloat32MatrixTexture:ga,createFloat16MatrixTexture:ya,createUnsignedBytesMatrixTexture:ba,createPackedMatrixTexture:xa,createFloat16PackedMatrixTexture:wa,bindVertexProgramAttributeStreams:Ea,uploadDenseMatrixToTexture:Ca,uploadPixelDataToTexture:_a,createBufferFromOutputTexture:ka,downloadFloat32MatrixFromBuffer:Ra,downloadByteEncodedFloatMatrixFromOutputTexture:Ia,downloadPackedMatrixFromBuffer:Sa,downloadMatrixFromPackedOutputTexture:Aa}),Ta=function(){function t(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=f().getNumber("WEBGL_VERSION");null!=t?(this.gl=t,Lt(e,t)):this.gl=Wt(e);var n="WEBGL_color_buffer_float";if(1===f().getNumber("WEBGL_VERSION")){if(this.textureFloatExtension=Kt(this.gl,this.debug,"OES_texture_float"),Ie(this.gl,"OES_texture_half_float"))this.textureHalfFloatExtension=Kt(this.gl,this.debug,"OES_texture_half_float");else if(f().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Ie(this.gl,"EXT_color_buffer_half_float"))this.colorBufferHalfFloatExtension=Kt(this.gl,this.debug,"EXT_color_buffer_half_float");else if(f().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",Ie(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else{if(!Ie(this.gl,"EXT_color_buffer_half_float"))throw new Error("GL context does not support color renderable floats");this.colorBufferHalfFloatExtension=this.gl.getExtension("EXT_color_buffer_half_float")}this.vertexBuffer=da(this.gl,this.debug),this.indexBuffer=va(this.gl,this.debug),this.framebuffer=ie(this.gl,this.debug),this.textureConfig=Vt(this.gl,this.textureHalfFloatExtension)}return Object.defineProperty(t.prototype,"debug",{get:function(){return f().getBool("DEBUG")},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){var t=this;if(!this.disposed){this.program,this.outputTexture;var e=this.gl;Gt(e,this.debug,(function(){return e.finish()})),Gt(e,this.debug,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)})),Gt(e,this.debug,(function(){return e.deleteFramebuffer(t.framebuffer)})),Gt(e,this.debug,(function(){return e.bindBuffer(e.ARRAY_BUFFER,null)})),Gt(e,this.debug,(function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)})),Gt(e,this.debug,(function(){return e.deleteBuffer(t.indexBuffer)})),this.disposed=!0}},t.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),ga(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),ya(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),ba(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),_a(this.gl,this.debug,t,e)},t.prototype.uploadDenseMatrixToTexture=function(t,e,n,r){this.throwIfDisposed(),Ca(this.gl,this.debug,t,e,n,r,this.textureConfig)},t.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),wa(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),xa(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(pe(this.gl,this.debug,this.framebuffer),this.outputTexture=null),Gt(this.gl,this.debug,(function(){return e.gl.deleteTexture(t)}))},t.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return Ia(r.gl,r.debug,e,n,r.textureConfig)}))},t.prototype.downloadPackedMatrixFromBuffer=function(t,e,n,r,o,a){return Sa(this.gl,t,0,0,0,o,a,this.textureConfig)},t.prototype.downloadFloat32MatrixFromBuffer=function(t,e){return Ra(this.gl,t,e)},t.prototype.createBufferFromTexture=function(t,e,n){this.bindTextureToFrameBuffer(t);var r=ka(this.gl,this.debug,e,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r},t.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},t.prototype.createFence=function(t){var e,n,r=this;if(f().getBool("WEBGL_FENCE_API_ENABLED")){var o=t,a=o.fenceSync(o.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),n=function(){var t=o.clientWaitSync(a,0,0);return t===o.ALREADY_SIGNALED||t===o.CONDITION_SATISFIED},e=a}else f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(e=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(e,f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return!0};return{query:e,isFencePassed:n}},t.prototype.downloadMatrixFromPackedTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return Aa(r.gl,r.debug,e,n)}))},t.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,n=$t(e,this.debug,t),r=pa(e,this.debug),o=Zt(e,this.debug);return Gt(e,this.debug,(function(){return e.attachShader(o,r)})),Gt(e,this.debug,(function(){return e.attachShader(o,n)})),te(e,this.debug,o),this.debug&&ee(e,this.debug,o),this.vertexAttrsAreBound||(this.setProgram(o),this.vertexAttrsAreBound=Ea(e,this.debug,this.program,this.vertexBuffer)),o},t.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),null!=t&&Gt(this.gl,this.debug,(function(){return e.gl.deleteProgram(t)}))},t.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,null!=this.program&&this.debug&&ee(this.gl,this.debug,this.program),Gt(this.gl,this.debug,(function(){return e.gl.useProgram(t)}))},t.prototype.getUniformLocation=function(t,e,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?ce(this.gl,this.debug,t,e):le(this.gl,t,e)},t.prototype.getAttributeLocation=function(t,e){var n=this;return this.throwIfDisposed(),Gt(this.gl,this.debug,(function(){return n.gl.getAttribLocation(t,e)}))},t.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},t.prototype.setInputMatrixTexture=function(t,e,n){this.throwIfDisposed(),this.throwIfNoProgram(),fe(this.gl,this.debug,this.program,t,e,n)},t.prototype.setOutputMatrixTexture=function(t,e,n){this.setOutputMatrixTextureDriver(t,n,e)},t.prototype.setOutputPackedMatrixTexture=function(t,e,n){this.throwIfDisposed();var r=zt(e,n),o=r[0],a=r[1];this.setOutputMatrixTextureDriver(t,o,a)},t.prototype.setOutputMatrixWriteRegion=function(t,e,n,r){this.setOutputMatrixWriteRegionDriver(n,t,r,e)},t.prototype.setOutputPackedMatrixWriteRegion=function(t,e,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},t.prototype.debugValidate=function(){null!=this.program&&ee(this.gl,this.debug,this.program),de(this.gl)},t.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),Gt(t,this.debug,(function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)}))},t.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),Gt(this.gl,this.debug,(function(){return t.gl.finish()}))},t.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=Kt(this.gl,this.debug,2===f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},t.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},t.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},t.prototype.beginQuery=function(){if(2===f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),o=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,o),o},t.prototype.endQuery=function(){if(2!==f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT)}else{var e=this.gl,n=this.getQueryTimerExtensionWebGL2();e.endQuery(n.TIME_ELAPSED_EXT)}},t.prototype.waitForQueryAndGetTime=function(t){return u(this,void 0,void 0,(function(){var e=this;return c(this,(function(n){switch(n.label){case 0:return[4,D((function(){return e.disposed||e.isQueryAvailable(t,f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}))];case 1:return n.sent(),[2,this.getQueryTime(t,f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}}))}))},t.prototype.getQueryTime=function(t,e){if(0===e)return null;if(2===e){var n=this.gl;return n.getQueryParameter(t,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(t,r.QUERY_RESULT_EXT)/1e6},t.prototype.isQueryAvailable=function(t,e){if(0===e)return!0;if(2===e){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),o=n.getQueryParameter(t,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint}return o=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(t,r.QUERY_RESULT_AVAILABLE_EXT),null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint},t.prototype.pollFence=function(t){var e=this;return new Promise((function(n){e.addItemToPoll((function(){return t.isFencePassed()}),(function(){return n()}))}))},t.prototype.pollItems=function(){for(var t=function(t){for(var e=0;e<t.length;++e){if(!t[e]())break}return e-1}(this.itemsToPoll.map((function(t){return t.isDoneFn}))),e=0;e<=t;++e)(0,this.itemsToPoll[e].resolveFn)();this.itemsToPoll=this.itemsToPoll.slice(t+1)},t.prototype.addItemToPoll=function(t,e){var n=this;this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1||D((function(){return n.pollItems(),0===n.itemsToPoll.length}))},t.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),he(this.gl,this.debug,t,this.framebuffer),this.debug&&de(this.gl)},t.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(he(this.gl,this.debug,this.outputTexture,this.framebuffer),this.debug&&de(this.gl)):pe(this.gl,this.debug,this.framebuffer)},t.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var n=e();return this.unbindTextureToFrameBuffer(),n},t.prototype.setOutputMatrixTextureDriver=function(t,e,n){this.throwIfDisposed();var r=this.gl;he(r,this.debug,t,this.framebuffer),this.debug&&de(r),this.outputTexture=t,Gt(r,this.debug,(function(){return r.viewport(0,0,e,n)})),Gt(r,this.debug,(function(){return r.scissor(0,0,e,n)}))},t.prototype.setOutputMatrixWriteRegionDriver=function(t,e,n,r){var o=this;this.throwIfDisposed(),Gt(this.gl,this.debug,(function(){return o.gl.scissor(t,e,n,r)}))},t.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},t.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},t}();function Da(t,e){if(t.length!==e.length)throw Error("Binary was compiled with "+t.length+" inputs, but was executed with "+e.length+" inputs");t.forEach((function(t,n){var r=t.logicalShape,o=e[n],a=o.shape;if(!I(r,a))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+a+" must match");if(!t.isUniform||!o.isUniform){var i=t.texShape,s=o.isUniform?null:o.texData.texShape;if(!I(i,s))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+i+" and "+s+" must match")}}))}var Na=function(t,e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var r=n.filterWidth,o=n.inChannels,a=n.strideWidth,i=n.strideHeight,s=n.padInfo,u=n.outWidth,c=n.dilationWidth,l=n.dilationHeight,f=n.dataFormat,h=s.left,p=s.top,d=o*r,v=uo(),m="channelsLast"===f,g=m?0:1,y=m?1:2,b="",x=0;x<=1;x++)for(var w=0;w<=1;w++)b+="\n blockIndex = rc.y + "+w+";\n pos = rc.x + "+x+";\n\n if(blockIndex < "+t[1]+" && pos < "+t[0]+") {\n offsetY = int(blockIndex / ("+u+")) * "+i+" - "+p+";\n d0 = offsetY + "+l+" * (pos / "+d+");\n\n if(d0 < "+e[g]+" && d0 >= 0) {\n\n offsetX = int(mod(float(blockIndex), "+u+".) * "+a+". - "+h+".);\n d1 = offsetX + "+c+" * (int(mod(float(pos), "+d+".) / "+o+".));\n\n if(d1 < "+e[y]+" && d1 >= 0) {\n\n ch = int(mod(float(pos), "+o+".));\n\n if ("+m+") {\n innerDims = vec2(d1, ch);\n result["+(2*x+w)+"] = getChannel(\n getA(d0, int(innerDims.x),\n int(innerDims.y)), innerDims);\n } else {\n innerDims = vec2(d0, d1);\n result["+(2*x+w)+"] = getChannel(\n getA(ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n }\n ";this.userCode="\n void main() {\n ivec2 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n\n "+b+"\n\n "+v.output+" = result;\n }\n "},Fa=function(t,e,n,r,o){this.variableNames=["x"],this.outputShape=[];var a,i=e,s=t[3]-1;this.outputShape=t;var u="float("+n+") + float("+r+") * sum";a=.5===o?"inversesqrt("+u+")":1===o?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -"+i+"; j <= "+i+"; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= "+s+") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * "+a+";\n setOutput(val);\n }\n "},Ma=function(t,e,n,r,o){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=t,this.depth=t[3],this.depthRadius=e,this.bias=n,this.alpha=r,this.beta=o,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < "+this.depth+"; ++d) {\n int depthBegin = int(max(0.0, float(d - "+e+")));\n int depthEnd = int(min(float("+this.depth+"),\n float(d + "+e+" + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = "+this.depth+";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float("+r+") * norm + float("+n+");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float("+r+")\n * float("+o+")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * "+o+");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n "},Pa=function(t,e,n,r,o){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;var a,i=e,s=t[3]-1;this.outputShape=t;var u="float("+n+") + float("+r+") * sum";a=.5===o?"inversesqrt("+u+")":1===o?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords.x;\n int r = coords.y;\n int c = coords.z;\n int d = coords.w;\n\n bool hasNextCol = d < "+this.outputShape[3]+";\n bool hasNextRow = c < "+this.outputShape[2]+";\n\n vec4 sum = vec4(0.);\n vec4 xFragAtOutputCoords = getX(b, r, c, d);\n\n vec4 xAtOutputCoords = vec4(\n getChannel(xFragAtOutputCoords, vec2(c, d)),\n hasNextCol ?\n getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\n hasNextRow ?\n getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\n (hasNextRow && hasNextCol) ?\n getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\n );\n\n int firstChannel = d - "+i+";\n vec2 cache = vec2(0.);\n if(firstChannel >= 0){\n vec4 firstChannelFrag = getX(b, r, c, firstChannel);\n cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\n if(hasNextRow){\n cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\n }\n }\n\n ivec2 depth = ivec2(d, d + 1);\n for (int j = - "+i+"; j <= "+i+"; j++) {\n ivec2 idx = depth + j;\n bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n bvec2 belowUpperBound = lessThanEqual(idx, ivec2("+s+"));\n\n bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\n bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\n\n if(depthInRange || depthPlusOneInRange){\n vec4 z = vec4(0.);\n vec4 xFragAtCurrentDepth;\n z.xz = cache.xy;\n if(depthPlusOneInRange && hasNextCol){\n xFragAtCurrentDepth = idx.y != d ?\n getX(b, r, c, idx.y) : xFragAtOutputCoords;\n z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\n if(hasNextRow){\n z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\n }\n }\n cache.xy = z.yw;\n sum += z * z;\n }\n }\n vec4 result = xAtOutputCoords * "+a+";\n setOutput(result);\n }\n "},Ba=function(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;var e=t.strideHeight,n=t.strideWidth,r=t.dilationHeight,o=t.effectiveFilterHeight,a=t.effectiveFilterWidth,i=o-1-t.padInfo.top,s=a-1-t.padInfo.left,u=o*a-1;this.userCode="\n const ivec2 pads = ivec2("+i+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < "+o+";\n wR += "+r+") {\n float dyR = float(dyRCorner + wR) / "+e+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+a+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+n+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = "+u+" - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * "+a+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n "},La=function(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.dilationDepth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterDepth,u=t.effectiveFilterHeight,c=t.effectiveFilterWidth,l=s-1-t.padInfo.front,f=u-1-t.padInfo.top,h=c-1-t.padInfo.left,p=s*u*c-1;this.userCode="\n const ivec3 pads = ivec3("+l+", "+f+", "+h+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < "+s+";\n wD += "+o+") {\n float dyD = float(dyDCorner + wD) / "+e+".0;\n\n if (dyD < 0.0 || dyD >= "+t.outDepth+".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < "+u+";\n wR += "+a+") {\n float dyR = float(dyRCorner + wR) / "+n+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+c+";\n wC += "+i+") {\n float dyC = float(dyCCorner + wC) / "+r+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n int maxPosValue = "+p+" -\n int(getMaxPos(batch, idyD, idyR, idyC, ch));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue =\n wD * "+u+" * "+c+" +\n wR * "+c+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n }\n setOutput(dotProd);\n }\n "},Wa=function(t,e,n,r,o,a,i){void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===a&&(a=null),void 0===i&&(i=!1),this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;var s=n?t[1]:t[2],u=Math.ceil(s/2),c=n?"i * 2, rc.y":"rc.y, i * 2",l=r?"rc.z, i * 2":"i * 2, rc.z",f=n?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],h=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],p="",d="";a&&(p=i?"vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n "+a+"\n }":"vec4 activation(vec4 x) {\n "+a+"\n }",d="result = activation(result);");var v=o?"result += getBiasAtOutCoords();":"";o&&this.variableNames.push("bias"),i&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+p+"\n\n const float sharedDimension = "+u+".0;\n\n vec4 dot2x2ARowBCol(ivec3 rc) {\n vec4 result = vec4(0);\n for (int i = 0; i < "+u+"; i++) {\n vec4 a = getMatrixA(rc.x, "+c+");\n vec4 b = getMatrixB(rc.x, "+l+");\n\n // These swizzled products need to be separately added.\n // See: https://github.com/tensorflow/tfjs/issues/1735\n result += ("+f[0]+" * "+h[0]+");\n result += ("+f[1]+" * "+h[1]+");\n }\n return result;\n }\n\n void main() {\n ivec3 rc = getOutputCoords();\n vec4 result = dot2x2ARowBCol(rc);\n\n "+v+"\n\n "+d+"\n\n setOutput(result);\n }\n "},Ua=function(){function t(t,e,n){this.variableNames=["probs"],this.outputShape=[t,n],this.userCode="\n uniform float seed;\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < "+(e-1)+"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float("+(e-1)+"));\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.seedLoc&&(e.seedLoc=n.getUniformLocation(r,"seed")),n.gl.uniform1f(e.seedLoc,t)}},t}(),ja=function(t,e,n,r){this.variableNames=["indices"],this.outputShape=[t,e],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float("+r+"), float("+n+"),\n float(index == coords.y)));\n }\n "},za=function(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=t;var e=t.length;if(0===e)this.userCode="\n void main() {\n setOutput(vec4(getA(), 0., 0., 0.));\n }\n ";else{var n=so("rc",e),r=xo(e),o=function(t,e,n){if(1===t)return"rc > "+e[0];for(var r="",o=t-2;o<t;o++)r+=n[o]+" >= "+e[o],o<t-1&&(r+="||");return r}(e,t,n),a=function(t,e,n,r){if(1===t)return"";var o=r.slice(-2);return"\n int r = "+o[0]+";\n int c = "+o[1]+";\n int rp1 = r + 1;\n int cp1 = c + 1;\n\n bool cEdge = cp1 >= "+e+";\n bool rEdge = rp1 >= "+n+";\n "}(e,t[t.length-1],t[t.length-2],n),i=function(t,e){var n=t.length,r=function(t,e){for(var n=[],r=0;r<=1;r++)for(var o=0;o<=1;o++){for(var a=(0===r?"r":"rp1")+", "+(0===o?"c":"cp1"),i=2;i<t;i++)a=e[e.length-1-i]+","+a;n.push(a)}return n}(n,e);return 1===n?"getA(rc),\n rc + 1 >= "+t[0]+" ? 0. : getA(rc + 1),\n 0, 0":"getA("+r[0]+"),\n cEdge ? 0. : getA("+r[1]+"),\n rEdge ? 0. : getA("+r[2]+"),\n rEdge || cEdge ? 0. : getA("+r[3]+")"}(t,n);this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n\n if("+o+") {\n setOutput(vec4(0));\n } else {\n "+a+"\n\n setOutput(vec4("+i+"));\n }\n }\n "}},Va=function(t,e,n){this.variableNames=["x"],this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));var r=t.length,o=xo(r),a=e.map((function(t){return t[0]})).join(","),i=e.map((function(e,n){return e[0]+t[n]})).join(","),s=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);this.userCode=1!==r?"\n "+o+" start = "+o+"("+a+");\n "+o+" end = "+o+"("+i+");\n\n void main() {\n "+o+" outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(float("+n+"));\n } else {\n "+o+" coords = outC - start;\n setOutput(getX("+s+"));\n }\n }\n ":"\n int start = "+a+";\n int end = "+i+";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(float("+n+"));\n } else {\n setOutput(getX(outC - start));\n }\n }\n "},Ga=function(t,e,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));for(var r=t.length,o=xo(r),a=e.map((function(t){return t[0]})).join(","),i=e.map((function(e,n){return e[0]+t[n]})).join(","),s=so("rc",r),u=so("source",r),c=s[r-1]+" < "+this.outputShape[r-1],l=1===r?"source":"vec2("+u.slice(-2).join()+")",f=[o+" rc = outputLoc;",s[r-1]+" += 1;\n if("+c+") {\n ",1===r?"":"}\n rc = outputLoc;\n "+s[r-2]+" += 1;\n if("+s[r-2]+" < "+this.outputShape[r-2]+") {",1===r?"":" "+s[r-1]+" += 1;\n if("+c+") {"],h=1===r?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",p="",d=0,v=1===r?2:4;d<v;d++)p+="\n "+f[d]+"\n if ("+h+") {\n result["+d+"] = float("+n+");\n } else {\n "+o+" source = rc - start;\n result["+d+"] = getChannel(getX("+u.join()+"), "+l+");\n }\n ";p+=1===r?"} ":"}}",this.userCode="\n const "+o+" start = "+o+"("+a+");\n const "+o+" end = "+o+"("+i+");\n\n void main() {\n "+o+" outputLoc = getOutputCoords();\n vec4 result = vec4(0.);\n "+p+"\n setOutput(result);\n }\n "},Ha=function(t,e,n){if(this.variableNames=["x"],"avg"===e&&n)throw new Error("Cannot compute positions for average pool.");var r=t.filterWidth,o=t.strideHeight,a=t.strideWidth,i=t.dilationHeight,s=t.dilationWidth,u=t.effectiveFilterHeight,c=t.effectiveFilterWidth,l=t.padInfo.top,f=t.padInfo.left;this.outputShape=t.outShape;var h="avg"===e,p="0.0";if(h||(p="-1.0 / 1e-20"),n)this.userCode="\n const ivec2 strides = ivec2("+o+", "+a+");\n const ivec2 pads = ivec2("+l+", "+f+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+i+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+c+";\n wC += "+s+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = wR * "+c+" + wC;\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var d=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===e&&(d="avgValue / count");var v=4*Math.floor(r/4),m=r%4,g="\n if ("+h+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec2 strides = ivec2("+o+", "+a+");\n const ivec2 pads = ivec2("+l+", "+f+");\n const float initializationValue = "+p+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= "+t.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4("+p+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+i+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+v+"; wC += 4) {\n int xC = xCCorner + wC * "+s+";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n getValue(batch, xR, xC + 3 * "+s+", d)\n );\n\n "+g+"\n }\n\n int xC = xCCorner + "+v+";\n if ("+(1===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+g+"\n } else if ("+(2===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n initializationValue,\n initializationValue\n );\n\n "+g+"\n } else if ("+(3===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n initializationValue\n );\n\n "+g+"\n }\n }\n setOutput("+d+");\n }\n "}},qa=function(t,e,n){if(this.variableNames=["x"],"avg"===e&&n)throw new Error("Cannot compute positions for average pool.");var r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterDepth,f=t.effectiveFilterHeight,h=t.effectiveFilterWidth,p=t.padInfo.front,d=t.padInfo.top,v=t.padInfo.left;this.outputShape=t.outShape;var m="avg"===e,g="0.0";if(m||(g="-1.0 / 1e-20"),n)this.userCode="\n const ivec3 strides =\n ivec3("+o+", "+a+", "+i+");\n const ivec3 pads = ivec3("+p+", "+d+", "+v+");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n\n for (int wD = 0; wD < "+l+";\n wD += "+s+") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+f+";\n wR += "+u+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+h+";\n wC += "+c+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n float value = getX(batch, xD, xR, xC, ch);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition =\n wD * "+f+" * "+h+" +\n wR * "+h+" + wC;;\n }\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else{var y=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===e&&(y="avgValue / count");var b=4*Math.floor(r/4),x=r%4,w="\n if ("+m+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec3 strides =\n ivec3("+o+", "+a+", "+i+");\n const ivec3 pads = ivec3("+p+", "+d+", "+v+");\n const float initializationValue = "+g+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xD, int xR, int xC, int ch) {\n if (xC < 0 || xC >= "+t.inWidth+") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xD, xR, xC, ch);\n }\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\n // ? = to be determined\n vec4 minMaxValue = vec4("+g+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wD = 0; wD < "+l+";\n wD += "+s+") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+f+";\n wR += "+u+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+b+"; wC += 4) {\n int xC = xCCorner + wC * "+c+";\n\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+c+", ch),\n getValue(batch, xD, xR, xC + 2 * "+c+", ch),\n getValue(batch, xD, xR, xC + 3 * "+c+", ch)\n );\n\n "+w+"\n }\n\n int xC = xCCorner + "+b+";\n if ("+(1===x)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+w+"\n } else if ("+(2===x)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+c+", ch),\n initializationValue,\n initializationValue\n );\n\n "+w+"\n } else if ("+(3===x)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+c+", ch),\n getValue(batch, xD, xR, xC + 2 * "+c+", ch),\n initializationValue\n );\n\n "+w+"\n }\n }\n setOutput("+y+");\n }\n }\n "}},Ka=function(t,e){this.variableNames=["x"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=Math.ceil(o/n);this.outputShape=[r,a];var i="0.0",s="";"prod"===e?i="1.0":"min"===e?(i="1.0 / 1e-20",s="min"):"max"===e&&(i="-1.0 / 1e-20",s="max");var u=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"sum"===e?u="sumValue":"prod"===e?u="prodValue":"all"===e?u="allValue":"any"===e&&(u="anyValue");var c=4*Math.floor(n/4),l=n%4,f="\n if ("+("sum"===e)+") {\n sumValue += dot(values, ones);\n } else if ("+("prod"===e)+") {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = "+s+"(values, minMaxValue);\n }\n ",h="vec4";"all"===e?(i="1.0",f="\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n ",h="bvec4"):"any"===e&&(i="0.0",f="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",h="bvec4");var p="";o%n>0&&(p="\n if (inIdx < 0 || inIdx >= "+o+") {\n return initializationValue;\n }\n "),this.userCode="\n const float initializationValue = "+i+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n "+p+"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * "+n+";\n\n vec4 minMaxValue = vec4("+i+");\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < "+c+"; i += 4) {\n int inIdx = inOffset + i;\n "+h+" values = "+h+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n "+f+"\n }\n\n int inIdx = inOffset + "+c+";\n if ("+(1===l)+") {\n "+h+" values = "+h+"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(2===l)+") {\n "+h+" values = "+h+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n "+f+"\n } else if ("+(3===l)+") {\n "+h+" values = "+h+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n "+f+"\n }\n setOutput("+u+");\n }\n "},Xa=function(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var n="",r=0;r<4;r++){var o="thisRC = rc;";r%2==1&&(o+="thisRC.z += 1;"),r>1&&(o+="thisRC.y += 1;"),n+="\n "+o+"\n "+(r>0?"if(thisRC.y < rows && thisRC.z < cols){":"")+"\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result["+r+"] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n "+(r>0?"}":"")+"\n "}this.userCode="\n \n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n "+co(["r","c","d"],e)+"\n return ivec3(r, c, d);\n }\n \n "+lo(t)+"\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = "+t[1]+";\n int cols = "+t[2]+";\n\n "+n+"\n\n setOutput(result);\n }\n "},$a=function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],c=[n&&s>1?o-1:o,n&&u>1?a-1:a],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=c[0]/l[0],h=c[1]/l[1],p=1/f,d=1/h,v=2*Math.ceil(p)+2,m=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+h+");\n\n const float invHeightScale = float("+p+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+v+");\n const int winWidth = int("+m+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), "+(o-1)+".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), "+(a-1)+".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "},Ya=function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/c[0]+",\n "+u[1]/c[1]+");\n const vec2 inputShapeRC = vec2("+a+".0, "+i+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n "},Ja=function(t,e,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n "+u[0]/c[0]+",\n "+u[1]/c[1]+",\n "+u[1]/c[1]+");\n const vec3 inputShapeRC = vec3("+a+".0, "+i+".0,\n "+i+".0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);\n ivec3 sourceCeilRC = ivec3(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < "+(s-1)+";\n bool hasNextRow = coords.z < "+(n-1)+";\n\n // In parallel, construct four corners for all four components in\n // packed 2x2 cell.\n vec4 topLeft = vec4(\n getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 bottomLeft = vec4(\n getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 topRight = vec4(\n getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec4 bottomRight = vec4(\n getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\n\n vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n vec4 newValue = mix(top, bottom, fracRC.x);\n\n setOutput(newValue);\n }\n "},Qa=function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],c=[n&&s>1?o-1:o,n&&u>1?a-1:a],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],f=c[0]/l[0],h=c[1]/l[1],p=1/f,d=1/h,v=2*Math.ceil(p)+2,m=2*Math.ceil(d)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float("+f+");\n const float widthScale = float("+h+");\n\n const float invHeightScale = float("+p+");\n const float invWidthScale = float("+d+");\n\n const int winHeight = int("+v+");\n const int winWidth = int("+m+");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= "+s+") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= "+u+") {\n continue;\n }\n\n float sourceFracRow =\n float("+c[0]+") *\n (float(dyR) / float("+l[0]+"));\n\n float sourceFracCol =\n float("+c[1]+") *\n (float(dyC) / float("+l[1]+"));\n\n int sourceNearestRow = int(min(\n float(int("+o+") - 1),\n "+n+" ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int("+a+") - 1),\n "+n+" ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n "},Za=function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n],l=r?"0.5":"0.0";this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/c[0]+",\n "+u[1]/c[1]+");\n const vec2 inputShapeRC = vec2("+a+".0, "+i+".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + "+l+")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n "},ti=function(t,e){this.variableNames=["x"];var n=t.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");if(this.outputShape=t,1!==n){var r=t.map((function(n,r){return function(n){return-1!==e.indexOf(n)&&1!==t[n]?t[n]+" - coords["+n+"] - 1":"coords["+n+"]"}(r)})).join(","),o=xo(n);this.userCode="\n void main() {\n "+o+" coords = getOutputCoords();\n setOutput(getX("+r+"));\n }\n "}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX("+t[0]+" - coord - 1));\n }\n "},ei=function(t,e){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;var n=t.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");this.outputShape=t;var r=so("rc",n),o=r[n-1]+" + 1 < "+this.outputShape[n-1],a=r[n-2]+" + 1 < "+this.outputShape[n-2],i=xo(n);function s(n){var r=t.map((function(r,o){return function(n,r){return-1!==e.indexOf(n)&&1!==t[n]?t[n]+" - "+r[n]+" - 1":""+r[n]}(o,n)}));return"getChannel(getX("+r.join(",")+"), vec2("+r.slice(-2).join(",")+"))"}this.userCode=1===n?"\n void main(){\n int rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = getChannel(getX("+t[0]+" - rc - 1),\n "+t[0]+" - rc - 1);\n if("+o+"){\n result.g = getChannel(getX("+t[0]+" - (rc + 1) - 1),\n "+t[0]+" - (rc + 1) - 1);\n }\n setOutput(result);\n }\n ":"\n void main() {\n "+i+" rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = "+function(t){return s(t)}(r.slice())+";\n if("+o+"){\n result.g = "+function(t){return t[n-1]="("+t[n-1]+" + 1)",s(t)}(r.slice())+";\n }\n if("+a+") {\n result.b = "+function(t){return t[n-2]="("+t[n-2]+" + 1)",s(t)}(r.slice())+";\n if("+o+") {\n result.a = "+function(t){return t[n-1]="("+t[n-1]+" + 1)",t[n-2]="("+t[n-2]+" + 1)",s(t)}(r.slice())+";\n }\n }\n setOutput(result);\n }\n "},ni=function(t,e,n,r,o,a,i){void 0===i&&(i=!0),this.variableNames=["updates","indices","defaultValue"],this.outputShape=a;var s=xo(o.length),u=xo(a.length),c="";1===n?c="i":2===n&&(c="i, j");var l="getIndices("+c+")",f="";1===r?f="i":2===r&&(f="i, coords[1]");var h="getUpdates("+f+")",p=e>1?"strides[j]":"strides";this.userCode="\n "+s+" strides = "+s+"("+o+");\n\n void main() {\n "+u+" coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < "+t+"; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < "+e+"; j++) {\n int index = round("+l+");\n flattenedIndex += index * "+p+";\n }\n if (flattenedIndex == coords[0]) {\n sum += "+h+";\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(), sum, float(found)));\n }\n "},ri=function(t,e){this.variableNames=["x","segmentIds"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=t.numSegments,i=a*Math.ceil(o/n);this.outputShape=[r,i];var s=4*Math.floor(n/4),u=n%4,c="\n sumValue += dot(values, segFilter);\n ",l="";o%n>0&&(l="\n if (inIdx < 0 || inIdx >= "+o+") {\n return initializationValue;\n }\n ");var f="";o%n>0&&(f="\n if (inIdx < 0 || inIdx >= "+o+") {\n return -1.0;\n }\n "),this.userCode="\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n "+l+"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n "+f+"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n "+a+")) * float("+n+"));\n int currentSeg = int(mod(float(outIdx), float("+a+")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < "+s+"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n "+c+"\n }\n\n int inIdx = inOffset + "+s+";\n if ("+(1===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n "+c+"\n } else if ("+(2===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n "+c+"\n } else if ("+(3===u)+") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n "+c+"\n }\n setOutput(sumValue);\n }\n "},oi=function(t,e,n){var r,o;if(this.variableNames=["c","a","b"],this.outputShape=e,n>4)throw Error("Where for rank "+n+" is not yet supported");if(1===n)o="resRC",r="resRC";else{for(var a=["resRC.x","resRC.y","resRC.z","resRC.w"],i=[],s=[],u=0;u<e.length;u++)s.push(""+a[u]),u<t&&i.push(""+a[u]);r=i.join(),o=s.join()}var c=xo(n);this.userCode="\n void main() {\n "+c+" resRC = getOutputCoords();\n float cVal = getC("+r+");\n if (cVal >= 1.0) {\n setOutput(getA("+o+"));\n } else {\n setOutput(getB("+o+"));\n }\n }\n "},ai=function(){function t(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;var e,n=xo(this.rank),r="uniform int start["+this.rank+"];",o=function(t){if(1===t)return"sourceLoc";if(t<=6)return ii.slice(0,t).map((function(t){return"sourceLoc."+t})).join(",");throw Error("Slicing for rank "+t+" is not yet supported")}(this.rank);e="\n "+n+" sourceLoc;\n "+n+" coords = getOutputCoords();\n "+t.map((function(t,e){return"sourceLoc."+ii[e]+" = start["+e+"] + coords."+ii[e]+";"})).join("\n")+"\n ",this.userCode="\n "+r+"\n void main() {\n "+e+"\n setOutput(getSource("+o+"));\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),ii=["x","y","z","w","u","v"],si=function(){function t(t){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length;var e=xo(this.rank),n=so("coords",this.rank),r=so("sourceLoc",this.rank),o=1===this.rank?"sourceLoc":"vec2("+r.slice(-2).join()+")",a="getChannel(getSource("+r.join()+"), "+o+")",i="\n result.x = "+a+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.y = "+a+";\n --"+r[this.rank-1]+";\n }\n ",s=1===this.rank?"":"\n --"+n[this.rank-1]+";\n if (++"+n[this.rank-2]+" < "+t[this.rank-2]+") {\n ++"+r[this.rank-2]+";\n result.z = "+a+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.w = "+a+";\n }\n }\n ",u=this.rank<=4?"sourceLoc = coords +\n "+e+"("+t.map((function(t,e){return"start["+e+"]"})).join()+");":t.map((function(t,e){return r[e]+" = "+n[e]+" + start["+e+"];"})).join("\n");this.userCode="\n uniform int start["+this.rank+"];\n void main() {\n "+e+" coords = getOutputCoords();\n "+e+" sourceLoc;\n "+u+"\n vec4 result = vec4(0.);\n "+i+"\n "+s+"\n setOutput(result);\n }\n "}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t)}},t}(),ui=function(t,e,n){this.variableNames=["x"],this.outputShape=n;var r=n.length,o=xo(n.length),a=xo(n.length),i="";if(1===r)i="coords * strides + begin";else{var s=0;i=n.map((function(t,e){return s++,1===n.length?"coords * strides["+e+"] + begin["+e+"]":"coords["+(s-1)+"] * strides["+e+"] + begin["+e+"]"})).join(",")}this.userCode="\n "+o+" begin = "+o+"("+t+");\n "+o+" strides = "+o+"("+e+");\n\n void main() {\n "+a+" coords = getOutputCoords();\n setOutput(getX("+i+"));\n }\n "},ci=function(){function t(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return t.prototype.acquireTexture=function(t,e,n){var r,o=li(e,n),a=fi(t,o,n);if(a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]),this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var i=this.freeTextures[a].shift();return this.usedTextures[a].push(i),i}return this.numUsedTextures++,this.log(),o===Mt.PACKED_2X2_FLOAT32?r=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):o===Mt.PACKED_2X2_FLOAT16?r=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):o===Mt.UNPACKED_FLOAT32?r=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):o===Mt.UNPACKED_FLOAT16?r=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):o===Mt.PACKED_4X1_UNSIGNED_BYTE&&(r=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[a].push(r),r},t.prototype.releaseTexture=function(t,e,n,r){if(null!=this.freeTextures){var o=fi(e,li(n,r),r);o in this.freeTextures||(this.freeTextures[o]=[]),this.freeTextures[o].push(t),this.numFreeTextures++,this.numUsedTextures--;var a=this.usedTextures[o],i=a.indexOf(t);if(i<0)throw new Error("Cannot release a texture that was never provided by this texture manager");a.splice(i,1),this.log()}},t.prototype.log=function(){if(this.logEnabled)this.numFreeTextures,this.numUsedTextures},t.prototype.getNumUsedTextures=function(){return this.numUsedTextures},t.prototype.getNumFreeTextures=function(){return this.numFreeTextures},t.prototype.dispose=function(){var t=this;if(null!=this.freeTextures){for(var e in this.freeTextures)this.freeTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e)}));for(var e in this.usedTextures)this.usedTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e)}));this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},t}();function li(t,e){if(t===Ft.UPLOAD)return Mt.PACKED_2X2_FLOAT32;if(t===Ft.RENDER||null==t)return function(t){return f().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?t?Mt.PACKED_2X2_FLOAT32:Mt.UNPACKED_FLOAT32:t?Mt.PACKED_2X2_FLOAT16:Mt.UNPACKED_FLOAT16}(e);if(t===Ft.DOWNLOAD||t===Ft.PIXELS)return Mt.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type "+t)}function fi(t,e,n){return t[0]+"_"+t[1]+"_"+e+"_"+n}var hi=function(t,e){this.variableNames=["A"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[r]*e[r];this.outputShape=n,this.rank=n.length;var o=xo(this.rank),a=function(t){var e=t.length;if(e>5)throw Error("Tile for rank "+e+" is not yet supported");if(1===e)return"imod(resRC, "+t[0]+")";for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[],o=0;o<t.length;o++)r.push("imod("+n[o]+", "+t[o]+")");return r.join()}(t);this.userCode="\n void main() {\n "+o+" resRC = getOutputCoords();\n setOutput(getA("+a+"));\n }\n "},pi=function(t,e){this.variableNames=["A"];for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];this.outputShape=n,this.rank=n.length;var o=xo(this.rank),a=function(t){var e=t.length;if(e>6)throw Error("Transpose for rank "+e+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(e),o=0;o<t.length;o++)r[t[o]]=n[o];return r.join()}(e);this.userCode="\n void main() {\n "+o+" resRC = getOutputCoords();\n setOutput(getA("+a+"));\n }\n "},di=function(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0;for(var n=new Array(t.length),r=0;r<n.length;r++)n[r]=t[e[r]];if(this.outputShape=n,this.rank=n.length,this.rank>6)throw Error("Packed transpose for rank "+this.rank+" is not yet supported.");var o=xo(this.rank),a=io("rc",this.rank),i=new Array(this.rank);for(r=0;r<e.length;r++)i[e[r]]=a[r];var s="vec2("+i.slice(-2).join()+")",u="++"+a[this.rank-1]+" < "+n[this.rank-1],c="getChannel(getA("+i.join()+"), "+s+")";this.userCode="\n void main() {\n "+o+" rc = getOutputCoords();\n vec4 result = vec4(0.);\n result[0] = "+c+";\n if("+u+") {\n result[1] = "+c+";\n }\n --"+a[this.rank-1]+";\n if(++"+a[this.rank-2]+" < "+n[this.rank-2]+") {\n result[2] = "+c+";\n if("+u+") {\n result[3] = "+c+";\n }\n }\n setOutput(result);\n }\n "},vi=1.7580993408473768,mi=1.0507009873554805,gi=function(t,e){this.variableNames=["A"],this.outputShape=t,this.userCode="\n float unaryOperation(float x) {\n "+e+"\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n "},yi="if (isnan(x)) return x;",bi="return abs(x);",xi=yi+"\n return (x < 0.0) ? 0.0 : x;\n",wi=yi+"\n return (x < 0.0) ? 0.0 : min(6.0, x);\n",Ei="return (x >= 0.0) ? x : (exp(x) - 1.0);",Ci="return -x;",_i="return ceil(x);",ki="return floor(x);",Ri="return exp(x);",Ii="return exp(x) - 1.0;",Si="return x;",Ai="\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",Oi="\n vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",Ti="\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n",Di=function(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode="\n vec4 unaryOperation(vec4 x) {\n "+e+"\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n "},Ni=function(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=t;var e=t.length,n=so("rc",e),r=xo(e),o=function(t,e){if(1===t)return"rc";for(var n="",r=0;r<t;r++)n+=e[r],r<t-1&&(n+=",");return n}(e,n),a=n.slice(-2),i=e<=1?"rc":"vec2("+a.join(",")+")";this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n vec4 packedInput = getA("+o+");\n\n setOutput(getChannel(packedInput, "+i+"));\n }\n "},Fi={};function Mi(t,e){if(void 0===e&&(e=!1),"linear"===t)return"return x;";if("relu"===t)return e?Ai:xi;if("elu"===t)return e?Ti:Ei;if("relu6"===t)return e?Oi:wi;if("prelu"===t)return e?Fo:Do;throw new Error("Activation "+t+" has not been implemented for the WebGL backend.")}var Pi=function(t){function e(e){var n,r=t.call(this)||this;if(r.pendingRead=new WeakMap,r.pendingDisposal=new WeakSet,r.dataRefCount=new WeakMap,r.numBytesInGPU=0,r.uploadWaitMs=0,r.downloadWaitMs=0,r.warnedAboutMemory=!1,r.pendingDeletes=0,r.disposed=!1,!f().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(null==e){var o=Wt(f().getNumber("WEBGL_VERSION"));r.binaryCache=((n=f().getNumber("WEBGL_VERSION"))in Fi||(Fi[n]={}),Fi[n]),r.gpgpu=new Ta(o),r.canvas=o.canvas,r.gpgpuCreatedLocally=!0}else r.gpgpu=e,r.binaryCache={},r.gpgpuCreatedLocally=!1,r.canvas=e.gl.canvas;return r.textureManager=new ci(r.gpgpu),r.numMBBeforeWarning=null==f().global.screen?1024:f().global.screen.height*f().global.screen.width*window.devicePixelRatio*600/1024/1024,r.texData=new Rr(r,Ot),r}return s(e,t),e.prototype.numDataIds=function(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes},e.prototype.write=function(t,e,n){if(f().getBool("DEBUG")&&this.checkNumericalProblems(t),"complex64"===n&&null!=t)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");var r={};return this.texData.set(r,{shape:e,dtype:n,values:t,usage:Ft.UPLOAD}),r},e.prototype.move=function(t,e,n,r){if(f().getBool("DEBUG")&&this.checkNumericalProblems(e),"complex64"===r)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(t,{shape:n,dtype:r,values:e,usage:Ft.UPLOAD})},e.prototype.readSync=function(t){var e=this.texData.get(t),n=e.values,r=e.dtype,o=e.complexTensors,a=e.slice,i=e.shape,s=e.isPacked;if(null!=a){var u;u=s?new Di(i,Si):new gi(i,Si);var c=this.runWebGLProgram(u,[{dataId:t,shape:i,dtype:r}],r),l=this.readSync(c.dataId);return this.disposeData(c.dataId),l}if(null!=n)return this.convertAndCacheOnCPU(t);if("string"===r)return n;var f,h,p=null!=this.activeTimers;return p&&(f=et()),h="complex64"===r?Kr(o.real.dataSync(),o.imag.dataSync()):this.getValuesFromTexture(t),p&&(this.downloadWaitMs+=et()-f),this.convertAndCacheOnCPU(t,h)},e.prototype.read=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o,a,i,s,u,l,h,p,d,v,m,g,y,b,x,w,E,C,_;return c(this,(function(c){switch(c.label){case 0:if(this.pendingRead.has(t))return e=this.pendingRead.get(t),[2,new Promise((function(t){return e.push(t)}))];if(n=this.texData.get(t),r=n.values,o=n.shape,a=n.slice,i=n.dtype,s=n.complexTensors,u=n.isPacked,null!=a)return void 0,l=u?new Di(o,Si):new gi(o,Si),h=this.runWebGLProgram(l,[{dataId:t,shape:o,dtype:i}],i),p=this.read(h.dataId),this.disposeData(h.dataId),[2,p];if(null!=r)return[2,this.convertAndCacheOnCPU(t)];if(!f().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&2===f().getNumber("WEBGL_VERSION"))throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");return d=null,"complex64"!==i&&f().get("WEBGL_BUFFER_SUPPORTED")&&(v=this.decode(t),m=this.texData.get(v.dataId),d=(_=this.gpgpu).createBufferFromTexture.apply(_,[m.texture].concat(jt(o)))),this.pendingRead.set(t,[]),"complex64"===i?[3,2]:[4,this.gpgpu.createAndWaitForFence()];case 1:c.sent(),c.label=2;case 2:return"complex64"!==i?[3,4]:[4,Promise.all([s.real.data(),s.imag.data()])];case 3:return y=c.sent(),b=y[0],x=y[1],g=Kr(b,x),[3,5];case 4:null==d?g=this.getValuesFromTexture(t):(w=R(o),g=this.gpgpu.downloadFloat32MatrixFromBuffer(d,w)),c.label=5;case 5:return null!=v&&this.disposeData(v.dataId),E=this.convertAndCacheOnCPU(t,g),C=this.pendingRead.get(t),this.pendingRead.delete(t),C.forEach((function(t){return t(E)})),this.pendingDisposal.has(t)&&(this.pendingDisposal.delete(t),this.disposeData(t),this.pendingDeletes--),[2,E]}}))}))},e.prototype.checkNumericalProblems=function(t){if(null!=t)for(var e=0;e<t.length;e++){var n=t[e];if(!Ht(n)){if(f().getBool("WEBGL_RENDER_FLOAT32_CAPABLE"))throw Error("The value "+n+" cannot be represented with your current settings. Consider enabling float32 rendering: 'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'");throw Error("The value "+n+" cannot be represented on this device.")}}},e.prototype.getValuesFromTexture=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,a=n.isPacked,i=R(r);if(f().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")){var s=this.decode(t),u=this.texData.get(s.dataId),c=(e=this.gpgpu).downloadMatrixFromPackedTexture.apply(e,[u.texture].concat(jt(r))).subarray(0,i);return this.disposeData(s.dataId),c}var l=f().getBool("WEBGL_PACK")&&!0===a,h=l?xe(r):r,p=l?new ia(h):new aa(h),d=this.runWebGLProgram(p,[{shape:h,dtype:o,dataId:t}],"float32"),v=this.texData.get(d.dataId),m=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(v.texture,v.texShape[0],v.texShape[1]).subarray(0,i);return this.disposeData(d.dataId),m},e.prototype.time=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o,a,i,s;return c(this,(function(u){switch(u.label){case 0:return e=this.activeTimers,n=[],r=!1,null==this.programTimersStack?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,t(),o=k(this.activeTimers.map((function(t){return t.query}))).filter((function(t){return null!=t})),a=k(this.activeTimers.map((function(t){return t.name}))).filter((function(t){return null!=t})),this.activeTimers=e,r&&(this.programTimersStack=null),[4,Promise.all(o)];case 1:return i=u.sent(),s={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:w(i),getExtraProfileInfo:function(){return i.map((function(t,e){return{name:a[e],ms:t}})).map((function(t){return t.name+": "+t.ms})).join(", ")},wallMs:null},this.uploadWaitMs=0,this.downloadWaitMs=0,[2,s]}}))}))},e.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},e.prototype.startTimer=function(){return f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?this.gpgpu.beginQuery():{startMs:et(),endMs:null}},e.prototype.endTimer=function(t){return f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(this.gpgpu.endQuery(),t):(t.endMs=et(),t)},e.prototype.getQueryTime=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){return f().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?[2,this.gpgpu.waitForQueryAndGetTime(t)]:[2,(e=t).endMs-e.startMs]}))}))},e.prototype.disposeData=function(t){if(!this.pendingDisposal.has(t)){if(this.pendingRead.has(t))return this.pendingDisposal.add(t),void this.pendingDeletes++;if(this.texData.has(t)){this.releaseGPUData(t);var e=this.texData.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.texData.delete(t)}}},e.prototype.releaseGPUData=function(t){var e=this.texData.get(t),n=e.texture,r=e.dtype,o=e.texShape,a=e.usage,i=e.isPacked,s=e.slice,u=s&&s.origDataId||t,c=this.dataRefCount.get(u);c>1?this.dataRefCount.set(u,c-1):(this.dataRefCount.delete(u),null!=n&&(this.numBytesInGPU-=this.computeBytes(o,r),this.textureManager.releaseTexture(n,o,a,i)));var l=this.texData.get(t);l.texture=null,l.texShape=null,l.isPacked=!1,l.slice=null},e.prototype.getTexture=function(t){return this.uploadToGPU(t),this.texData.get(t).texture},e.prototype.getDataInfo=function(t){return this.texData.get(t)},e.prototype.getCPUBackend=function(){return f().getBool("WEBGL_CPU_FORWARD")?(null==this.cpuBackend&&(this.cpuBackend=Ot.findBackend("cpu")),this.cpuBackend):null},e.prototype.shouldExecuteOnCPU=function(t,e){var n=this;return void 0===e&&(e=128),null!=this.getCPUBackend()&&t.every((function(t){return null==n.texData.get(t.dataId).texture&&t.size<e}))},e.prototype.getGPGPUContext=function(){return this.gpgpu},e.prototype.complex=function(t,e){var n=this.makeOutput(t.shape,"complex64");return this.texData.get(n.dataId).complexTensors={real:Ot.keep(t.clone()),imag:Ot.keep(e.clone())},n},e.prototype.real=function(t){return this.texData.get(t.dataId).complexTensors.real.clone()},e.prototype.imag=function(t){return this.texData.get(t.dataId).complexTensors.imag.clone()},e.prototype.slice=function(t,e,n){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.slice(t,e,n);if(0===R(n))return rn([],n,t.dtype);var r=this.texData.get(t.dataId).isPacked,o=wr(t.shape,e,n);if(r||!o){var a=f().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new si(n):new ai(n),i=a.getCustomSetupFunc(e);return this.compileAndRun(a,[t],null,i)}return this.uploadToGPU(t.dataId),this.shallowSlice(t,e,n)},e.prototype.shallowSlice=function(t,e,n){var r=this.texData.get(t.dataId),o=this.makeOutput(n,t.dtype),a=this.texData.get(o.dataId);Object.assign(a,r),a.shape=n,a.dtype=t.dtype;var i=Er(e,t.strides);r.slice&&(i+=r.slice.flatOffset),a.slice={flatOffset:i,origDataId:r.slice&&r.slice.origDataId||t.dataId};var s=this.dataRefCount.get(a.slice.origDataId)||1;return this.dataRefCount.set(a.slice.origDataId,s+1),o},e.prototype.stridedSlice=function(t,e,n,r){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.stridedSlice(t,e,n,r);var o=yr(e,n,r);if(o.some((function(t){return 0===t})))return rn([],o);var a=new ui(e,r,o);return this.compileAndRun(a,[t])},e.prototype.reverse=function(t,e){var n=f().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new ei(t.shape,e):new ti(t.shape,e);return this.compileAndRun(n,[t])},e.prototype.concat=function(t,e){if("complex64"===t[0].dtype){var n=t.map((function(t){return en(t)})),r=t.map((function(t){return nn(t)}));return tn(this.concat(n,e),this.concat(r,e))}if(this.shouldExecuteOnCPU(t))return this.cpuBackend.concat(t,e);if(1===t.length)return t[0];if(t.length>f().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var o=Math.floor(t.length/2),a=this.concat(t.slice(0,o),e),i=this.concat(t.slice(o),e);return this.concat([a,i],e)}if(f().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&t[0].rank>1){var s=new Uo(t.map((function(t){return t.shape})),e);return this.compileAndRun(s,t)}var u=Qe(t.map((function(t){return t.shape})),e),c=t.map((function(t){return t.as2D(-1,R(t.shape.slice(e)))})),l=new Wo(c.map((function(t){return t.shape})));return this.compileAndRun(l,c).reshape(u)},e.prototype.neg=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.neg(t);if(f().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Ci,t.dtype);var e=new gi(t.shape,Ci);return this.compileAndRun(e,[t])},e.prototype.batchMatMul=function(t,e,n,r){var o=n?t.shape[2]:t.shape[1],a=r?e.shape[1]:e.shape[2],i=n?t.shape[1]:t.shape[2],s=t.shape[0];if((1===o||1===a)&&i>1e3){n&&(t=t.transpose([0,2,1])),r&&(e=e.transpose([0,2,1]));var u=1===a?t:t.as3D(s,i,1),c=1===a?2:1,l=1===a?e.as3D(s,1,i):e;return this.multiply(u,l).sum(c,!0)}var f=Et(t.dtype,e.dtype),h=new Wa(t.shape,[s,o,a],n,r);return this.compileAndRun(h,[t,e],f)},e.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,a=t.bias,i=t.activation,s=t.preluActivationWeights,u=r?e.shape[2]:e.shape[1],c=o?n.shape[1]:n.shape[2],l=e.shape[0],f=Et(e.dtype,n.dtype),h=null!=a,p=null!=s,d=i?Mi(i,!0):null,v=new Wa(e.shape,[l,u,c],r,o,h,d,p),m=[e,n];return a&&m.push(a),s&&m.push(s),this.compileAndRun(v,m,f)},e.prototype.multiply=function(t,e){if("complex64"===t.dtype){var n=this.texData.get(t.dataId),r=this.texData.get(e.dataId),o=new So("return areal * breal - aimag * bimag;",t.shape,e.shape),a=new So("return areal * bimag + aimag * breal;",t.shape,e.shape),i=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag),this.makeComplexComponentTensorInfo(e,r.complexTensors.real),this.makeComplexComponentTensorInfo(e,r.complexTensors.imag)],s=this.compileAndRun(o,i),u=this.compileAndRun(a,i),c=this.complex(s,u);return s.dispose(),u.dispose(),c}if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.multiply(t,e);if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,To,t.dtype);var l=new No(To,t.shape,e.shape);return this.compileAndRun(l,[t,e],t.dtype)},e.prototype.batchNormalization=function(t,e,n,r,o,a){var i=[t,e,n],s=null;null!=a&&(s=a.shape,i.push(a));var u=null;if(null!=o&&(u=o.shape,i.push(o)),f().getBool("WEBGL_PACK_NORMALIZATION")){var c=new Io(t.shape,e.shape,n.shape,s,u,r);return this.compileAndRun(c,i)}var l=new Ro(t.shape,e.shape,n.shape,s,u,r);return this.compileAndRun(l,i)},e.prototype.localResponseNormalization4D=function(t,e,n,r,o){var a=f().getBool("WEBGL_PACK_NORMALIZATION")?new Pa(t.shape,e,n,r,o):new Fa(t.shape,e,n,r,o);return this.compileAndRun(a,[t])},e.prototype.LRNGrad=function(t,e,n,r,o,a,i){var s=new Ma(e.shape,r,o,a,i);return this.compileAndRun(s,[e,n,t])},e.prototype.tile=function(t,e){if("string"===t.dtype){var n=this.readSync(t.dataId).map((function(t){return ot(t)}));return to(Mn(t.shape,t.dtype,n),e)}var r=new hi(t.shape,e);return this.compileAndRun(r,[t])},e.prototype.pad=function(t,e,n){var r=f().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Ga(t.shape,e,n):new Va(t.shape,e,n);return this.compileAndRun(r,[t])},e.prototype.transpose=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.transpose(t,e);var n=f().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new di(t.shape,e):new pi(t.shape,e);return this.compileAndRun(n,[t])},e.prototype.gather=function(t,e,n){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.gather(t,e,n);var r=new fa(t.shape,e.size,n);return this.compileAndRun(r,[t,e])},e.prototype.batchToSpaceND=function(t,e,n){E(t.rank<=4,(function(){return"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"}));var r=e.reduce((function(t,e){return t*e})),o=ur(t.shape,e,r),a=cr(o.length,e.length),i=lr(t.shape,e,r),s=fr(n,e.length),u=hr(i,n,e.length);return t.reshape(o).transpose(a).reshape(i).slice(s,u)},e.prototype.spaceToBatchND=function(t,e,n){E(t.rank<=4,(function(){return"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"}));var r=e.reduce((function(t,e){return t*e})),o=[[0,0]];o.push.apply(o,n);for(var a=1+e.length;a<t.shape.length;++a)o.push([0,0]);var i=t.pad(o),s=ur(i.shape,e,r,!1),u=cr(s.length,e.length,!1),c=lr(i.shape,e,r,!1);return i.reshape(s).transpose(u).reshape(c)},e.prototype.reduce=function(t,e,n){var r=t.shape[0],o=t.shape[1],a=dr(o),i=new Ka({windowSize:a,inSize:o,batchSize:r},e),s=this.compileAndRun(i,[t],n);return 1===s.shape[1]?s:this.reduce(s,e,n)},e.prototype.argReduce=function(t,e,n){void 0===n&&(n=null);var r=t.shape[0],o=t.shape[1];null!=n&&(r=n.shape[0],o=n.shape[1]);var a=dr(o),i=new ao({windowSize:a,inSize:o,batchSize:r},e,null==n),s=[t];null!=n&&s.push(n);var u=this.compileAndRun(i,s,"int32");return 1===u.shape[1]?u:this.argReduce(t,e,u)},e.prototype.argReducePacked=function(t,e,n){void 0===n&&(n=null);var r=null!=n?n.shape:t.shape,o=dr(r[r.length-1]),a=new Co(r,o,e,null==n),i=null==n?[t]:[t,n],s=this.compileAndRun(a,i,"int32");return s.rank===t.rank?this.argReducePacked(t,e,s):s},e.prototype.sum=function(t,e){Ke("sum",e,t.rank);var n=He(t.shape,e),r=n[0],o=R(n[1]),a=t.as2D(-1,o),i=Ct(t.dtype);return this.reduce(a,"sum",i).reshape(r)},e.prototype.prod=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.prod(t,e);var n=He(t.shape,e),r=n[0],o=R(n[1]),a=t.as2D(-1,o),i=Ct(t.dtype);return this.reduce(a,"prod",i).reshape(r)},e.prototype.unsortedSegmentSum=function(t,e,n){var r=0,o=Xe([r],t.rank),a=t;null!=o&&(a=t.transpose(o),r=Ye(1,t.rank)[0]);var i=function(t,e,n){for(var r=[],o=t.length,a=0;a<o;a++)a!==e?r.push(t[a]):r.push(n);return r}(a.shape,r,n),s=R([a.shape[r]]),u=a.as2D(-1,s),c=Ct(t.dtype),l=this.segOpCompute(u,"unsortedSegmentSum",e,c,n).reshape(i);return null!=o&&(l=l.transpose($e(o))),l},e.prototype.segOpCompute=function(t,e,n,r,o){var a=t.shape[0],i=t.shape[1],s=function(t,e){var n,r=!1;for(t<=30?(n=t,r=!0):n=$(t,Math.floor(Math.sqrt(t)));!r;)n>e||n===t?r=!0:n=$(t,n+1);return n}(i,o),u=new ri({windowSize:s,inSize:i,batchSize:a,numSegments:o},e),c=this.compileAndRun(u,[t,n],r);return c.shape[1]===o?c:(n=dn(0,o).tile([i/s]),this.segOpCompute(c,e,n,r,o))},e.prototype.argMinMaxReduce=function(t,e,n){var r=[e];if(Ke("arg"+n.charAt(0).toUpperCase()+n.slice(1),r,t.rank),!f().getBool("WEBGL_PACK_REDUCE")||t.rank<=2){var o=He(t.shape,r),a=o[0],i=R(o[1]),s=t.as2D(-1,i);return this.argReduce(s,n).reshape(a)}return this.argReducePacked(t,n)},e.prototype.argMin=function(t,e){return this.argMinMaxReduce(t,e,"min")},e.prototype.argMax=function(t,e){return this.argMinMaxReduce(t,e,"max")},e.prototype.cumsum=function(t,e,n,r){if(e!==t.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(t.rank-1)+" but got axis="+e);var o=new Zo(t.shape,n,r);return this.compileAndRun(o,[t])},e.prototype.equal=function(t,e){if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(equal(a, b));\n","bool");var n=new No("return float(a == b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.notEqual=function(t,e){if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(notEqual(a, b));\n","bool");var n=new No("return float(a != b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.less=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.less(t,e);if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThan(a, b));\n","bool");var n=new No("return float(a < b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.lessEqual=function(t,e){if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThanEqual(a, b));\n","bool");var n=new No("return float(a <= b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.greater=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.greater(t,e);if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThan(a, b));\n","bool");var n=new No("return float(a > b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.greaterEqual=function(t,e){if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThanEqual(a, b));\n","bool");var n=new No("return float(a >= b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.logicalNot=function(t){var e=new gi(t.shape,"return float(!(x >= 1.0));");return this.compileAndRun(e,[t])},e.prototype.logicalAnd=function(t,e){if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n","bool");var n=new No("return float(a >= 1.0 && b >= 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.logicalOr=function(t,e){if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n","bool");var n=new No("return float(a >= 1.0 || b >= 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},e.prototype.select=function(t,e,n){var r=new oi(t.rank,e.shape,e.rank);return this.compileAndRun(r,[t,e,n],Et(e.dtype,n.dtype))},e.prototype.where=function(t){Le("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var e=t.dataSync();return no(t.shape,e)},e.prototype.topk=function(t,e,n){return eo(t.dataSync(),t.shape,t.dtype,e)},e.prototype.min=function(t,e){Ke("min",e,t.rank);var n=He(t.shape,e),r=n[0],o=R(n[1]),a=t.as2D(-1,o);return this.reduce(a,"min",a.dtype).reshape(r)},e.prototype.minimum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.minimum(t,e);var n=f().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 result = vec4(min(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return min(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.mod=function(t,e){var n=f().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 result = mod(a, b);\n vec4 isNaN = vec4(equal(b, vec4(0.0)));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("if (b == 0.0) return NAN;\n return mod(a, b);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.max=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.max(t,e);Ke("max",e,t.rank);var n=He(t.shape,e),r=n[0],o=R(n[1]),a=t.as2D(-1,o);return this.reduce(a,"max",a.dtype).reshape(r)},e.prototype.maximum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.maximum(t,e);var n=f().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 result = vec4(max(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return max(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.all=function(t,e){Ke("all",e,t.rank);var n=He(t.shape,e),r=n[0],o=R(n[1]),a=t.as2D(-1,o);return this.reduce(a,"all",a.dtype).reshape(r)},e.prototype.any=function(t,e){Ke("any",e,t.rank);var n=He(t.shape,e),r=n[0],o=R(n[1]),a=t.as2D(-1,o);return this.reduce(a,"any",a.dtype).reshape(r)},e.prototype.squaredDifference=function(t,e){var n=f().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("return (a - b) * (a - b);",t.shape,e.shape):new No("return (a - b) * (a - b);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.realDivide=function(t,e){if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n // vec4 one = vec4(equal(a, b));\n // return one + (vec4(1.0) - one) * a / b;\n vec4 result = a / b;\n if(a.x == b.x) {\n result.x = 1.;\n }\n if(a.y == b.y) {\n result.y = 1.;\n }\n if(a.z == b.z) {\n result.z = 1.;\n }\n if(a.w == b.w) {\n result.w = 1.;\n }\n\n return result;\n","float32",!0);var n=new No("\nif (a == b) {\n return 1.0;\n};\nreturn a / b;",t.shape,e.shape);return this.compileAndRun(n,[t,e],"float32")},e.prototype.floorDiv=function(t,e){if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n ivec4 ia = round(a);\n ivec4 ib = round(b);\n bvec4 cond = notEqual(ib, ivec4(0));\n ivec4 result = ivec4(0);\n vec4 s = sign(a) * sign(b);\n\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n if (cond[0]) {\n result[0] = idiv(ia[0], ib[0], s[0]);\n }\n if (cond[1]) {\n result[1] = idiv(ia[1], ib[1], s[1]);\n }\n if (cond[2]) {\n result[2] = idiv(ia[2], ib[2], s[2]);\n }\n if (cond[3]) {\n result[3] = idiv(ia[3], ib[3], s[3]);\n }\n return vec4(result);\n","int32");var n=new No("\n float s = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n if (ib != 0) {\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n return float(idiv(ia, ib, s));\n } else {\n return NAN;\n }\n",t.shape,e.shape);return this.compileAndRun(n,[t,e],"int32")},e.prototype.add=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,Ao);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.add(t,e);var n=Et(t.dtype,e.dtype);if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,Ao,n);var r=new No(Ao,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},e.prototype.packedUnaryOp=function(t,e,n){var r=new Di(t.shape,e);return this.compileAndRun(r,[t],n)},e.prototype.packedBinaryOp=function(t,e,n,r,o){void 0===o&&(o=!1);var a=new Mo(n,t.shape,e.shape,o);return this.compileAndRun(a,[t,e],r)},e.prototype.complexSeparableBinaryOp=function(t,e,n){var r=this,o=this.texData.get(t.dataId),a=this.texData.get(e.dataId),i=[[o.complexTensors.real,a.complexTensors.real],[o.complexTensors.imag,a.complexTensors.imag]].map((function(o){var a=o[0],i=o[1],s=r.makeComplexComponentTensorInfo(t,a),u=r.makeComplexComponentTensorInfo(e,i),c=new No(n,t.shape,e.shape);return r.compileAndRun(c,[s,u],Et(a.dtype,i.dtype))})),s=i[0],u=i[1],c=this.complex(s,u);return s.dispose(),u.dispose(),c},e.prototype.makeComplexComponentTensorInfo=function(t,e){return{dataId:e.dataId,dtype:e.dtype,shape:t.shape}},e.prototype.addN=function(t){if(1===t.length)return t[0];if(t.length>f().get("WEBGL_MAX_TEXTURES_IN_SHADER")){var e=Math.floor(t.length/2),n=this.addN(t.slice(0,e)),r=this.addN(t.slice(e));return this.addN([n,r])}var o=t.map((function(t){return t.dtype})).reduce((function(t,e){return Et(t,e)})),a=t.map((function(t){return t.shape})),i=f().getBool("WEBGL_PACK")?new oo(t[0].shape,a):new ro(t[0].shape,a);return this.compileAndRun(i,t,o)},e.prototype.subtract=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,Oo);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.subtract(t,e);var n=Et(t.dtype,e.dtype);if(f().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,Oo,t.dtype);var r=new No(Oo,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},e.prototype.pow=function(t,e){var n=f().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\n vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\n vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n vec4 result = multiplier * pow(abs(a), b);\n\n // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\n bvec4 isExpZero = equal(b, vec4(0.0));\n result.r = isExpZero.r ? 1.0 : result.r;\n result.g = isExpZero.g ? 1.0 : result.g;\n result.b = isExpZero.b ? 1.0 : result.b;\n result.a = isExpZero.a ? 1.0 : result.a;\n\n vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("\nif(a < 0.0 && floor(b) < b){\n return NAN;\n}\nif (b == 0.0) {\n return 1.0;\n}\nreturn (round(mod(b, 2.0)) != 1) ?\n pow(abs(a), b) : sign(a) * pow(abs(a), b);\n",t.shape,e.shape),r=Et(t.dtype,e.dtype);return this.compileAndRun(n,[t,e],r)},e.prototype.ceil=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.ceil(t);if(f().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,_i,t.dtype);var e=new gi(t.shape,_i);return this.compileAndRun(e,[t])},e.prototype.floor=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.floor(t);if(f().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,ki,t.dtype);var e=new gi(t.shape,ki);return this.compileAndRun(e,[t])},e.prototype.sign=function(t){var e=new gi(t.shape,"\n if (isnan(x)) { return 0.0; }\n return sign(x);\n");return this.compileAndRun(e,[t])},e.prototype.isNaN=function(t){var e=new gi(t.shape,"return float(isnan(x));");return this.compileAndRun(e,[t],"bool")},e.prototype.isInf=function(t){var e=new gi(t.shape,"return float(isinf(x));");return this.compileAndRun(e,[t],"bool")},e.prototype.isFinite=function(t){var e=new gi(t.shape,"return float(!isnan(x) && !isinf(x));");return this.compileAndRun(e,[t],"bool")},e.prototype.round=function(t){var e=new gi(t.shape,"\n // OpenGL ES does not support round function.\n // The algorithm is based on banker's rounding.\n float base = floor(x);\n if ((x - base) < 0.5) {\n return floor(x);\n } else if ((x - base) > 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n");return this.compileAndRun(e,[t])},e.prototype.exp=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.exp(t);if(f().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Ri,t.dtype);var e=new gi(t.shape,Ri);return this.compileAndRun(e,[t])},e.prototype.expm1=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.expm1(t);if(f().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Ii,t.dtype);var e=new gi(t.shape,Ii);return this.compileAndRun(e,[t])},e.prototype.log=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.log(t);if(f().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,"\n vec4 result = log(x);\n vec4 isNaN = vec4(lessThan(x, vec4(0.0)));\n result.r = isNaN.r == 1.0 ? NAN : result.r;\n result.g = isNaN.g == 1.0 ? NAN : result.g;\n result.b = isNaN.b == 1.0 ? NAN : result.b;\n result.a = isNaN.a == 1.0 ? NAN : result.a;\n\n return result;\n",t.dtype);var e=new gi(t.shape,"if (x < 0.0) return NAN;\n return log(x);");return this.compileAndRun(e,[t])},e.prototype.log1p=function(t){var e=new gi(t.shape,"return log(1.0 + x);");return this.compileAndRun(e,[t])},e.prototype.sqrt=function(t){var e=new gi(t.shape,"return sqrt(x);");return this.compileAndRun(e,[t])},e.prototype.rsqrt=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.rsqrt(t);var e=new gi(t.shape,"return inversesqrt(x);");return this.compileAndRun(e,[t])},e.prototype.reciprocal=function(t){var e=new gi(t.shape,"return 1.0 / x;");return this.compileAndRun(e,[t])},e.prototype.relu=function(t){var e;return e=f().getBool("WEBGL_PACK")?new Di(t.shape,Ai):new gi(t.shape,xi),this.compileAndRun(e,[t])},e.prototype.relu6=function(t){var e;return e=f().getBool("WEBGL_PACK")?new Di(t.shape,Oi):new gi(t.shape,wi),this.compileAndRun(e,[t])},e.prototype.prelu=function(t,e){var n=f().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo(Fo,t.shape,e.shape):new No(Do,t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.elu=function(t){if(f().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Ti,t.dtype);var e=new gi(t.shape,Ei);return this.compileAndRun(e,[t])},e.prototype.eluDer=function(t,e){var n=f().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n",t.shape,e.shape):new No("return (b >= 1.0) ? a : a * (b + 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.selu=function(t){var e=new gi(t.shape,"\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = 1.7580993408473768;\n float scale = 1.0507009873554805;\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n");return this.compileAndRun(e,[t])},e.prototype.int=function(t){var e=new gi(t.shape,"return float(int(x));");return this.compileAndRun(e,[t],"int32")},e.prototype.clip=function(t,e,n){var r,o=(r=f().getBool("WEBGL_PACK_CLIP")?new Bo(t.shape):new Po(t.shape)).getCustomSetupFunc(e,n);return this.compileAndRun(r,[t],null,o)},e.prototype.abs=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.abs(t);if(f().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,bi,t.dtype);var e=new gi(t.shape,bi);return this.compileAndRun(e,[t])},e.prototype.complexAbs=function(t){var e=this.texData.get(t.dataId),n=new Lo(t.shape),r=[this.makeComplexComponentTensorInfo(t,e.complexTensors.real),this.makeComplexComponentTensorInfo(t,e.complexTensors.imag)];return this.compileAndRun(n,r)},e.prototype.sigmoid=function(t){var e=new gi(t.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(e,[t])},e.prototype.softplus=function(t){var e=new gi(t.shape,"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n");return this.compileAndRun(e,[t])},e.prototype.sin=function(t){var e=new gi(t.shape,"if (isnan(x)) return x;\n return sin(x);\n");return this.compileAndRun(e,[t])},e.prototype.cos=function(t){var e=new gi(t.shape,"if (isnan(x)) return x;\n return cos(x);\n");return this.compileAndRun(e,[t])},e.prototype.tan=function(t){var e=new gi(t.shape,"return tan(x);");return this.compileAndRun(e,[t])},e.prototype.asin=function(t){var e=new gi(t.shape,"if (isnan(x)) return x;\n if (abs(x) > 1.) {\n return NAN;\n }\n return asin(x);\n");return this.compileAndRun(e,[t])},e.prototype.acos=function(t){var e=new gi(t.shape,"if (isnan(x)) return x;\n if (abs(x) > 1.) {\n return NAN;\n }\n return acos(x);\n");return this.compileAndRun(e,[t])},e.prototype.atan=function(t){var e=new gi(t.shape,"if (isnan(x)) return x;\n return atan(x);\n");return this.compileAndRun(e,[t])},e.prototype.atan2=function(t,e){var n=f().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Mo("\n vec4 result = atan(a, b);\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new No("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return atan(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},e.prototype.sinh=function(t){var e=new gi(t.shape,"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},e.prototype.cosh=function(t){var e=new gi(t.shape,"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},e.prototype.tanh=function(t){var e=new gi(t.shape,"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n");return this.compileAndRun(e,[t])},e.prototype.asinh=function(t){var e=new gi(t.shape,"if (isnan(x)) return x;return log(x + sqrt(x * x + 1.0));");return this.compileAndRun(e,[t])},e.prototype.acosh=function(t){var e=new gi(t.shape,"if (isnan(x)) return x;\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));");return this.compileAndRun(e,[t])},e.prototype.atanh=function(t){var e=new gi(t.shape,"if (isnan(x)) return x;\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;");return this.compileAndRun(e,[t])},e.prototype.erf=function(t){var e=new gi(t.shape,'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = 0.3275911;\n float a1 = 0.254829592;\n float a2 = -0.284496736;\n float a3 = 1.421413741;\n float a4 = -1.453152027;\n float a5 = 1.061405429;\n\n float sign = sign(x);\n x = abs(x);\n float t = 1.0 / (1.0 + p * x);\n return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\n');return this.compileAndRun(e,[t])},e.prototype.step=function(t,e){var n=new gi(t.shape,function(t){return void 0===t&&(t=0),yi+"\n return x > 0.0 ? 1.0 : float("+t+");\n "}(e));return this.compileAndRun(n,[t])},e.prototype.conv2dByMatMul=function(t,e,n,r,o,a){var i=t.shape,s=this.texData.get(t.dataId),u=n.inChannels,c=i[0]*i[1]*i[2],l=n.outChannels,h="channelsLast"===n.dataFormat,p=(1===c||1===l)&&u>1e3,d=i[2]%2!=0&&!!s.isPacked;if(p||!f().getBool("WEBGL_LAZILY_UNPACK")||!f().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!d){var v=h?i[0]*i[1]*i[2]:i[0]*i[2]*i[3],m=this.reshape(t,[1,v,n.inChannels]),g=this.reshape(e,[1,n.inChannels,n.outChannels]);return this.reshape(this.fusedBatchMatMul({a:m,b:g,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),n.outShape)}var y=h?i[0]*i[1]*(i[2]+1):i[0]*i[2]*(i[3]+1),b={dataId:t.dataId,shape:[1,y,n.inChannels],dtype:t.dtype},x=s.shape;s.shape=s.shape.slice(),s.shape[s.shape.length-2]++,E(Ce(s.shape,b.shape),(function(){return"packed reshape "+s.shape+" to "+b.shape+" isn't free"}));var w=this.reshape(e,[1,n.inChannels,n.outChannels]),C=this.fusedBatchMatMul({a:b,b:w,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),_=this.texData.get(C.dataId);return E(_.isPacked,(function(){return"batchMatMul result is expected to be packed"})),s.shape=x,_.shape=n.outShape,Ot.makeTensorFromDataId(C.dataId,n.outShape,C.dtype)},e.prototype.conv2dWithIm2Row=function(t,e,n,r,o,a){var i=n.filterWidth,s=n.filterHeight,u=n.inChannels,c=n.outWidth,l=n.outHeight,f="channelsLast"===n.dataFormat,h=i*s*u,p=l*c,d=[h,p],v=t.squeeze([0]),m=e.reshape([1,h,-1]),g=new Na(d,v.shape,n),y=this.compileAndRun(g,[v]).reshape([1,d[0],d[1]]),b=null!=r,x=null!=a,w=o?Mi(o,!0):null,E=new Wa(y.shape,[1,p,n.outChannels],!0,!1,b,w,x),C=[y,m];r&&C.push(r),x&&C.push(a);var _=this.compileAndRun(E,C);return f?_.reshape([1,l,c,n.outChannels]):_.reshape([1,n.outChannels,l,c])},e.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,i=t.preluActivationWeights;if(1===r.filterHeight&&1===r.filterWidth&&1===r.dilationHeight&&1===r.dilationWidth&&1===r.strideHeight&&1===r.strideWidth&&("SAME"===r.padInfo.type||"VALID"===r.padInfo.type))return this.conv2dByMatMul(e,n,r,o,a,i);if(f().getBool("WEBGL_CONV_IM2COL")&&1===e.shape[0])return this.conv2dWithIm2Row(e,n,r,o,a,i);var s=null!=o,u=null!=i,c=a?Mi(a,!1):null,l=new Xo(r,s,c,u),h=[e,n];return o&&h.push(o),i&&h.push(i),this.compileAndRun(l,h)},e.prototype.conv2d=function(t,e,n){if(1===n.filterHeight&&1===n.filterWidth&&1===n.dilationHeight&&1===n.dilationWidth&&1===n.strideHeight&&1===n.strideWidth&&("SAME"===n.padInfo.type||"VALID"===n.padInfo.type))return this.conv2dByMatMul(t,e,n);if(f().getBool("WEBGL_CONV_IM2COL")&&1===t.shape[0])return this.conv2dWithIm2Row(t,e,n);var r=new Xo(n);return this.compileAndRun(r,[t,e])},e.prototype.conv2dDerInput=function(t,e,n){var r=new Vo(n);return this.compileAndRun(r,[t,e])},e.prototype.conv2dDerFilter=function(t,e,n){var r=new zo(n);return this.compileAndRun(r,[t,e])},e.prototype.fusedDepthwiseConv2D=function(t){var e,n=t.input,r=t.filter,o=t.convInfo,a=t.bias,i=t.activation,s=t.preluActivationWeights,u=f().getBool("WEBGL_PACK_DEPTHWISECONV")&&o.strideWidth<=2&&o.outChannels/o.inChannels==1,c=i?Mi(i,u):null,l=[n,r],h=null!=a,p=null!=s;return h&&l.push(a),p&&l.push(s),u?(e=new Jo(o,h,c,p),this.compileAndRun(e,l)):(e=new Yo(o,h,c,p),this.compileAndRun(e,l))},e.prototype.depthwiseConv2D=function(t,e,n){var r;return f().getBool("WEBGL_PACK_DEPTHWISECONV")&&n.strideWidth<=2&&n.outChannels/n.inChannels==1?(r=new Jo(n),this.compileAndRun(r,[t,e])):(r=new Yo(n),this.compileAndRun(r,[t,e]))},e.prototype.depthwiseConv2DDerInput=function(t,e,n){var r=new Ko(n);return this.compileAndRun(r,[t,e])},e.prototype.depthwiseConv2DDerFilter=function(t,e,n){var r=new qo(n);return this.compileAndRun(r,[t,e])},e.prototype.conv3d=function(t,e,n){var r=new $o(n);return this.compileAndRun(r,[t,e])},e.prototype.conv3dDerInput=function(t,e,n){var r=new Ho(n);return this.compileAndRun(r,[t,e])},e.prototype.conv3dDerFilter=function(t,e,n){var r=new Go(n);return this.compileAndRun(r,[t,e])},e.prototype.maxPool=function(t,e){var n=new Ha(e,"max",!1);return this.compileAndRun(n,[t])},e.prototype.avgPool=function(t,e){var n=new Ha(e,"avg",!1);return this.compileAndRun(n,[t],"float32")},e.prototype.maxPoolBackprop=function(t,e,n,r){var o=new Ha(r,"max",!0),a=this.compileAndRun(o,[e]),i=new Ba(r),s=this.compileAndRun(i,[t,a],e.dtype);return a.dispose(),s},e.prototype.avgPoolBackprop=function(t,e,n){var r=new _o(n);return this.compileAndRun(r,[t],e.dtype)},e.prototype.cast=function(t,e){return Gr(t,e,this)},e.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,a=0;a<t.rank;a++)a!==e&&(r[o++]=t.shape[a]);var i=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(a=0;a<u.length;a++)i[e]=a,u[a]=this.slice(t,i,s).reshape(r);return u},e.prototype.avgPool3d=function(t,e){var n=new qa(e,"avg",!1);return this.compileAndRun(n,[t],"float32")},e.prototype.avgPool3dBackprop=function(t,e,n){var r=new ko(n);return this.compileAndRun(r,[t],e.dtype)},e.prototype.maxPool3d=function(t,e){var n=new qa(e,"max",!1);return this.compileAndRun(n,[t],"float32")},e.prototype.maxPool3dBackprop=function(t,e,n,r){var o=new qa(r,"max",!0),a=this.compileAndRun(o,[e]),i=new La(r),s=this.compileAndRun(i,[t,a],e.dtype);return a.dispose(),s},e.prototype.reshape=function(t,e){var n=this.texData.get(t.dataId);if(n.isPacked&&!Ce(t.shape,e)&&(null===n.texture||!Ce(n.shape,e))){var r=this.packedReshape(t,e);return Ot.makeTensorFromDataId(r.dataId,r.shape,r.dtype)}return Hr(t,e)},e.prototype.resizeBilinear=function(t,e,n,r){var o=f().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new Ja(t.shape,e,n,r):new Ya(t.shape,e,n,r);return this.compileAndRun(o,[t],"float32")},e.prototype.resizeBilinearBackprop=function(t,e,n){var r=new $a(t,e,n);return this.compileAndRun(r,[t])},e.prototype.resizeNearestNeighbor=function(t,e,n,r){var o=new Za(t.shape,e,n,r);return this.compileAndRun(o,[t])},e.prototype.resizeNearestNeighborBackprop=function(t,e,n){var r=new Qa(t,e,n);return this.compileAndRun(r,[t])},e.prototype.multinomial=function(t,e,n,r){var o=e?t:_r(t),a=o.shape[0],i=o.shape[1],s=new Ua(a,i,n),u=s.getCustomSetupFunc(r);return this.compileAndRun(s,[o],"int32",u)},e.prototype.oneHot=function(t,e,n,r){var o=new ja(t.size,e,n,r);return this.compileAndRun(o,[t])},e.prototype.diag=function(t){var e=new oa(t.size);return this.compileAndRun(e,[t])},e.prototype.nonMaxSuppression=function(t,e,n,r,o){return Le("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"),Jr(t.dataSync(),e.dataSync(),n,r,o)},e.prototype.cropAndResize=function(t,e,n,r,o,a){var i=new Qo(t.shape,e.shape,r,o,a);return this.compileAndRun(i,[t,e,n],"float32")},e.prototype.depthToSpace=function(t,e,n){E(e>1,(function(){return"blockSize should be > 1 for depthToSpace, but was: "+e}));var r=t.shape[0],o="NHWC"===n?t.shape[1]:t.shape[2],a="NHWC"===n?t.shape[2]:t.shape[3],i="NHWC"===n?t.shape[3]:t.shape[1],s=o*e,u=a*e,c=i/(e*e),l=new ra("NHWC"===n?[r,s,u,c]:[r,c,s,u],e,n);return this.compileAndRun(l,[t])},e.prototype.split=function(t,e,n){return Zr(t,e,n)},e.prototype.scatterND=function(t,e,n){var r=vr(0,t,n),o=r.sliceRank,a=r.numUpdates,i=r.sliceSize,s=r.strides,u=r.outputSize,c=[u/i,i],l=t.reshape([a,o]),f=e.reshape([a,i]);if(0===u)return Hr(rn([]),n);var h=an(0),p=new ni(a,o,l.rank,f.rank,s,c);return this.compileAndRun(p,[f,l,h]).reshape(n)},e.prototype.sparseToDense=function(t,e,n,r){var o=vr(0,t,n),a=o.sliceRank,i=o.numUpdates,s=o.strides,u=o.outputSize,c=new ni(i,a,t.rank,e.rank,s,[u,1],!1);return this.compileAndRun(c,[e,t,r]).reshape(n)},e.prototype.fft=function(t){return this.fftImpl(t,!1)},e.prototype.ifft=function(t){return this.fftImpl(t,!0)},e.prototype.fftImpl=function(t,e){var n=this.texData.get(t.dataId),r=new ca("return real * expR - imag * expI;",t.shape,e),o=new ca("return real * expI + imag * expR;",t.shape,e),a=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag)],i=this.compileAndRun(r,a),s=this.compileAndRun(o,a),u=this.complex(i,s).as2D(t.shape[0],t.shape[1]);return i.dispose(),s.dispose(),u},e.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=pr(t,e),a=o[0],i=o[1],s=o[2],u=o[3],c=e.reshape([i,r]),l=t.reshape([t.size/s,s]),f=new ha(r,u,[i,s]);return this.compileAndRun(f,[l,c]).reshape(a)},e.prototype.fill=function(t,e,n){if("string"===(n=n||K(e))){var r=B(n,R(t));return r.fill(e),Ot.makeTensor(r,t,n,this)}var o=new la(t,e),a=o.getCustomSetupFunc(e);return this.compileAndRun(o,[],n,a)},e.prototype.onesLike=function(t){if("string"===t.dtype)throw new Error("onesLike is not supported under string dtype");return this.fill(t.shape,1,t.dtype)},e.prototype.zerosLike=function(t){return this.fill(t.shape,"string"===t.dtype?"":0,t.dtype)},e.prototype.linspace=function(t,e,n){return qr(t,e,n)},e.prototype.makeTensorInfo=function(t,e){var n=this.write(null,t,e);return this.texData.get(n).usage=null,{dataId:n,shape:t,dtype:e}},e.prototype.makeOutput=function(t,e){var n=this.makeTensorInfo(t,e).dataId;return Ot.makeTensorFromDataId(n,t,e,this)},e.prototype.unpackTensor=function(t){var e=new Ni(t.shape);return this.runWebGLProgram(e,[t],t.dtype)},e.prototype.packTensor=function(t){var e=new za(t.shape);return this.runWebGLProgram(e,[t],t.dtype,null,!0)},e.prototype.packedReshape=function(t,e){var n=[ye(t.shape)].concat(be(t.shape)),r={dtype:t.dtype,shape:n,dataId:t.dataId},o=[ye(e)].concat(be(e)),a=new Xa(o,n),i=this.runWebGLProgram(a,[r],t.dtype,null,!0);return{dataId:i.dataId,shape:e,dtype:i.dtype}},e.prototype.decode=function(t){var e,n=this.texData.get(t),r=n.isPacked,o=n.shape,a=n.dtype,i=xe(o);return e=r?new na(i):new ea(i),{dtype:a,shape:o,dataId:this.runWebGLProgram(e,[{shape:i,dtype:a,dataId:t}],a,null,!0).dataId}},e.prototype.runWebGLProgram=function(t,e,n,r,o){var a=this;void 0===o&&(o=!1);var i=this.makeTensorInfo(t.outputShape,n),s=this.texData.get(i.dataId);if(t.packedOutput&&(s.isPacked=!0),t.outPackingScheme===Nt.DENSE){var u=jt(t.outputShape);s.texShape=u.map((function(t){return 2*t}))}if(null!=t.outTexUsage&&(s.usage=t.outTexUsage),0===R(i.shape))return s.values=P(i.dtype,0),i;var c=[],l=e.map((function(e){if("complex64"===e.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var n=a.texData.get(e.dataId);if(null==n.texture){if(!t.packedInputs&&R(e.shape)<=f().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:e.shape,texData:null,isUniform:!0,uniformValues:n.values};t.packedInputs&&(n.isPacked=!0,n.shape=e.shape)}else if(!!n.isPacked!=!!t.packedInputs)e=n.isPacked?a.unpackTensor(e):a.packTensor(e),c.push(e),n=a.texData.get(e.dataId);else if(n.isPacked&&!Ce(n.shape,e.shape)){var r=e,o=e.shape;e.shape=n.shape,e=a.packedReshape(e,o),c.push(e),n=a.texData.get(e.dataId),r.shape=o}return a.uploadToGPU(e.dataId),{shape:e.shape,texData:n,isUniform:!1}}));this.uploadToGPU(i.dataId);var h,p={shape:i.shape,texData:s,isUniform:!1},d=function(t,e,n){var r="";e.concat(n).forEach((function(t){var e=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0,n=t.isUniform?"uniform":t.texData.texShape;r+=t.shape+"_"+n+"_"+e}));var o=t.userCode;return t.constructor.name+"_"+r+"_"+o}(t,l,p),v=this.getAndSaveBinary(d,(function(){return function(t,e,n,r){var o=e.userCode,a=n.map((function(t,n){var r={logicalShape:t.shape,texShape:t.isUniform?null:t.texData.texShape,isUniform:t.isUniform,isPacked:!t.isUniform&&t.texData.isPacked,flatOffset:null};return null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0&&(r.flatOffset=t.texData.slice.flatOffset),{name:e.variableNames[n],shapeInfo:r}})),i=a.map((function(t){return t.shapeInfo})),s={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},u=ho(a,s,o,e.packedInputs),c=t.createProgram(u),l=null,h=t.getUniformLocation(c,"NAN",!1);1===f().getNumber("WEBGL_VERSION")&&(l=t.getUniformLocation(c,"INFINITY",!1));for(var p={},d=0;d<e.variableNames.length;d++){var v=e.variableNames[d];p[v]=t.getUniformLocation(c,v,!1),p["offset"+v]=t.getUniformLocation(c,"offset"+v,!1)}return{program:e,source:u,webGLProgram:c,uniformLocations:p,inShapeInfos:i,outShapeInfo:s,infLoc:l,nanLoc:h}}(a.gpgpu,t,l,p)})),m=null!=this.activeTimers;if(m&&(h=this.startTimer()),function(t,e,n,r,o){Da(e.inShapeInfos,n),Da([e.outShapeInfo],[r]);var a=r.texData.texture,i=r.texData.texShape;r.texData.isPacked?t.setOutputPackedMatrixTexture(a,i[0],i[1]):t.setOutputMatrixTexture(a,i[0],i[1]),t.setProgram(e.webGLProgram),1===f().getNumber("WEBGL_VERSION")&&null!==e.infLoc&&t.gl.uniform1f(e.infLoc,1/0),null!==e.nanLoc&&t.gl.uniform1f(e.nanLoc,NaN),n.forEach((function(n,r){var o=e.program.variableNames[r],a=e.uniformLocations[o],i=e.uniformLocations["offset"+o];if(null!=a)if(n.isUniform)if(R(n.shape)<2)t.gl.uniform1f(a,n.uniformValues[0]);else{var s=n.uniformValues;s instanceof Float32Array||(s=new Float32Array(s)),t.gl.uniform1fv(a,s)}else null!=n.texData.slice&&null!=i&&t.gl.uniform1i(i,n.texData.slice.flatOffset),t.setInputMatrixTexture(n.texData.texture,a,r)})),null!=o&&o(t,e.webGLProgram),t.executeProgram()}(this.gpgpu,v,l,p,r),c.forEach((function(t){return a.disposeData(t.dataId)})),m&&(h=this.endTimer(h),this.activeTimers.push({name:t.constructor.name,query:this.getQueryTime(h)})),!f().getBool("WEBGL_LAZILY_UNPACK")&&s.isPacked&&!1===o){var g=this.unpackTensor(i);return this.disposeData(i.dataId),g}return i},e.prototype.compileAndRun=function(t,e,n,r,o){void 0===o&&(o=!1),n=n||e[0].dtype;var a=this.runWebGLProgram(t,e,n,r,o);return Ot.makeTensorFromDataId(a.dataId,a.shape,a.dtype)},e.prototype.getAndSaveBinary=function(t,e){return t in this.binaryCache||(this.binaryCache[t]=e()),this.binaryCache[t]},e.prototype.getTextureManager=function(){return this.textureManager},e.prototype.dispose=function(){this.disposed||(this.textureManager.dispose(),null!=this.canvas&&"undefined"!=typeof HTMLCanvasElement&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)},e.prototype.floatPrecision=function(){var t=this;return null==this.floatPrecisionValue&&(this.floatPrecisionValue=Pe((function(){if(!f().get("WEBGL_RENDER_FLOAT32_ENABLED")){var e=f().getBool("DEBUG");f().set("DEBUG",!1);var n=t.abs(an(1e-8)).dataSync()[0];if(f().set("DEBUG",e),n>0)return 32}return 16}))),this.floatPrecisionValue},e.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},e.prototype.uploadToGPU=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,a=n.values,i=n.texture,s=n.usage,u=n.isPacked;if(null==i){var c,l=null!=this.activeTimers;l&&(c=et());var f=n.texShape;if(null==f&&(f=we(r,u),n.texShape=f),null!=a){var h=xe(r),p=void 0,d=f[1],v=f[0],m=a instanceof Uint8Array;u?(d=(e=zt(f[0],f[1]))[0],v=e[1],p=new ua(h,[v,d],m)):p=new sa(h,[v,d],m);var g=this.makeTensorInfo([v,d],o);this.texData.get(g.dataId).usage=m?Ft.PIXELS:Ft.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(g.dataId),d,v,a);var y=this.runWebGLProgram(p,[g],o,null,!0),b=this.texData.get(y.dataId);n.texture=b.texture,n.texShape=b.texShape,n.isPacked=b.isPacked,n.usage=b.usage,this.disposeData(g.dataId),this.texData.delete(y.dataId),n.values=null,l&&(this.uploadWaitMs+=et()-c)}else{var x=this.acquireTexture(f,s,o,u);n.texture=x}}},e.prototype.convertAndCacheOnCPU=function(t,e){var n=this.texData.get(t),r=n.dtype;return this.releaseGPUData(t),null!=e&&(n.values=function(t,e){if("float32"===e||"complex64"===e)return t;if("int32"===e||"bool"===e){for(var n="int32"===e?new Int32Array(t.length):new Uint8Array(t.length),r=0;r<n.length;++r)n[r]=Math.round(t[r]);return n}throw new Error("Unknown dtype "+e)}(e,r)),n.values},e.prototype.acquireTexture=function(t,e,n,r){if(this.numBytesInGPU+=this.computeBytes(t,n),!this.warnedAboutMemory&&this.numBytesInGPU>1024*this.numMBBeforeWarning*1024){(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0}return this.textureManager.acquireTexture(t,e,r)},e.prototype.computeBytes=function(t,e){return t[0]*t[1]*z(e)},e}(Ir);Tt()&&Ot.registerBackend("webgl",(function(){return new Pi}),2);var Bi=Ze({square_:function(t){var e=je(t,"x","square"),n=[e];return Ot.runKernelFunc((function(t,n){return n([e]),t.square(e)}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.toFloat().mul(2))}}}),"Square",{},n,[])}}),Li=Ze({abs_:function(t){var e=je(t,"x","abs");return"complex64"===e.dtype?Ot.runKernelFunc((function(t){return t.complexAbs(e)}),{$x:e}):Ot.runKernelFunc((function(t,n){var r=t.abs(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.toFloat().step(-1))}}}),"Abs")}}),Wi=Ze({acos_:function(t){var e=je(t,"x","acos");return Ot.runKernelFunc((function(t,n){var r=t.acos(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(an(1).sub(n.toFloat().square()).sqrt()).neg()}}}))}}),Ui=Ze({acosh_:function(t){var e=je(t,"x","acosh");return Ot.runKernelFunc((function(t,n){var r=t.acosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(n.toFloat().square().sub(1).sqrt())}}}))}}),ji=Ze({asin_:function(t){var e=je(t,"x","asin");return Ot.runKernelFunc((function(t,n){var r=t.asin(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(an(1).sub(n.toFloat().square()).sqrt())}}}))}}),zi=Ze({asinh_:function(t){var e=je(t,"x","asinh");return Ot.runKernelFunc((function(t,n){var r=t.asinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.divStrict(an(1).add(n.toFloat().square()).sqrt())}}}))}}),Vi=Ze({atan_:function(t){var e=je(t,"x","atan");return Ot.runKernelFunc((function(t,n){var r=t.atan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat().square().add(1))}}}))}}),Gi=Ze({atanh_:function(t){var e=je(t,"x","atanh");return Ot.runKernelFunc((function(t,n){var r=t.atanh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(an(1).sub(n.toFloat().square()))}}}))}}),Hi=Ze({ceil_:function(t){var e=je(t,"x","ceil");return Ot.runKernelFunc((function(t){return t.ceil(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),qi=Ze({clipByValue_:function(t,e,n){var r=je(t,"x","clipByValue");E(e<=n,(function(){return"Error in clip: min ("+e+") must be less than or equal to max ("+n+")."}));var o=[r],a={min:e,max:n};return Ot.runKernelFunc((function(t,o){var a=t.clip(r,e,n);return o([r]),a}),{x:r},(function(t,r){var o=r[0];return{x:function(){return t.where(o.greaterEqual(e).logicalAnd(o.lessEqual(n)),mn(t))}}}),"ClipByValue",a,o)}}),Ki=Ze({cos_:function(t){var e=je(t,"x","cos");return Ot.runKernelFunc((function(t,n){var r=t.cos(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().sin().neg().mul(t)}}}))}}),Xi=Ze({cosh_:function(t){var e=je(t,"x","cosh");return Ot.runKernelFunc((function(t,n){var r=t.cosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().sinh().mulStrict(t)}}}))}}),$i=Ze({erf_:function(t){var e=je(t,"x","erf");return E("int32"===e.dtype||"float32"===e.dtype,(function(){return"Input dtype must be `int32` or `float32`."})),"int32"===e.dtype&&(e=e.toFloat()),Ot.runKernelFunc((function(t,n){var r=t.erf(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.square().neg().exp().mul(2/Math.sqrt(Math.PI)))}}}))}}),Yi=Ze({exp_:function(t){var e=je(t,"x","exp");return Ot.runKernelFunc((function(t,n){var r=t.exp(e);return n([r]),r}),{$x:e},(function(t,e){return{$x:function(){return t.mulStrict(e[0])}}}))}}),Ji=Ze({expm1_:function(t){var e=je(t,"x","expm1");return Ot.runKernelFunc((function(t,n){var r=t.expm1(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.exp())}}}))}}),Qi=Ze({floor_:function(t){var e=je(t,"x","floor");return Ot.runKernelFunc((function(t){return t.floor(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),Zi=Ze({log_:function(t){var e=je(t,"x","log");return Ot.runKernelFunc((function(t,n){var r=t.log(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat())}}}))}}),ts=Ze({log1p_:function(t){var e=je(t,"x","log1p");return Ot.runKernelFunc((function(t,n){var r=t.log1p(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.add(1))}}}))}}),es=Ze({logSigmoid_:function(t){var e=je(t,"x","logSigmoid");return Ot.runKernelFunc((function(t,n){var r=t.softplus(e.neg()).neg();return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.neg().sigmoid())}}}))}}),ns=Ze({neg_:function(t){var e=je(t,"x","neg");return Ot.runKernelFunc((function(t){return t.neg(e)}),{$x:e},(function(t){return{$x:function(){return t.neg()}}}))}}),rs=Ze({reciprocal_:function(t){var e=je(t,"x","reciprocal");return Ot.runKernelFunc((function(t,n){var r=t.reciprocal(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.square().neg())}}}))}}),os=Ze({round_:function(t){var e=je(t,"x","round");return Ot.runKernelFunc((function(t){return t.round(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),as=Ze({rsqrt_:function(t){var e=je(t,"x","rsqrt");return Ot.runKernelFunc((function(t,n){var r=t.rsqrt(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.pow(1.5).mul(2)).neg()}}}))}}),is=Ze({sigmoid_:function(t){var e=je(t,"x","sigmoid");return Ot.runKernelFunc((function(t,n){var r=t.sigmoid(e);return n([r]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mul(n.mul(an(1).sub(n)))}}}),"Sigmoid")}}),ss=Ze({sign_:function(t){var e=je(t,"x","sign");return Ot.runKernelFunc((function(t){return t.sign(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),us=Ze({isNaN_:function(t){var e=je(t,"x","isNaN");return Ot.runKernelFunc((function(t){return t.isNaN(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),cs=Ze({isInf_:function(t){var e=je(t,"x","isInf");return Ot.runKernelFunc((function(t){return t.isInf(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),ls=Ze({isFinite_:function(t){var e=je(t,"x","isFinite");return Ot.runKernelFunc((function(t){return t.isFinite(e)}),{$x:e},(function(t){return{$x:function(){return mn(t)}}}))}}),fs=Ze({sin_:function(t){var e=je(t,"x","sin");return Ot.runKernelFunc((function(t,n){var r=t.sin(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().cos().mul(t)}}}))}}),hs=Ze({sinh_:function(t){var e=je(t,"x","sinh");return Ot.runKernelFunc((function(t,n){var r=t.sinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return n.toFloat().cosh().mulStrict(t)}}}))}}),ps=Ze({softplus_:function(t){var e=je(t,"x","softplus");return Ot.runKernelFunc((function(t,n){var r=t.softplus(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.mul(n.sigmoid())}}}))}}),ds=Ze({sqrt_:function(t){var e=je(t,"x","sqrt");return Ot.runKernelFunc((function(t,n){var r=t.sqrt(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.toFloat().sqrt().mul(2))}}}))}}),vs=Ze({step_:function(t,e){void 0===e&&(e=0);var n=je(t,"x","step");return Ot.runKernelFunc((function(t){return t.step(n,e)}),{$x:n},(function(t){return{$x:function(){return mn(t)}}}))}}),ms=Ze({tan_:function(t){var e=je(t,"x","tan");return Ot.runKernelFunc((function(t,n){var r=t.tan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return t.div(n.cos().square())}}}))}}),gs=Ze({tanh_:function(t){var e=je(t,"x","tanh");return Ot.runKernelFunc((function(t,n){var r=t.tanh(e);return n([r]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return an(1).sub(n.square()).mulStrict(t)}}}))}});function ys(t,e,n,r,o,a){var i,s,u=je(t,"x","batchNorm"),c=je(e,"mean","batchNorm"),l=je(n,"variance","batchNorm");return null!=o&&(i=je(o,"scale","batchNorm")),null!=r&&(s=je(r,"offset","batchNorm")),E(2===u.rank,(function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."})),E(2===c.rank||1===c.rank,(function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank "+c.rank+"."})),E(2===l.rank||1===l.rank,(function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank "+l.rank+"."})),null!=i&&E(2===i.rank||1===i.rank,(function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank "+i.rank+"."})),null!=s&&E(2===s.rank||1===s.rank,(function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."})),ws(u,c,l,s,i,a)}function bs(t,e,n,r,o,a){var i,s,u=je(t,"x","batchNorm"),c=je(e,"mean","batchNorm"),l=je(n,"variance","batchNorm");return null!=o&&(i=je(o,"scale","batchNorm")),null!=r&&(s=je(r,"offset","batchNorm")),E(3===u.rank,(function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."})),E(3===c.rank||1===c.rank,(function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank "+c.rank+"."})),E(3===l.rank||1===l.rank,(function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank "+l.rank+"."})),null!=i&&E(3===i.rank||1===i.rank,(function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank "+i.rank+"."})),null!=s&&E(3===s.rank||1===s.rank,(function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."})),ws(u,c,l,s,i,a)}function xs(t,e,n,r,o,a){var i,s,u=je(t,"x","batchNorm"),c=je(e,"mean","batchNorm"),l=je(n,"variance","batchNorm");return null!=o&&(i=je(o,"scale","batchNorm")),null!=r&&(s=je(r,"offset","batchNorm")),E(4===u.rank,(function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+u.rank+"."})),E(4===c.rank||1===c.rank,(function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank "+c.rank+"."})),E(4===l.rank||1===l.rank,(function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank "+l.rank+"."})),null!=i&&E(4===i.rank||1===i.rank,(function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank "+i.rank+"."})),null!=s&&E(4===s.rank||1===s.rank,(function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."})),ws(u,c,l,s,i,a)}function ws(t,e,n,r,o,a){null==a&&(a=.001);var i,s,u,c=je(t,"x","batchNorm"),l=je(e,"mean","batchNorm"),f=je(n,"variance","batchNorm");null!=o&&(i=je(o,"scale","batchNorm")),null!=r&&(s=je(r,"offset","batchNorm")),E(l.rank===f.rank,(function(){return"Batch normalization gradient requires mean and variance to have equal ranks."})),E(null==s||l.rank===s.rank,(function(){return"Batch normalization gradient requires mean and offset to have equal ranks."})),E(null==i||l.rank===i.rank,(function(){return"Batch normalization gradient requires mean and scale to have equal ranks."})),u=0===c.rank||1===c.rank?c.as4D(1,1,1,c.size):2===c.rank?c.as4D(1,1,c.shape[0],c.shape[1]):3===c.rank?c.as4D(1,c.shape[0],c.shape[1],c.shape[2]):c;var h=[c,l,f,i];return Ot.runKernelFunc((function(t,e){var n=t.batchNormalization(u,Es(l),Es(f),a,Es(i),Es(s));return e([c,l,f,i]),n}),{x:c,mean:l,variance:f,scale:i,offset:s},(function(t,e){var n=e,r=n[0],o=n[1],i=n[2],s=n[3],c=null==s?an(1):s,l=Or(o.shape,u.shape),f=[];if(1===o.rank){for(var h=0;h<u.shape.length-1;++h)f.push(u.shape[h]);f.push(1)}var p=r.sub(o),d=t.mul(c),v=as(i.add(an(a))),m=v.mul(v).mul(v).mul(an(-.5));return{x:function(){return 1===o.rank?t.mul(ar(v.as4D(1,1,1,o.shape[0]),f)).mul(c).reshape(r.shape):t.mul(v).mul(c).reshape(r.shape)},mean:function(){var t=v.mul(an(-1)).mul(d);return 1===o.rank&&(t=t.sum(l)),t.reshape(o.shape)},variance:function(){var t=m.mul(p).mul(d);return 1===o.rank&&(t=t.sum(l)),t.reshape(o.shape)},scale:function(){var e=p.mul(v),n=t.mul(e);return 1===o.rank&&(n=n.sum(l)),n.reshape(o.shape)},offset:function(){var e=t;return 1===o.rank&&(e=e.sum(l)),e.reshape(o.shape)}}}),"BatchNormalization",{varianceEpsilon:a},h).reshape(c.shape)}function Es(t){return null==t?null:0===t.rank?t.as1D():1===t.rank?t:2===t.rank?t.as4D(1,1,t.shape[0],t.shape[1]):3===t.rank?t.as4D(1,t.shape[0],t.shape[1],t.shape[2]):t}function Cs(){Me()}var _s=Ze({batchNormalization2d_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),Cs(),ys(t,e,n,a,o,r)}}),ks=Ze({batchNormalization3d_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),Cs(),bs(t,e,n,a,o,r)}}),Rs=Ze({batchNormalization4d_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),Cs(),xs(t,e,n,a,o,r)}}),Is=Ze({batchNormalization_:function(t,e,n,r,o,a){return void 0===r&&(r=.001),Cs(),ws(t,e,n,a,o,r)}}),Ss=Ze({batchNorm_:ws}),As=Ze({batchNorm2d_:ys}),Os=Ze({batchNorm3d_:bs}),Ts=Ze({batchNorm4d_:xs}),Ds=Ze({logicalAnd_:function(t,e){var n=je(t,"a","logicalAnd","bool"),r=je(e,"b","logicalAnd","bool");return Tr(n.shape,r.shape),Ot.runKernelFunc((function(t){return t.logicalAnd(n,r)}),{$a:n,$b:r})}}),Ns=Ze({logicalNot_:function(t){var e=je(t,"x","logicalNot","bool");return Ot.runKernelFunc((function(t){return t.logicalNot(e)}),{$x:e})}}),Fs=Ze({logicalOr_:function(t,e){var n=je(t,"a","logicalOr","bool"),r=je(e,"b","logicalOr","bool");return Tr(n.shape,r.shape),Ot.runKernelFunc((function(t){return t.logicalOr(n,r)}),{$a:n,$b:r})}}),Ms=Ze({logicalXor_:function(t,e){var n=je(t,"a","logicalXor","bool"),r=je(e,"b","logicalXor","bool");return Tr(n.shape,r.shape),Fs(t,e).logicalAnd(Ds(t,e).logicalNot())}}),Ps=Ze({where_:function(t,e,n){var r=je(e,"a","where"),o=je(n,"b","where"),a=je(t,"condition","where","bool");return C(r.shape,o.shape,"Error in where: "),1===a.rank?E(a.shape[0]===r.shape[0],(function(){return"The first dimension of `a` must match the size of `condition`."})):C(a.shape,o.shape,"Error in where: "),Ot.runKernelFunc((function(t,e){var n=t.select(a,r,o);return e([a]),n}),{$condition:a,$a:r,$b:o},(function(t,e){var n=e[0];return{$condition:function(){return mn(n).toFloat()},$a:function(){return t.mul(n.cast(t.dtype))},$b:function(){return t.mul(n.logicalNot().cast(t.dtype))}}}))}}),Bs=function(t){return u(this,void 0,void 0,(function(){var e,n,r;return c(this,(function(o){switch(o.label){case 0:return[4,(e=je(t,"condition","whereAsync","bool")).data()];case 1:return n=o.sent(),r=no(e.shape,n),t!==e&&e.dispose(),[2,r]}}))}))},Ls=Ze({add_:function(t,e){var n,r=je(t,"a","add"),o=je(e,"b","add");n=_t(r,o),r=n[0],o=n[1];var a=Tr(r.shape,o.shape);return Ot.runKernelFunc((function(t){return t.add(r,o)}),{a:r,b:o},(function(t){return{a:function(){var e=t,n=Or(r.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},b:function(){var e=t,n=Or(o.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(o.shape)}}}),"Add")}}),Ws=Ze({addN_:function(t){E(Array.isArray(t),(function(){return"The argument passed to tf.addN() must be a list of tensors"})),E(t.length>=1,(function(){return"Must pass at least one tensor to tf.addN(), but got "+t.length}));var e=t.map((function(t,e){return je(t,"tensors"+e,"addN")})),n=e[0];e.forEach((function(t){if(t.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")})),e.forEach((function(t){if(!I(t.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")}));var r=e;return Ot.runKernelFunc((function(t){return t.addN(e)}),r,(function(t){var n={};return e.forEach((function(e,r){n[r]=function(){return t.clone()}})),n}),"AddN")}}),Us=Ze({addStrict_:function(t,e){var n=je(t,"a","addStrict"),r=je(e,"b","addStrict");return C(n.shape,r.shape,"Error in addStrict: "),n.add(r)}}),js=Ze({atan2_:function(t,e){var n,r=je(t,"a","atan2"),o=je(e,"b","atan2");n=_t(r,o),r=n[0],o=n[1];var a=Tr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.atan2(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){var e=Ls(n.square(),r.square()),o=t.mul(r.div(e)),i=Or(n.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(n.shape)},$b:function(){var e=Ls(n.square(),r.square()),o=ns(t.mul(n.div(e))),i=Or(r.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(r.shape)}}}))}}),zs=Ze({div_:function(t,e){var n,r=je(t,"a","div"),o=je(e,"b","div");if(n=_t(r,o),r=n[0],o=n[1],"int32"===r.dtype&&"int32"===o.dtype)return Hs(r,o);var a=Tr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.realDivide(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.div(r.toFloat()),o=Or(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Or(r.shape,a);o.length>0&&(e=e.sum(o).reshape(r.shape));var i=r.square();return e.div(i.toFloat()).neg()}}}),"Div")}}),Vs=Ze({divNoNan_:function(t,e){var n,r=je(t,"a","div"),o=je(e,"b","div");r=(n=_t(r,o))[0],o=n[1];var a=zs(r,o),i=mn(a),s=o.equal(i);return Ps(s,i,a)}}),Gs=Ze({divStrict_:function(t,e){var n=je(t,"a","div"),r=je(e,"b","div");return C(n.shape,r.shape,"Error in divideStrict: "),n.div(r)}}),Hs=Ze({floorDiv_:function(t,e){var n,r=je(t,"a","floorDiv"),o=je(e,"b","floorDiv");n=_t(r,o),r=n[0],o=n[1];var a=Tr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.floorDiv(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.div(r.toFloat()),o=Or(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Or(r.shape,a);o.length>0&&(e=e.sum(o).reshape(r.shape));var i=r.square();return e.div(i.toFloat()).neg()}}}),"FloorDiv")}}),qs=Ze({maximum_:function(t,e){var n,r=je(t,"a","maximum"),o=je(e,"b","maximum");return n=_t(r,o),r=n[0],o=n[1],"bool"===r.dtype&&(r=r.toInt(),o=o.toInt()),Tr(r.shape,o.shape),Ot.runKernelFunc((function(t,e){var n=t.maximum(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){return t.mul(n.greaterEqual(r).toFloat())},$b:function(){return t.mul(n.less(r).toFloat())}}}))}}),Ks=Ze({maximumStrict_:function(t,e){var n=je(t,"a","maximumStrict"),r=je(e,"b","maximumStrict");return C(n.shape,r.shape,"Error in maximumStrict: "),n.maximum(r)}}),Xs=Ze({minimum_:function(t,e){var n,r=je(t,"a","minimum"),o=je(e,"b","minimum");return n=_t(r,o),r=n[0],o=n[1],"bool"===r.dtype&&(r=r.toInt(),o=o.toInt()),Tr(r.shape,o.shape),Ot.runKernelFunc((function(t,e){var n=t.minimum(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){return t.mul(n.lessEqual(r).toFloat())},$b:function(){return t.mul(n.greater(r).toFloat())}}}))}}),$s=Ze({minimumStrict_:function(t,e){var n=je(t,"a","minimumStrict"),r=je(e,"b","minimumStrict");return C(n.shape,r.shape,"Error in minimumStrict: "),n.minimum(r)}}),Ys=Ze({mod_:function(t,e){var n,r=je(t,"a","mod"),o=je(e,"b","mod");n=_t(r,o),r=n[0],o=n[1];var a=Tr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.mod(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){var e=Or(n.shape,a);return e.length>0?t.sum(e).reshape(n.shape):t},$b:function(){var e=t.mul(n.div(r).floor().neg()),o=Or(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}}))}}),Js=Ze({modStrict_:function(t,e){var n=je(t,"a","modStrict"),r=je(e,"b","modStrict");return C(n.shape,r.shape,"Error in modStrict: "),n.mod(r)}}),Qs=Ze({mul_:function(t,e){var n,r=je(t,"a","mul"),o=je(e,"b","mul");n=_t(r,o),r=n[0],o=n[1];var a=Tr(r.shape,o.shape);return Ot.runKernelFunc((function(t,e){var n=t.multiply(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return{a:function(){var e=t.mul(r.toFloat()),o=Or(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Or(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}}),"Mul")}}),Zs=Ze({mulStrict_:function(t,e){var n=je(t,"a","mul"),r=je(e,"b","mul");return C(n.shape,r.shape,"Error in multiplyStrict: "),n.mul(r)}}),tu=Ze({pow_:function(t,e){var n=je(t,"base","pow"),r=je(e,"exp","pow"),o=Tr(n.shape,r.shape);return t=n.cast(Et(n.dtype,r.dtype)),e=r.cast(Et(n.dtype,r.dtype)),Ot.runKernelFunc((function(t,e){var o=t.pow(n,r);return e([n,r,o]),o}),{$base:n,$exp:r},(function(t,e){var n=e[0],r=e[1],a=e[2];return{$base:function(){var e=r.toFloat(),a=t.mul(e.mul(n.pow(e.sub(an(1))))),i=Or(n.shape,o);return i.length>0&&(a=a.sum(i)),a.reshape(n.shape)},$exp:function(){var e=n.greater(0),i=n.log().where(e,mn(n)),s=t.mul(a.mul(i)),u=Or(r.shape,o);return u.length>0&&(s=s.sum(u)),s.reshape(r.shape)}}}))}}),eu=Ze({powStrict_:function(t,e){return C(t.shape,e.shape,"Error in powStrict: "),t.pow(e)}}),nu=Ze({squaredDifference_:function(t,e){var n,r=je(t,"a","squaredDifference"),o=je(e,"b","squaredDifference");return n=_t(r,o),r=n[0],o=n[1],Tr(r.shape,o.shape),Ot.runKernelFunc((function(t,e){var n=t.squaredDifference(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1],o=an(2);return{$a:function(){return t.mul(n.sub(r).mul(o))},$b:function(){return t.mul(r.sub(n).mul(o))}}}))}}),ru=Ze({squaredDifferenceStrict_:function(t,e){var n=je(t,"a","squaredDifferenceStrict"),r=je(e,"b","squaredDifferenceStrict");return C(n.shape,r.shape,"Error in squaredDifferenceStrict: "),n.squaredDifference(r)}}),ou=Ze({sub_:function(t,e){var n,r=je(t,"a","sub"),o=je(e,"b","sub");n=_t(r,o),r=n[0],o=n[1];var a=Tr(r.shape,o.shape);return Ot.runKernelFunc((function(t){return t.subtract(r,o)}),{a:r,b:o},(function(t){return{a:function(){var e=t,n=Or(r.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},b:function(){var e=t,n=Or(o.shape,a);return n.length>0&&(e=e.sum(n)),e.neg().reshape(o.shape)}}}),"Sub")}}),au=Ze({subStrict_:function(t,e){var n=je(t,"a","subStrict"),r=je(e,"b","subStrict");return C(n.shape,r.shape,"Error in subStrict: "),n.sub(r)}}),iu=Ze({equal_:function(t,e){var n,r=je(t,"a","equal"),o=je(e,"b","equal");return n=_t(r,o),r=n[0],o=n[1],Tr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.equal(r,o)}),{$a:r,$b:o})}}),su=Ze({equalStrict_:function(t,e){var n=je(t,"a","equalStrict"),r=je(e,"b","equalStrict");return C(n.shape,r.shape,"Error in equalStrict: "),n.equal(r)}}),uu=Ze({greater_:function(t,e){var n,r=je(t,"a","greater"),o=je(e,"b","greater");return n=_t(r,o),r=n[0],o=n[1],Tr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.greater(r,o)}),{$a:r,$b:o})}}),cu=Ze({greaterEqual_:function(t,e){var n,r=je(t,"a","greaterEqual"),o=je(e,"b","greaterEqual");return n=_t(r,o),r=n[0],o=n[1],Tr(r.shape,o.shape),Ot.runKernelFunc((function(t,e){var n=t.greaterEqual(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return{$a:function(){return mn(n)},$b:function(){return mn(r)}}}))}}),lu=Ze({greaterEqualStrict_:function(t,e){var n=je(t,"a","greaterEqualStrict"),r=je(e,"b","greaterEqualStrict");return C(n.shape,r.shape,"Error in greaterEqualStrict: "),n.greaterEqual(r)}}),fu=Ze({greaterStrict_:function(t,e){var n=je(t,"a","greaterStrict"),r=je(e,"b","greaterStrict");return C(n.shape,r.shape,"Error in greaterStrict: "),n.greater(r)}}),hu=Ze({less_:function(t,e){var n,r=je(t,"a","less"),o=je(e,"b","less");return n=_t(r,o),r=n[0],o=n[1],Tr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.less(r,o)}),{$a:r,$b:o})}}),pu=Ze({lessEqual_:function(t,e){var n,r=je(t,"a","lessEqual"),o=je(e,"b","lessEqual");return n=_t(r,o),r=n[0],o=n[1],Tr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.lessEqual(r,o)}),{$a:r,$b:o})}}),du=Ze({lessEqualStrict_:function(t,e){var n=je(t,"a","lessEqualStrict"),r=je(e,"b","lessEqualStrict");return C(n.shape,r.shape,"Error in lessEqualStrict: "),n.lessEqual(r)}}),vu=Ze({lessStrict_:function(t,e){var n=je(t,"a","lessStrict"),r=je(e,"b","lessStrict");return C(n.shape,r.shape,"Error in lessStrict: "),n.less(r)}}),mu=Ze({notEqual_:function(t,e){var n,r=je(t,"a","notEqual"),o=je(e,"b","notEqual");return n=_t(r,o),r=n[0],o=n[1],Tr(r.shape,o.shape),Ot.runKernelFunc((function(t){return t.notEqual(r,o)}),{$a:r,$b:o})}}),gu=Ze({notEqualStrict_:function(t,e){var n=je(t,"a","notEqualStrict"),r=je(e,"b","notEqualStrict");return C(n.shape,r.shape,"Error in notEqualStrict: "),n.notEqual(r)}});function yu(t,e){for(var n=[],r=t;r<e;++r)n.push(r);return n}function bu(t){for(var e=[],n=0;n<t.length;++n)for(var r=0;r<t[n].length;++r)e.push(t[n][r]);return e}var xu=Ze({gather_:function(t,e,n){void 0===n&&(n=0);var r=je(t,"x","gather"),o=je(e,"indices","gather","int32");n=F(n,r.shape)[0];var a=function(t,e,n){for(var r=t.shape[n],o=[],a=1,i=1,s=0;s<n;s++)o.push(t.shape[s]),a*=t.shape[s];for(s=0;s<e.rank;s++)o.push(e.shape[s]);for(s=n+1;s<t.rank;s++)o.push(t.shape[s]),i*=t.shape[s];return{batchSize:a,sliceSize:i,dimSize:r,outputShape:o}}(r,o,n);return Ot.runKernelFunc((function(t,e){var a=t.gather(r,o.flatten(),n);return e([o]),a}),{$x:r},(function(t,e){var o=e[0];return{$x:function(){var e=r.shape,a=o.size,i=e.slice(0,n),s=i.length,u=e.slice(n,e.length).slice(1),c=u.length,l=yu(0,s),f=yu(s+1,s+1+c),h=bu([i,[a],u]),p=t.reshape(h),d=o.reshape([a]),v=bu([[s],l,f]),m=p.transpose(v),g=wu(m,d,r.shape[n]),y=$e(v);return g.transpose(y)}}})).reshape(a.outputShape)}}),wu=Ze({unsortedSegmentSum_:function(t,e,n){var r=je(t,"x","unsortedSegmentSum"),o=je(e,"segmentIds","unsortedSegmentSum","int32");return E(S(n),(function(){return"numSegments must be of dtype int"})),Ot.runKernelFunc((function(t,e){var a=t.unsortedSegmentSum(r,o,n);return e([o]),a}),{$x:r},(function(t,e){var n=e[0];return{$x:function(){return function(t,e){for(var n=qs(e,mn(e)),r=xu(t,n),o=cu(e,an(0,"int32")),a=r.rank-o.rank,i=0;i<a;++i)o=zn(o,i+1);o=Ds(o,fn(r.shape,"bool"));var s=mn(r);return Ps(o,r,s)}(t,n)}}}))}});function Eu(t,e,n,r,o,a,i){void 0===a&&(a="NHWC"),E(t.length===e.rank,(function(){return"Length of inShape ("+t.length+") and rank of dy ("+e.rank+") must match"}));var s=t,u=e,c=!1;3===e.rank&&(c=!0,u=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]),s=[1,t[0],t[1],t[2]]),E(4===s.length,(function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+s.length+"."})),E(4===u.rank,(function(){return"Error in conv2dDerInput: dy must be rank 4, but got rank "+u.rank})),E(4===n.rank,(function(){return"Error in conv2dDerInput: filter must be rank 4, but got rank "+n.rank}));var l="NHWC"===a?s[3]:s[1],f="NHWC"===a?u.shape[3]:u.shape[1];E(l===n.shape[2],(function(){return"Error in conv2dDerInput: depth of input ("+l+") must match input depth for filter "+n.shape[2]+"."})),E(f===n.shape[3],(function(){return"Error in conv2dDerInput: depth of output ("+f+") must match output depth for filter "+n.shape[3]+"."})),null!=i&&E(S(o),(function(){return"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+o+"."}));var h=Vr(a),p=Fr(s,n.shape,r,1,o,i,!1,h),d=Ot.runKernelFunc((function(t,e){var r=t.conv2dDerInput(u,n,p);return e([n,u]),r}),{dy4D:u,filter:n},(function(t,e){var n=e[0],s=e[1];return{dy4D:function(){return Ru(t,n,r,o,a,1,i)},filter:function(){return Su(t,s,n.shape,r,o,a,i)}}}));return c?d.as3D(d.shape[1],d.shape[2],d.shape[3]):d}function Cu(t){var e=function(t){return"number"==typeof t?[t,t,t]:2===t.length?[t[0],t[1],1]:t}(t),n=e[0],r=e[1],o=e[2];return 1===n&&1===r&&1===o}function _u(t,e,n,r,o){E(t.length===e.rank,(function(){return"Length of inShape ("+t.length+") and rank of dy ("+e.rank+") must match"}));var a=t,i=e,s=!1;4===e.rank&&(s=!0,i=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]),a=[1,t[0],t[1],t[2],t[3]]);var u=a[4],c=i.shape[4];E(5===a.length,(function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+a.length+"."})),E(5===i.rank,(function(){return"Error in conv3dDerInput: dy must be rank 5, but got rank "+i.rank})),E(5===n.rank,(function(){return"Error in conv3dDerInput: filter must be rank 5, but got rank "+n.rank})),E(u===n.shape[3],(function(){return"Error in conv3dDerInput: depth of input ("+u+") must match input depth for filter "+n.shape[3]+"."})),E(c===n.shape[4],(function(){return"Error in conv3dDerInput: depth of output ("+c+") must match output depth for filter "+n.shape[4]+"."}));var l=Mr(a,n.shape,r,1,o),f=Ot.runKernelFunc((function(t){return t.conv3dDerInput(i,n,l)}),{dy5D:i});return s?f.as4D(f.shape[1],f.shape[2],f.shape[3],f.shape[4]):f}var ku=Ze({conv1d_:function(t,e,n,r,o,a,i){void 0===o&&(o="NWC"),void 0===a&&(a=1);var s=je(t,"x","conv1d"),u=je(e,"filter","conv1d"),c=s,l=!1;2===s.rank&&(l=!0,c=s.as3D(1,s.shape[0],s.shape[1])),E(3===c.rank,(function(){return"Error in conv1d: input must be rank 3, but got rank "+c.rank+"."})),E(3===u.rank,(function(){return"Error in conv1d: filter must be rank 3, but got rank "+u.rank+"."})),null!=i&&E(S(r),(function(){return"Error in conv1d: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+r+"."})),E(c.shape[2]===u.shape[1],(function(){return"Error in conv1d: depth of input ("+c.shape[2]+") must match input depth for filter "+u.shape[1]+"."})),E(zr(n,a),(function(){return"Error in conv1D: Either stride or dilation must be 1. Got stride "+n+" and dilation '"+a+"'"})),E("NWC"===o,(function(){return"Error in conv1d: got dataFormat of "+o+" but only NWC is currently supported."}));var f=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),h=c.as4D(c.shape[0],1,c.shape[1],c.shape[2]),p=Ru(h,f,[1,n],r,"NHWC",[1,a],i);return l?p.as2D(p.shape[2],p.shape[3]):p.as3D(p.shape[0],p.shape[2],p.shape[3])}}),Ru=Ze({conv2d_:function(t,e,n,r,o,a,i){void 0===o&&(o="NHWC"),void 0===a&&(a=[1,1]);var s=je(t,"x","conv2d"),u=je(e,"filter","conv2d"),c=s,l=!1;3===s.rank&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),E(4===c.rank,(function(){return"Error in conv2d: input must be rank 4, but got rank "+c.rank+"."})),E(4===u.rank,(function(){return"Error in conv2d: filter must be rank 4, but got rank "+u.rank+"."})),null!=i&&E(S(r),(function(){return"Error in conv2d: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+r+"."}));var f="NHWC"===o?c.shape[3]:c.shape[1];E(f===u.shape[2],(function(){return"Error in conv2d: depth of input ("+f+") must match input depth for filter "+u.shape[2]+"."})),E(zr(n,a),(function(){return"Error in conv2D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+a+"'"}));var h=Vr(o),p=Fr(c.shape,u.shape,n,a,r,i,!1,h),d=[u,c],v=Ot.runKernelFunc((function(t,e){var n=t.conv2d(c,u,p);return e([u,c]),n}),{x:c,filter:u},(function(t,e){var i=e,s=i[0],u=i[1];return E(jr(a),(function(){return"Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+a+"'"})),{x:function(){return Au(u.shape,t,s,n,r,o)},filter:function(){return Su(u,t,s.shape,n,r,o)}}}),"Conv2D",p,d);return l?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),Iu=Ze({conv3d_:function(t,e,n,r,o,a){void 0===o&&(o="NDHWC"),void 0===a&&(a=[1,1,1]);var i=je(t,"x","conv3d"),s=je(e,"filter","conv3d"),u=i,c=!1;4===i.rank&&(c=!0,u=i.as5D(1,i.shape[0],i.shape[1],i.shape[2],i.shape[3])),E(5===u.rank,(function(){return"Error in conv3d: input must be rank 5, but got rank "+u.rank+"."})),E(5===s.rank,(function(){return"Error in conv3d: filter must be rank 5, but got rank "+s.rank+"."})),E(u.shape[4]===s.shape[3],(function(){return"Error in conv3d: depth of input ("+u.shape[4]+") must match input depth for filter "+s.shape[3]+"."})),E(function(t,e){return Cu(t)||Cu(e)}(n,a),(function(){return"Error in conv3D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+a+"'"})),E("NDHWC"===o,(function(){return"Error in conv3d: got dataFormat of "+o+" but only NDHWC is currently supported."}));var l=Mr(u.shape,s.shape,n,a,r),f=Ot.runKernelFunc((function(t,e){var n=t.conv3d(u,s,l);return e([u,s]),n}),{x:u,$filter:s},(function(t,e){E(Cu(a),(function(){return"Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+a+"'"}));var o=e[0],i=e[1];return{x:function(){return _u(o.shape,t,i,n,r)},$filter:function(){return function(t,e,n,r,o){var a=t;4===t.rank&&(a=t.as5D(1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]));var i=e;4===i.rank&&(i=e.as5D(1,e.shape[0],e.shape[1],e.shape[2],e.shape[3])),E(5===a.rank,(function(){return"Error in conv3dDerFilter: input must be rank 5, but got shape "+a.shape+"."})),E(5===i.rank,(function(){return"Error in conv3dDerFilter: dy must be rank 5, but got shape "+i.shape+"."})),E(5===n.length,(function(){return"Error in conv3dDerFilter: filterShape must be length 5, but got "+n+"."})),E(a.shape[4]===n[3],(function(){return"Error in conv3dDerFilter: depth of input "+a.shape[4]+") must match input depth in filter ("+n[3]+"."})),E(i.shape[4]===n[4],(function(){return"Error in conv3dDerFilter: depth of dy ("+i.shape[4]+") must match output depth for filter ("+n[4]+")."}));var s=Mr(a.shape,n,r,1,o);return Ot.runKernelFunc((function(t){return t.conv3dDerFilter(a,i,s)}),{x5D:a,dy5D:i})}(o,t,i.shape,n,r)}}}));return c?f.as4D(f.shape[1],f.shape[2],f.shape[3],f.shape[4]):f}}),Su=Ze({conv2dDerFilter_:function(t,e,n,r,o,a,i){void 0===a&&(a="NHWC");var s=t;3===t.rank&&(s=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var u=e;3===u.rank&&(u=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),E(4===s.rank,(function(){return"Error in conv2dDerFilter: input must be rank 4, but got shape "+s.shape+"."})),E(4===u.rank,(function(){return"Error in conv2dDerFilter: dy must be rank 4, but got shape "+u.shape+"."})),E(4===n.length,(function(){return"Error in conv2dDerFilter: filterShape must be length 4, but got "+n+"."}));var c="NHWC"===a?s.shape[3]:s.shape[1],l="NHWC"===a?u.shape[3]:u.shape[1];E(c===n[2],(function(){return"Error in conv2dDerFilter: depth of input "+c+") must match input depth in filter ("+n[2]+"."})),E(l===n[3],(function(){return"Error in conv2dDerFilter: depth of dy ("+l+") must match output depth for filter ("+n[3]+")."})),null!=i&&E(S(o),(function(){return"Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+o+"."}));var f=Vr(a),h=Fr(s.shape,n,r,1,o,i,!1,f);return Ot.runKernelFunc((function(t){return t.conv2dDerFilter(s,u,h)}),{x4D:s,dy4D:u})}}),Au=Ze({conv2dDerInput_:Eu}),Ou=Ze({depthwiseConv2d_:function(t,e,n,r,o,a,i){void 0===o&&(o="NHWC"),void 0===a&&(a=[1,1]);var s=je(t,"x","depthwiseConv2d"),u=je(e,"filter","depthwiseConv2d"),c=s,l=!1;3===s.rank&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),E(4===c.rank,(function(){return"Error in depthwiseConv2d: input must be rank 4, but got rank "+c.rank+"."})),E(4===u.rank,(function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+u.rank+"."})),E(c.shape[3]===u.shape[2],(function(){return"Error in depthwiseConv2d: number of input channels ("+c.shape[3]+") must match the inChannels dimension in filter "+u.shape[2]+"."})),null==a&&(a=[1,1]),E(zr(n,a),(function(){return"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+a+"'"})),null!=i&&E(S(r),(function(){return"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+r+"."}));var f=Fr(c.shape,u.shape,n,a,r,i,!0),h=[c,u],p=Ot.runKernelFunc((function(t,e){var n=t.depthwiseConv2D(c,u,f);return e([c,u]),n}),{x:c,filter:u},(function(t,e){E(jr(a),(function(){return"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+a+"'"}));var n=e[0],r=e[1];return{x:function(){return Tu(n.shape,t,r,f)},filter:function(){return Du(n,t,r.shape,f)}}}),"DepthwiseConv2dNative",f,h);return l?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}}),Tu=Ze({depthwiseConv2dDerInput_:function(t,e,n,r){var o=e,a=!1;3===e.rank&&(a=!0,o=e.as4D(1,e.shape[0],e.shape[1],e.shape[2]));var i=Ot.runKernelFunc((function(t){return t.depthwiseConv2DDerInput(o,n,r)}),{dy4D:o});return a?i.as3D(i.shape[1],i.shape[2],i.shape[3]):i}}),Du=Ze({depthwiseConv2dDerFilter_:function(t,e,n,r){var o=t;3===t.rank&&(o=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var a=e;return 3===a.rank&&(a=e.as4D(1,e.shape[0],e.shape[1],e.shape[2])),Ot.runKernelFunc((function(t){return t.depthwiseConv2DDerFilter(o,a,r)}),{x4D:o,dy4D:a})}}),Nu=Ze({separableConv2d_:function(t,e,n,r,o,a,i){void 0===a&&(a=[1,1]),void 0===i&&(i="NHWC");var s=je(t,"x","separableConv2d"),u=je(e,"depthwiseFilter","separableConv2d"),c=je(n,"pointwiseFilter","separableConv2d"),l=s,f=!1;if(3===s.rank&&(f=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),"NCHW"===i)throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");E(4===l.rank,(function(){return"Error in separableConv2d: input must be rank 4, but got rank "+l.rank+"."})),E(4===u.rank,(function(){return"Error in separableConv2d: depthwise filter must be rank 4, but got rank "+u.rank+"."})),E(4===c.rank,(function(){return"Error in separableConv2d: pointwise filter must be rank 4, but got rank "+u.rank+"."})),E(1===c.shape[0],(function(){return"Error in separableConv2d: the first dimension of pointwise filter must be 1, but got "+c.shape[0]+"."})),E(1===c.shape[1],(function(){return"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got "+c.shape[1]+"."}));var h=u.shape[2],p=u.shape[3];E(c.shape[2]===h*p,(function(){return"Error in separableConv2d: the third dimension of pointwise filter must be "+h*p+", but got "+c.shape[2]+"."}));var d=Ou(l,u,r,o,i,a),v=Ru(d,c,1,"valid",i);return f?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),Fu=Ze({conv2dTranspose_:function(t,e,n,r,o,a){return Eu(n,je(t,"x","conv2dTranspose"),je(e,"filter","conv2dTranspose"),r,o,"NHWC",a)}}),Mu=Ze({conv3dTranspose_:function(t,e,n,r,o){return _u(n,je(t,"x","conv3dTranspose"),je(e,"filter","conv3dTranspose"),r,o)}}),Pu=Ze({matMul_:function(t,e,n,r){var o;void 0===n&&(n=!1),void 0===r&&(r=!1);var a=je(t,"a","matMul"),i=je(e,"b","matMul");o=_t(a,i),a=o[0],i=o[1];var s=n?a.shape[a.rank-2]:a.shape[a.rank-1],u=r?i.shape[i.rank-1]:i.shape[i.rank-2],c=n?a.shape[a.rank-1]:a.shape[a.rank-2],l=r?i.shape[i.rank-2]:i.shape[i.rank-1],f=a.shape.slice(0,-2),h=i.shape.slice(0,-2),p=R(f),d=R(h);E(a.rank>=2&&i.rank>=2&&a.rank===i.rank,(function(){return"Error in matMul: inputs must have the same rank of at least 2, got ranks "+a.rank+" and "+i.rank+"."})),E(I(f,h),(function(){return"Error in matMul: outer dimensions ("+f+") and ("+h+") of Tensors with shapes "+a.shape+" and "+i.shape+" must match."})),E(s===u,(function(){return"Error in matMul: inner shapes ("+s+") and ("+u+") of Tensors with shapes "+a.shape+" and "+i.shape+" and transposeA="+n+" and transposeB="+r+" must match."}));var v=a.shape.slice(0,-2).concat([c,l]),m=n?a.as3D(p,s,c):a.as3D(p,c,s),g=r?i.as3D(d,l,u):i.as3D(d,u,l),y={transposeA:n,transposeB:r};return Ot.runKernelFunc((function(t,e){var o=t.batchMatMul(m,g,n,r);return e([m,g]),o}),{a:m,b:g},(function(t,e){var o=e,a=o[0],i=o[1];return n||r?!n&&r?{a:function(){return t.matMul(i,!1,!1)},b:function(){return t.matMul(a,!0,!1)}}:n&&!r?{a:function(){return i.matMul(t,!1,!0)},b:function(){return a.matMul(t,!1,!1)}}:{a:function(){return i.matMul(t,!0,!0)},b:function(){return t.matMul(a,!0,!0)}}:{a:function(){return t.matMul(i,!1,!0)},b:function(){return a.matMul(t,!0,!1)}}}),"BatchMatMul",y).reshape(v)}}),Bu=Ze({dot_:function(t,e){var n=je(t,"t1","dot"),r=je(e,"t2","dot");E(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),(function(){return"Error in dot: inputs must all be rank 1 or 2, but got ranks "+n.rank+" and "+r.rank+"."}));var o=1===n.rank?n.size:n.shape[1],a=1===r.rank?r.size:r.shape[0];return E(o===a,(function(){return"Error in dot: inner dimensions of inputs must match, but got "+o+" and "+a+"."})),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),Lu=Ze({outerProduct_:function(t,e){var n=je(t,"v1","outerProduct"),r=je(e,"v2","outerProduct");return E(1===n.rank&&1===r.rank,(function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+n.rank+" and "+r.rank+"."})),n.as2D(-1,1).matMul(r.as2D(1,-1))}}),Wu=Ze({reverse_:function(t,e){var n=je(t,"x","reverse");if(0===n.rank)return n.clone();var r=F(e,n.shape);return Ot.runKernelFunc((function(t){return t.reverse(n,r)}),{$x:n},(function(t){return{$x:function(){return t.reverse(r)}}})).reshapeAs(n)}}),Uu=Ze({reverse1d_:function(t){var e=je(t,"x","reverse");return E(1===e.rank,(function(){return"Error in reverse1D: x must be rank 1 but got rank "+e.rank+"."})),Wu(e,0)}}),ju=Ze({reverse2d_:function(t,e){var n=je(t,"x","reverse");return E(2===n.rank,(function(){return"Error in reverse2D: x must be rank 2 but got rank "+n.rank+"."})),Wu(n,e)}}),zu=Ze({reverse3d_:function(t,e){var n=je(t,"x","reverse");return E(3===n.rank,(function(){return"Error in reverse3D: x must be rank 3 but got rank "+n.rank+"."})),Wu(n,e)}}),Vu=Ze({reverse4d_:function(t,e){var n=je(t,"x","reverse");return E(4===n.rank,(function(){return"Error in reverse4D: x must be rank 4 but got rank "+n.rank+"."})),Wu(n,e)}});function Gu(t,e,n,r,o,a){var i=je(t,"x","maxPool"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),null==r&&(r=[1,1]),E(4===s.rank,(function(){return"Error in maxPool: input must be rank 4 but got rank "+s.rank+"."})),E(zr(n,r),(function(){return"Error in maxPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"})),null!=a&&E(S(o),(function(){return"Error in maxPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."}));var c=Dr(s.shape,e,n,r,o,a);if(1===c.filterWidth&&1===c.filterHeight&&I(c.inShape,c.outShape))return i.clone();var l=[s],f=Ot.runKernelFunc((function(t,e){var n=t.maxPool(s,c);return e([s,n]),n}),{x:s},(function(t,a){var i=a[0],s=a[1];return{x:function(){return function(t,e,n,r,o,a,i,s){var u=je(t,"dy","maxPoolBackprop"),c=je(e,"input","maxPoolBackprop"),l=je(n,"output","maxPoolBackprop");E(c.rank===u.rank,(function(){return"Rank of input ("+c.rank+") does not match rank of dy ("+u.rank+")"})),null==a&&(a=[1,1]),E(zr(o,a),(function(){return"Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+a+"'"})),E(4===u.rank,(function(){return"Error in maxPoolBackprop: dy must be rank 4 but got rank "+u.rank+"."})),E(4===c.rank,(function(){return"Error in maxPoolBackprop: input must be rank 4 but got rank "+c.rank+"."}));var f=Dr(c.shape,r,o,a,i,s);return Ot.runKernelFunc((function(t){return t.maxPoolBackprop(u,c,l,f)}),{$dy:u,$input:c})}(t,i,s,e,n,r,o)}}}),"MaxPool",c,l);return u?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}function Hu(t,e,n,r,o,a){var i=je(t,"x","avgPool","float32");null==r&&(r=[1,1]),E(zr(n,r),(function(){return"Error in avgPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"}));var s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),E(4===s.rank,(function(){return"Error in avgPool: x must be rank 4 but got rank "+s.rank+"."})),null!=a&&E(S(o),(function(){return"Error in avgPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."}));var c=Dr(s.shape,e,n,r,o,a);if(1===c.filterWidth&&1===c.filterHeight&&I(c.inShape,c.outShape))return i.clone();var l=Ot.runKernelFunc((function(t){return t.avgPool(s,c)}),{x:s},(function(t){return{x:function(){return function(t,e,n,r,o,a){var i=je(t,"dy","avgPoolBackprop"),s=je(e,"input","avgPoolBackprop");E(s.rank===i.rank,(function(){return"Rank of input ("+s.rank+") does not match rank of dy ("+i.rank+")"})),null==o&&(o=[1,1]),E(zr(r,o),(function(){return"Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+o+"'"}));var u=s,c=i,l=!1;3===s.rank&&(l=!0,u=s.as4D(1,s.shape[0],s.shape[1],s.shape[2]),c=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),E(4===c.rank,(function(){return"Error in avgPoolBackprop: dy must be rank 4 but got rank "+c.rank+"."})),E(4===u.rank,(function(){return"Error in avgPoolBackprop: input must be rank 4 but got rank "+u.rank+"."}));var f=Dr(u.shape,n,r,o,a),h=Ot.runKernelFunc((function(t){return t.avgPoolBackprop(c,u,f)}),{dy4D:c,input4D:u});return l?h.as3D(h.shape[1],h.shape[2],h.shape[3]):h}(t,s,e,n,r,o)}}}),"AvgPool",c);return l=l.cast(i.dtype),u?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}var qu=Ze({maxPool_:function(t,e,n,r,o){return Gu(t,e,n,1,r,o)}}),Ku=Ze({avgPool_:function(t,e,n,r,o){return Hu(t,e,n,1,r,o)}}),Xu=Ze({pool_:function(t,e,n,r,o,a){null==o&&(o=[1,1]),null==a&&(a=1),0===r&&(r="valid");var i=je(t,"x","maxPool"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),E(zr(a,o),(function(){return"Error in pool: Either strides or dilations must be 1. Got strides "+a+" and dilations '"+o+"'"}));var c,l=Dr(s.shape,e,a,o,r),f=[l.dilationHeight,l.dilationWidth];c="same"===r?function(t,e){var n=t.map((function(t,n){return t+(t-1)*(e[n]-1)})).map((function(t){return t-1})),r=n.map((function(t){return Math.floor(t/2)})),o=n.map((function(t,e){return t-r[e]}));return n.map((function(t,e){return[r[e],o[e]]}))}([l.filterHeight,l.filterWidth],f):[[0,0],[0,0]];var h=1===f[0]&&1===f[1],p=function(t,e,n){var r=n.map((function(t){return t[0]})),o=n.map((function(t){return t[1]})),a=t.concat(r,o),i=e.map((function(t,e){return(t-a[e]%t)%t})),s=o.map((function(t,e){return t+i[e]}));return[e.map((function(t,e){return[r[e],s[e]]})),e.map((function(t,e){return[0,i[e]]}))]}([l.inHeight,l.inWidth],f,c),d=p[0],v=p[1],m=h?r:"valid",g=h?s:nr(s,f,d),y=("avg"===n?function(){return Hu(g,e,a,1,m)}:function(){return Gu(g,e,a,1,m)})(),b=h?y:Pn(y,f,v);return u?b.as3D(b.shape[1],b.shape[2],b.shape[3]):b}}),$u=Ze({maxPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a="NDHWC");var s=je(t,"x","maxPool3d"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),E(5===u.rank,(function(){return"Error in maxPool3d: x must be rank 5 but got rank "+u.rank+"."})),E("NDHWC"===a,(function(){return"Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of "+a})),E(zr(n,i),(function(){return"Error in maxPool3d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"})),null!=o&&E(S(r),(function(){return"Error in maxPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."}));var l=Nr(u.shape,e,n,i,r,o,a),f=Ot.runKernelFunc((function(t,e){var n=t.maxPool3d(u,l);return e([u,n]),n}),{x:u},(function(t,a){var s=a[0],u=a[1];return{x:function(){return function(t,e,n,r,o,a,i,s){var u=je(t,"dy","maxPool3dBackprop"),c=je(e,"input","maxPool3dBackprop"),l=je(n,"output","maxPool3dBackprop"),f=u,h=c,p=l,d=!1;4===c.rank&&(d=!0,f=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]),h=c.as5D(1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]),p=l.as5D(1,l.shape[0],l.shape[1],l.shape[2],l.shape[3])),E(5===f.rank,(function(){return"Error in maxPool3dBackprop: dy must be rank 5 but got rank "+f.rank+"."})),E(5===h.rank,(function(){return"Error in maxPool3dBackprop: input must be rank 5 but got rank "+h.rank+"."})),E(5===p.rank,(function(){return"Error in maxPool3dBackprop: output must be rank 5 but got rank "+p.rank+"."})),null==a&&(a=[1,1,1]),E(zr(o,a),(function(){return"Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+a+"'"})),null!=s&&E(S(i),(function(){return"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+s+" but got pad "+i+"."}));var v=Nr(h.shape,r,o,a,i,s),m=Ot.runKernelFunc((function(t){return t.maxPool3dBackprop(f,h,p,v)}),{dy5D:f,input5D:h});return d?m.as4D(m.shape[1],m.shape[2],m.shape[3],m.shape[4]):m}(t,s,u,e,n,i,r,o)}}}));return c?f.as4D(f.shape[1],f.shape[2],f.shape[3],f.shape[4]):f}}),Yu=Ze({avgPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a="NDHWC");var s=je(t,"x","avgPool3d","float32"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),E(5===u.rank,(function(){return"Error in avgPool3d: x must be rank 5 but got rank "+u.rank+"."})),E("NDHWC"===a,(function(){return"Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of "+a})),E(zr(n,i),(function(){return"Error in avgPool3d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"})),null!=o&&E(S(r),(function(){return"Error in avgPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."}));var l=Nr(u.shape,e,n,i,r,o,a),f=Ot.runKernelFunc((function(t){return t.avgPool3d(u,l)}),{x:u},(function(t){return{x:function(){return function(t,e,n,r,o,a,i){var s=je(t,"dy","avgPool3dBackprop"),u=je(e,"input","avgPool3dBackprop"),c=s,l=u,f=!1;4===u.rank&&(f=!0,c=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]),l=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3])),E(5===c.rank,(function(){return"Error in avgPool3dBackprop: dy must be rank 5 but got rank "+c.rank+"."})),E(5===l.rank,(function(){return"Error in avgPool3dBackprop: input must be rank 5 but got rank "+l.rank+"."})),null==o&&(o=[1,1,1]),E(zr(r,o),(function(){return"Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+o+"'"})),null!=i&&E(S(a),(function(){return"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+"."}));var h=Nr(l.shape,n,r,o,a,i),p=Ot.runKernelFunc((function(t){return t.avgPool3dBackprop(c,l,h)}),{dy5D:c,input5D:l});return f?p.as4D(p.shape[1],p.shape[2],p.shape[3],p.shape[4]):p}(t,u,e,n,i,r,o)}}}));return f=f.cast(u.dtype),c?f.as4D(f.shape[1],f.shape[2],f.shape[3],f.shape[4]):f}}),Ju=Ze({slice_:function(t,e,n){var r,o,a=je(t,"x","slice");if(0===a.rank)throw new Error("Slicing scalar is not possible");(r="number"==typeof e?[e].concat(new Array(a.rank-1).fill(0)):e.length<a.rank?e.concat(new Array(a.rank-e.length).fill(0)):e.slice()).forEach((function(t){E(-1!==t,(function(){return"slice() does not support negative begin indexing."}))})),o=(o=null==n?new Array(a.rank).fill(-1):"number"==typeof n?[n].concat(new Array(a.rank-1).fill(-1)):n.length<a.rank?n.concat(new Array(a.rank-n.length).fill(-1)):n).map((function(t,e){return t>=0?t:(E(-1===t,(function(){return"Negative size values should be exactly -1 but got "+t+" for the slice() size at index "+e+"."})),a.shape[e]-r[e])})),mr(a,r,o);var i=a.shape,s={begin:r,size:o};return Ot.runKernelFunc((function(t){return t.slice(a,r,o)}),{x:a},(function(t){for(var e=[],n=0;n<t.rank;n++)e.push([r[n],i[n]-r[n]-o[n]]);return{x:function(){return t.pad(e)}}}),"Slice",s)}}),Qu=Ze({slice1d_:function(t,e,n){var r=je(t,"x","slice1d");return E(1===r.rank,(function(){return"slice1d expects a rank-1 tensor, but got a rank-"+r.rank+" tensor"})),Ju(r,[e],[n])}}),Zu=Ze({slice2d_:function(t,e,n){var r=je(t,"x","slice2d");return E(2===r.rank,(function(){return"slice2d expects a rank-2 tensor, but got a rank-"+r.rank+" tensor"})),Ju(r,e,n)}}),tc=Ze({slice3d_:function(t,e,n){var r=je(t,"x","slice3d");return E(3===r.rank,(function(){return"slice3d expects a rank-3 tensor, but got a rank-"+r.rank+" tensor"})),Ju(r,e,n)}}),ec=Ze({slice4d_:function(t,e,n){var r=je(t,"x","slice4d");return E(4===r.rank,(function(){return"slice4d expects a rank-4 tensor, but got a rank-"+r.rank+" tensor"})),Ju(r,e,n)}});function nc(t,e,n,r,o){return e.rank<n.rank&&(e=e.reshape(qe(e.shape,r))),t.rank<n.rank&&(t=t.reshape(qe(t.shape,r))),{x:function(){var r=t.mul(n.equal(e).cast(t.dtype));return null==o?r:r.transpose(o)}}}var rc=Ze({all_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","all","bool"),o=F(e,r.shape),a=o,i=Xe(a,r.rank);null!=i&&(r=r.transpose(i),a=Ye(a.length,r.rank));var s=Ot.runKernelFunc((function(t){return t.all(r,a)}),{$x:r});if(n){var u=qe(s.shape,o);return s.reshape(u)}return s}}),oc=Ze({any_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","any","bool"),o=F(e,r.shape),a=o,i=Xe(a,r.rank);null!=i&&(r=r.transpose(i),a=Ye(a.length,r.rank));var s=Ot.runKernelFunc((function(t){return t.any(r,a)}),{$x:r});if(n){var u=qe(s.shape,o);return s.reshape(u)}return s}}),ac=Ze({argMax_:function(t,e){void 0===e&&(e=0);var n=je(t,"x","argMax");null==e&&(e=0);var r=F(e,n.shape),o=Xe(r,n.rank);null!=o&&(n=n.transpose(o),r=Ye(r.length,n.rank));var a={axis:r[0]},i=[n];return Ot.runKernelFunc((function(t,e){var o=t.argMax(n,r[0]);return e([n]),o}),{x:n},(function(t,e){var n=e[0];return{x:function(){return mn(n)}}}),"ArgMax",a,i)}}),ic=Ze({argMin_:function(t,e){void 0===e&&(e=0);var n=je(t,"x","argMin");null==e&&(e=0);var r=F(e,n.shape),o=Xe(r,n.rank);return null!=o&&(n=n.transpose(o),r=Ye(r.length,n.rank)),Ot.runKernelFunc((function(t,e){var o=t.argMin(n,r[0]);return e([n]),o}),{$x:n},(function(t,e){var n=e[0];return{$x:function(){return mn(n)}}}))}}),sc=Ze({logSumExp_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","logSumExp"),o=F(e,r.shape),a=r.max(o,!0),i=r.sub(a).exp().sum(o).log(),s=a.reshape(i.shape).add(i);if(n){var u=qe(s.shape,o);return s.reshape(u)}return s}}),uc=Ze({max_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","max"),o=r,a=F(e,r.shape),i=a,s=Xe(i,r.rank);null!=s&&(r=r.transpose(s),i=Ye(i.length,r.rank));var u=[r],c=Ot.runKernelFunc((function(t,e){var n=t.max(r,i);return e([o,n]),n}),{x:r},(function(t,e){return nc(t,e[1],e[0],a,s)}),"Max",{axes:i},u,[!0]);if(n){var l=qe(c.shape,a);c=c.reshape(l)}return c}}),cc=Ze({mean_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","mean"),o=F(e,r.shape),a=R(He(r.shape,o)[1]);return Cr((function(t){var r=an(a);return{value:(r.dtype===t.dtype?t:t.cast(r.dtype)).div(r).sum(e,n),gradFunc:function(e){var n=t.shape.slice();return o.forEach((function(t){n[t]=1})),e.reshape(n).mul(fn(t.shape,"float32")).div(a)}}}))(r)}}),lc=Ze({min_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","min"),o=r,a=F(e,r.shape),i=a,s=Xe(i,r.rank);null!=s&&(r=r.transpose(s),i=Ye(i.length,r.rank));var u=[r],c=Ot.runKernelFunc((function(t,e){var n=t.min(r,i);return e([o,n]),n}),{x:r},(function(t,e){return nc(t,e[1],e[0],a,s)}),"Min",{axes:i},u,[!0]);if(n){var l=qe(c.shape,a);c=c.reshape(l)}return c}}),fc=Ze({moments_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=F(e,(t=je(t,"x","moments")).shape),o=t.mean(r,n),a=o.shape;n||(a=qe(o.shape,r));var i=t.toFloat().sub(o.reshape(a)).square();return{mean:o,variance:i.mean(r,n)}}}),hc=Ze({sum_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","sum");"bool"===r.dtype&&(r=r.toInt());var o=F(e,r.shape);return Cr((function(t){var e=Xe(o,t.rank),r=o,a=t;null!=e&&(a=t.transpose(e),r=Ye(r.length,t.rank));var i=Ot.runKernelFunc((function(t){return t.sum(a,r)}),{permutedX:a});if(n){var s=qe(i.shape,o);i=i.reshape(s)}return{value:i,gradFunc:function(e){var n=t.shape.slice();return o.forEach((function(t){n[t]=1})),e.reshape(n).mul(fn(t.shape,"float32"))}}}))(r)}}),pc=Ze({prod_:function(t,e,n){void 0===e&&(e=null),void 0===n&&(n=!1);var r=je(t,"x","prod");"bool"===r.dtype&&(r=r.toInt());var o=F(e,r.shape),a=Xe(o,r.rank),i=o,s=r;null!=a&&(s=r.transpose(a),i=Ye(i.length,r.rank));var u=Ot.runKernelFunc((function(t){return t.prod(s,i)}),{permutedX:s});if(n){var c=qe(u.shape,o);u=u.reshape(c)}return u}}),dc=Ze({elu_:function(t){var e=je(t,"x","elu");return Ot.runKernelFunc((function(t,n){var r=t.elu(e);return n([r]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){return Ot.runKernelFunc((function(e){return e.eluDer(t,n)}),{dy:t,y:n})}}}))}}),vc=Ze({leakyRelu_:function(t,e){void 0===e&&(e=.2);var n=je(t,"x","leakyRelu");return qs(an(e).mul(n),n)}}),mc=Ze({prelu_:function(t,e){var n=je(t,"x","prelu"),r=je(e,"alpha","prelu");return Ot.runKernelFunc((function(t,e){var o=t.prelu(n,r);return e([n,r]),o}),{x:n,alpha:r},(function(t,e){var n=e[0],r=e[1],o=n.greater(0);return{x:function(){return Ps(o,t,t.mul(r))},alpha:function(){var e=Ps(o,mn(t),t.mul(n)),a=Or(r.shape,t.shape);return a.length>0&&(e=e.sum(a)),e.reshape(r.shape)}}}),"Prelu")}}),gc=Ze({relu_:function(t){var e=je(t,"x","relu");return"bool"===e.dtype?e.toInt():Ot.runKernelFunc((function(t,n){var r=t.relu(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return{x:function(){return t.mulStrict(n.step().toFloat())}}}),"Relu")}}),yc=Ze({relu6_:function(t){var e=je(t,"x","relu6");return"bool"===e.dtype?e.toInt():Ot.runKernelFunc((function(t,n){var r=t.relu6(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0],r=n.lessEqual(6).mul(n.step());return{x:function(){return t.mulStrict(r.toFloat())}}}),"Relu6")}}),bc=Ze({selu_:function(t){var e=je(t,"x","selu");return Ot.runKernelFunc((function(t,n){var r=t.selu(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return{$x:function(){var e=n.greater(an(0)),r=an(vi),o=an(mi),a=t.mul(o),i=t.mul(r).mul(n.toFloat().exp());return Ps(e,a,i)}}}))}}),xc=Ze({transpose_:function(t,e){var n=je(t,"x","transpose");if(null==e&&(e=n.shape.map((function(t,e){return e})).reverse()),E(n.rank===e.length,(function(){return"Error in transpose: rank of input "+n.rank+" must match length of perm "+e+"."})),e.forEach((function(t){E(t>=0&&t<n.rank,(function(){return"All entries in 'perm' must be between 0 and "+(n.rank-1)+" but got "+e}))})),n.rank<=1)return n.clone();var r={perm:e};return Ot.runKernelFunc((function(t){return t.transpose(n,e)}),{x:n},(function(t){var n=$e(e);return{x:function(){return t.transpose(n)}}}),"Transpose",r)}}),wc=Ze({localResponseNormalization_:function(t,e,n,r,o){void 0===e&&(e=5),void 0===n&&(n=1),void 0===r&&(r=1),void 0===o&&(o=.5);var a=je(t,"x","localResponseNormalization");E(4===a.rank||3===a.rank,(function(){return"Error in localResponseNormalization: x must be rank 3 or 4 but got\n rank "+a.rank+"."})),E(S(e),(function(){return"Error in localResponseNormalization: depthRadius must be an integer but got depthRadius "+e+"."}));var i=a,s=!1;3===a.rank&&(s=!0,i=a.as4D(1,a.shape[0],a.shape[1],a.shape[2]));var u=Ot.runKernelFunc((function(t,a){var s=t.localResponseNormalization4D(i,e,n,r,o);return a([i,s]),s}),{x4D:i},(function(t,a){var i=a[0],s=a[1];return{x4D:function(){return Ot.runKernelFunc((function(a){return a.LRNGrad(t,i,s,e,n,r,o)}),{})}}}));return s?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Ec=Ze({norm_:function(t,e,n,r){void 0===e&&(e="euclidean"),void 0===n&&(n=null),void 0===r&&(r=!1);var o=function t(e,n,r){if(void 0===r&&(r=null),0===e.rank)return e.abs();if(1!==e.rank&&null===r)return t(e.reshape([-1]),n,r);if(1===e.rank||"number"==typeof r||Array.isArray(r)&&1===r.length){if(1===n)return e.abs().sum(r);if(n===1/0)return e.abs().max(r);if(n===-1/0)return e.abs().min(r);if("euclidean"===n||2===n)return e.abs().pow(an(2,"int32")).sum(r).sqrt();throw new Error("Error in norm: invalid ord value: "+n)}if(Array.isArray(r)&&2===r.length){if(1===n)return e.abs().sum(r[0]).max(r[1]-1);if(n===1/0)return e.abs().sum(r[1]).max(r[0]);if(n===-1/0)return e.abs().sum(r[1]).min(r[0]);if("fro"===n||"euclidean"===n)return e.square().sum(r).sqrt();throw new Error("Error in norm: invalid ord value: "+n)}throw new Error("Error in norm: invalid axis: "+r)}(t=je(t,"x","norm"),e,n),a=o.shape;if(r){var i=F(n,t.shape);a=qe(o.shape,i)}return o.reshape(a)}}),Cc=Ze({basicLSTMCell_:function(t,e,n,r,o,a){var i=je(t,"forgetBias","basicLSTMCell"),s=je(e,"lstmKernel","basicLSTMCell"),u=je(n,"lstmBias","basicLSTMCell"),c=je(r,"data","basicLSTMCell"),l=je(o,"c","basicLSTMCell"),f=je(a,"h","basicLSTMCell"),h=c.concat(f,1).matMul(s).add(u),p=h.shape[0],d=h.shape[1]/4,v=[p,d],m=h.slice([0,0],v),g=h.slice([0,d],v),y=h.slice([0,2*d],v),b=h.slice([0,3*d],v),x=m.sigmoid().mulStrict(g.tanh()).addStrict(l.mulStrict(i.add(y).sigmoid())),w=x.tanh().mulStrict(b.sigmoid());return[x,w]}}),_c=Ze({multiRNNCell_:function(t,e,n,r){for(var o=je(e,"data","multiRNNCell"),a=ze(n,"c","multiRNNCell"),i=ze(r,"h","multiRNNCell"),s=o,u=[],c=0;c<t.length;c++){var l=t[c](s,a[c],i[c]);u.push(l[0]),u.push(l[1]),s=l[1]}var f=[],h=[];for(c=0;c<u.length;c+=2)f.push(u[c]),h.push(u[c+1]);return[f,h]}}),kc=Ze({movingAverage_:function(t,e,n,r,o){void 0===o&&(o=!0);var a=je(t,"v","movingAverage"),i=je(e,"x","movingAverage"),s=je(n,"decay","movingAverage");kt(a,i),E(I(a.shape,i.shape),(function(){return"Shape mismatch in v and x"}));var u=an(1),c=u.sub(s),l=i.sub(a).mul(c);if(o){E(null!=r,(function(){return"When using zeroDebias: true, step is required."}));var f=je(r,"step","movingAverage");l=l.div(u.sub(tu(s,f)))}return a.add(l)}}),Rc=Ze({stridedSlice_:function(t,e,n,r,o,a,i,s,u){if(void 0===o&&(o=0),void 0===a&&(a=0),void 0===i&&(i=0),void 0===s&&(s=0),void 0===u&&(u=0),null==r&&(r=new Array(e.length)),0!==i)throw new Error("ellipsis mask is not yet supported");var c=je(t,"x","stridedSlice"),l=gr(s),f=c.shape.slice();l.forEach((function(t){e[t]=0,n[t]=1,f.splice(t,0,1)})),c=c.reshape(f);for(var h=0;h<c.rank;h++)e[h]=br(o,e,r,c.shape,h),n[h]=xr(a,n,r,c.shape,h),r[h]=r[h]||1;var p=gr(u);p.forEach((function(t){n[t]=e[t]+1,r[t]=1}));var d=yr(e,n,r),v=d.filter((function(t,e){return-1===p.indexOf(e)}));return r.every((function(t){return 1===t}))?Ju(c,e,d).reshape(v):Ot.runKernelFunc((function(t){return t.stridedSlice(c,e,n,r)}),{$x:c}).reshape(v)}}),Ic=Ze({topk_:function(t,e,n){void 0===e&&(e=1),void 0===n&&(n=!0);var r=je(t,"x","topk");if(0===r.rank)throw new Error("topk() expects the input to be of rank 1 or higher");var o=r.shape[r.shape.length-1];if(e>o)throw new Error("'k' passed to topk() must be <= the last dimension ("+o+") but got "+e);var a=Ot.runKernelFunc((function(t){return t.topk(r,e,n)}),{$x:r});return{values:a[0],indices:a[1]}}}),Sc=Ze({scatterND_:function(t,e,n){var r=je(t,"indices","scatterND","int32"),o=je(e,"updates","scatterND");return function(t,e,n){if(e.rank<1)throw new Error("tf.scatterND() expects the indices to be rank 1 or higher, but the rank was "+e.rank+".");if(t.rank<1)throw new Error("tf.scatterND() expects the updates to be rank 1 or higher, but the rank was "+t.rank+".");if("int32"!==e.dtype)throw new Error("The dtype of 'indices' should be int32, but got dtype: "+e.dtype);if(n.length<1)throw new Error("Output rank must be greater or equal to 1, but got shape: "+n);if(0===n.length){if(0===e.size)throw new Error("Indices specified for empty output. indices shape: "+e.shape);if(0===t.size)throw new Error("Updates specified for empty output. updates shape: "+t.shape)}!function(t,e,n){var r=e.rank>1?e.shape[e.rank-1]:1,o=e.rank>1?e.rank-1:1,a="Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: "+n.shape+", indices.shape: "+e.shape+", shape: "+t+", sliceDim: "+r+", and batchDim: "+o+".";if(n.rank<o)throw new Error(a+" update.rank < "+o+". ");if(t.length<r+(n.rank-o))throw new Error(a+" Output shape length < "+(r+(n.rank-o)));if(n.rank!==o+t.length-r)throw new Error(a+" update.rank != "+(o+t.length-r));for(var i=0;i<o;++i)if(n.shape[i]!==e.shape[i])throw new Error(a+" updates.shape["+i+"] ("+n.shape[i]+") != indices.shape["+i+"] ("+e.shape[i]+").");for(i=0;i<n.rank-o;++i)if(n.shape[i+o]!==t[i+r])throw new Error(a+" updates.shape["+(i+o)+"] ("+n.shape[i+o]+") != shape["+(i+o)+"] ("+t[i+o]+")")}(n,e,t)}(o,r,n),Ot.runKernelFunc((function(t){return t.scatterND(r,o,n)}),{$indices:r,$updates:o})}}),Ac=Ze({fft_:function(t){E("complex64"===t.dtype,(function(){return"The dtype for tf.spectral.fft() must be complex64 but got "+t.dtype+"."}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Ot.runKernelFunc((function(t){return t.fft(r)}),{input:t}).reshape(t.shape)}}),Oc=Ze({ifft_:function(t){E("complex64"===t.dtype,(function(){return"The dtype for tf.spectral.ifft() must be complex64 but got "+t.dtype+"."}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Ot.runKernelFunc((function(t){return t.ifft(r)}),{input:t}).reshape(t.shape)}}),Tc=Ze({rfft_:function(t,e){E("float32"===t.dtype,(function(){return"The dtype for rfft() must be real value but got "+t.dtype}));var n,r=t.shape[t.shape.length-1],o=t.size/r;if(null!=e&&e<r){var a=t.shape.map((function(t){return 0})),i=t.shape.map((function(t){return t}));i[t.shape.length-1]=e,n=t.slice(a,i),r=e}else if(null!=e&&e>r){var s=t.shape.map((function(t){return t}));s[t.shape.length-1]=e-r,n=t.concat(hn(s),t.shape.length-1),r=e}else n=t;var u=n.zerosLike(),c=tn(n,u).as2D(o,r),l=Ac(c),f=Math.floor(r/2)+1,h=en(l),p=nn(l),d=h.split([f,r-f],h.shape.length-1),v=p.split([f,r-f],p.shape.length-1),m=n.shape.slice();return m[n.shape.length-1]=f,tn(d[0],v[0]).reshape(m)}}),Dc=Ze({irfft_:function(t){var e=t.shape[t.shape.length-1],n=t.size/e;if(e<=2){var r=t.as2D(n,e),o=Oc(r);return en(o)}var a=[n,2*(e-1)],i=en(t).as2D(n,e),s=nn(t).as2D(n,e),u=i.slice([0,1],[n,e-2]).reverse(1),c=s.slice([0,1],[n,e-2]).reverse(1).mul(an(-1)),l=i.concat(u,1),f=s.concat(c,1);return r=tn(l,f).as2D(a[0],a[1]),o=Oc(r),en(o)}}),Nc=Object.freeze({fft:Ac,ifft:Oc,rfft:Tc,irfft:Dc}),Fc=Ze({sparseToDense_:function(t,e,n,r){void 0===r&&(r=0);var o=je(t,"sparseIndices","sparseToDense","int32"),a=je(e,"sparseValues","sparseToDense"),i=je(r,"defaultValue","sparseToDense",a.dtype);return function(t,e,n,r){if("int32"!==t.dtype)throw new Error("tf.sparseToDense() expects the indices to be int32 type, but the dtype was "+t.dtype+".");if(t.rank>2)throw new Error("sparseIndices should be a scalar, vector, or matrix, but got shape "+t.shape+".");var o=t.rank>0?t.shape[0]:1,a=t.rank>1?t.shape[1]:1;if(n.length!==a)throw new Error("outputShape has incorrect number of elements:, "+n.length+", should be: "+a+".");var i=e.size;if(0!==e.rank&&(1!==e.rank||i!==o))throw new Error("sparseValues has incorrect shape "+e.shape+", should be [] or ["+o+"]");if(e.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(o,a,n,i),Ot.runKernelFunc((function(t){return t.sparseToDense(o,a,n,i)}),{$sparseIndices:o,$sparseValues:a,$defaultValue:i})}}),Mc=Ze({gatherND_:function(t,e){var n=je(e,"indices","gatherND","int32"),r=je(t,"x","gatherND");return Ot.runKernelFunc((function(t){return t.gatherND(r,n)}),{$x:r,$indices:n})}}),Pc=Ze({diag_:function(t){var e=je(t,"x","diag").flatten(),n=t.shape.concat(t.shape);return Ot.runKernelFunc((function(t){return t.diag(e)}),{$x:e}).reshape(n)}}),Bc=Ze({dropout_:function(t,e,n,r){var o=je(t,"x","dropout");if(E("float32"===o.dtype,(function(){return"x has to be a floating point tensor since it's going to be scaled, but got a "+o.dtype+" tensor instead."})),E(e>=0&&e<1,(function(){return"rate must be a float in the range [0, 1), but got "+e+"."})),0===e)return t instanceof dt?o.clone():o;var a=function(t,e){if(null==e)return t.shape.slice();if(I(t.shape,e))return e;if(t.shape.length===e.length){for(var n=[],r=0;r<t.shape.length;r++)null==e[r]&&null!=t.shape[r]?n.push(t.shape[r]):n.push(e[r]);return n}return e}(o,n),i=1-e,s=tr(a,0,1,"float32",r).add(i).floor().div(i);return o.mul(s)}});function Lc(t,e,n){for(var r=1-t%2,o=new Float32Array(t),a=0;a<t;++a){var i=2*Math.PI*a/(t+r-1);o[a]=e-n*Math.cos(i)}return sn(o,"float32")}var Wc,Uc=Ze({hannWindow_:function(t){return Lc(t,.5,.5)}}),jc=Ze({hammingWindow_:function(t){return Lc(t,.54,.46)}}),zc=Ze({frame_:function(t,e,n,r,o){void 0===r&&(r=!1),void 0===o&&(o=0);for(var a=0,i=[];a+e<=t.size;)i.push(Ju(t,a,e)),a+=n;if(r)for(;a<t.size;){var s=a+e-t.size,u=gn([Ju(t,a,e-s),pn([s],o)]);i.push(u),a+=n}return 0===i.length?un([],[0,e]):gn(i).as2D(i.length,e)}}),Vc=Ze({stft_:function(t,e,n,r,o){var a;void 0===o&&(o=Uc),null==r&&(a=e,r=Math.floor(Math.pow(2,Math.ceil(Math.log(a)/Math.log(2)))));for(var i=zc(t,e,n),s=Qs(i,o(e)),u=[],c=0;c<i.shape[0];c++)u.push(Tc(s.slice([c,0],[1,e]),r));return gn(u)}}),Gc=Object.freeze({hannWindow:Uc,hammingWindow:jc,frame:zc,stft:Vc});!function(t){t[t.NONE=0]="NONE",t[t.MEAN=1]="MEAN",t[t.SUM=2]="SUM",t[t.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(Wc||(Wc={}));var Hc=Ze({absoluteDifference_:function(t,e,n,r){void 0===r&&(r=Wc.SUM_BY_NONZERO_WEIGHTS);var o=je(t,"labels","absoluteDifference"),a=je(e,"predictions","absoluteDifference"),i=null;null!=n&&(i=je(n,"weights","absoluteDifference")),C(o.shape,a.shape,"Error in absoluteDifference: ");var s=o.sub(a).abs();return qc(s,i,r)}}),qc=Ze({computeWeightedLoss_:function(t,e,n){void 0===n&&(n=Wc.SUM_BY_NONZERO_WEIGHTS);var r=je(t,"losses","computeWeightedLoss"),o=null;null!=e&&(o=je(e,"weights","computeWeightedLoss"));var a=null==o?r:r.mul(o);if(n===Wc.NONE)return a;if(n===Wc.SUM)return a.sum();if(n===Wc.MEAN){if(null==o)return a.mean();var i=r.size/o.size,s=a.sum().div(o.sum());return i>1?s.div(an(i)):s}if(n===Wc.SUM_BY_NONZERO_WEIGHTS){if(null==o)return a.sum().div(an(r.size));var u=o.mul(fn(r.shape)).notEqual(an(0)).sum().toFloat();return a.sum().div(u)}throw Error("Unknown reduction: "+n)}}),Kc=Ze({cosineDistance_:function(t,e,n,r,o){void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var a=je(t,"labels","cosineDistance"),i=je(e,"predictions","cosineDistance"),s=null;null!=r&&(s=je(r,"weights","cosineDistance")),C(a.shape,i.shape,"Error in cosineDistance: ");var u=an(1).sub(a.mul(i).sum(n,!0));return qc(u,s,o)}}),Xc=Ze({hingeLoss_:function(t,e,n,r){void 0===r&&(r=Wc.SUM_BY_NONZERO_WEIGHTS);var o=je(t,"labels","hingeLoss"),a=je(e,"predictions","hingeLoss"),i=null;null!=n&&(i=je(n,"weights","hingeLoss")),C(o.shape,a.shape,"Error in hingeLoss: ");var s=an(1);o=an(2).mul(o).sub(s);var u=s.sub(o.mul(a)).relu();return qc(u,i,r)}}),$c=Ze({huberLoss_:function(t,e,n,r,o){void 0===r&&(r=1),void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var a=je(t,"labels","huberLoss"),i=je(e,"predictions","huberLoss"),s=null;null!=n&&(s=je(n,"weights","huberLoss")),C(a.shape,i.shape,"Error in huberLoss: ");var u=an(r),c=i.sub(a).abs(),l=Xs(c,u),f=c.sub(l),h=an(.5).mul(l.square()).add(u.mul(f));return qc(h,s,o)}}),Yc=Ze({logLoss_:function(t,e,n,r,o){void 0===r&&(r=1e-7),void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var a=je(t,"labels","logLoss"),i=je(e,"predictions","logLoss"),s=null;null!=n&&(s=je(n,"weights","logLoss")),C(a.shape,i.shape,"Error in logLoss: ");var u=an(1),c=an(r),l=a.mul(i.add(c).log()).neg().sub(u.sub(a).mul(u.sub(i).add(c).log()));return qc(l,s,o)}}),Jc=Ze({meanSquaredError_:function(t,e,n,r){void 0===r&&(r=Wc.SUM_BY_NONZERO_WEIGHTS);var o=je(t,"labels","meanSquaredError"),a=je(e,"predictions","meanSquaredError"),i=null;null!=n&&(i=je(n,"weights","meanSquaredError")),C(o.shape,a.shape,"Error in meanSquaredError: ");var s=o.squaredDifference(a);return qc(s,i,r)}}),Qc=Ze({sigmoidCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var a=je(t,"multiClassLabels","sigmoidCrossEntropy"),i=je(e,"logits","sigmoidCrossEntropy"),s=null;if(null!=n&&(s=je(n,"weights","sigmoidCrossEntropy")),C(a.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=an(r),c=an(1),l=an(.5);a=a.mul(c.sub(u)).add(l.mul(u))}var f=function(t,e){var n=je(t,"labels","sigmoidCrossEntropyWithLogits"),r=je(e,"logits","sigmoidCrossEntropyWithLogits");C(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var o=r.relu(),a=r.mul(n),i=r.abs().neg().exp().log1p();return o.sub(a).add(i)}(a,i);return qc(f,s,o)}}),Zc=Ze({softmaxCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=Wc.SUM_BY_NONZERO_WEIGHTS);var a=je(t,"onehotLabels","softmaxCrossEntropy"),i=je(e,"logits","softmaxCrossEntropy"),s=null;if(null!=n&&(s=je(n,"weights","softmaxCrossEntropy")),C(a.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){var u=an(r),c=an(1),l=an(a.shape[1]);a=a.mul(c.sub(u)).add(u.div(l))}var f=function(t,e,n){if(void 0===n&&(n=-1),-1===n&&(n=e.rank-1),n!==e.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+e.rank+" and dim was "+n);return Cr((function(t,e,r){var o=e.logSumExp([n],!0),a=e.toFloat().sub(o);return r([t,a]),{value:a.mul(t).neg().sum([n]),gradFunc:function(t,e){var r=e[0],o=e[1],a=qe(t.shape,[n]);return[t.reshape(a).mul(r.toFloat().sub(o.exp())),t.reshape(a).mul(o.exp().sub(r.toFloat()))]}}}))(t,e)}(a,i);return qc(f,s,o)}}),tl=Object.freeze({get Reduction(){return Wc},absoluteDifference:Hc,computeWeightedLoss:qc,cosineDistance:Kc,hingeLoss:Xc,huberLoss:$c,logLoss:Yc,meanSquaredError:Jc,sigmoidCrossEntropy:Qc,softmaxCrossEntropy:Zc});function el(t,e){return void 0===e&&(e=!1),Ot.tidy((function(){if(2!==t.shape.length)throw new Error("qr2d() requires a 2D Tensor, but got a "+t.shape.length+"D Tensor.");for(var n=t.shape[0],r=t.shape[1],o=Vn(n),a=t.clone(),i=un([[1]],[1,1]),s=i.clone(),u=n>=r?r:n,c=function(t){var e,u=a,c=s,l=o;e=Ot.tidy((function(){var e=a.slice([t,t],[n-t,1]),u=e.norm(),c=a.slice([t,t],[1,1]),l=un([[-1]]).where(c.greater(0),un([[1]])),f=c.sub(l.mul(u)),h=e.div(f);s=1===h.shape[0]?i.clone():i.concat(h.slice([1,0],[h.shape[0]-1,h.shape[1]]),0);var p=l.matMul(f).div(u).neg(),d=a.slice([t,0],[n-t,r]),v=p.mul(s);if(0===t)a=d.sub(v.matMul(s.transpose().matMul(d)));else{var m=d.sub(v.matMul(s.transpose().matMul(d)));a=a.slice([0,0],[t,r]).concat(m,0)}var g=o.slice([0,t],[n,o.shape[1]-t]);if(0===t)o=g.sub(g.matMul(s).matMul(v.transpose()));else{var y=g.sub(g.matMul(s).matMul(v.transpose()));o=o.slice([0,0],[n,t]).concat(y,1)}return[s,a,o]})),s=e[0],a=e[1],o=e[2],Be([u,c,l])},l=0;l<u;++l)c(l);return!e&&n>r&&(o=o.slice([0,0],[n,r]),a=a.slice([0,0],[r,r])),[o,a]}))}var nl=Ze({bandPart_:function(t,e,n){if(e%1!=0)throw new Error("bandPart(): numLower must be an integer, got "+e+".");if(n%1!=0)throw new Error("bandPart(): numUpper must be an integer, got "+n+".");var r=je(t,"a","bandPart");if(r.rank<2)throw new Error("bandPart(): Rank must be at least 2, got "+r.rank+".");var o=r.shape,a=r.shape.slice(-2),i=a[0],s=a[1];if(!(e<=i))throw new Error("bandPart(): numLower ("+e+") must not be greater than the number of rows ("+i+").");if(!(n<=s))throw new Error("bandPart(): numUpper ("+n+") must not be greater than the number of columns ("+s+").");e<0&&(e=i),n<0&&(n=s);var u=dn(0,i,1,"int32").reshape([-1,1]),c=dn(0,s,1,"int32"),l=ou(u,c),f=Ds(l.lessEqual(an(+e,"int32")),l.greaterEqual(an(-n,"int32"))),h=hn([i,s],r.dtype);return or(sr(r.reshape([-1,i,s])).map((function(t){return Ps(f,t,h)}))).reshape(o)}}),rl=Ze({gramSchmidt_:function(t){var e;if(Array.isArray(t)){e=!1,E(null!=t&&t.length>0,(function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"}));for(var n=t[0].shape[0],r=function(e){E(t[e].shape[0]===n,(function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: ("+t[e].shape[0]+" vs. "+n+")"}))},o=1;o<t.length;++o)r(o)}else e=!0,t=En(t,t.shape[0],0).map((function(t){return rr(t,[0])}));E(t.length<=t[0].shape[0],(function(){return"Gram-Schmidt: Number of vectors ("+t.length+") exceeds number of dimensions ("+t[0].shape[0]+")."}));var a=[],i=t,s=function(t){a.push(Ot.tidy((function(){var e=i[t];if(t>0)for(var n=0;n<t;++n){var r=hc(a[n].mulStrict(e)).mul(a[n]);e=e.sub(r)}return e.div(Ec(e,"euclidean"))})))};for(o=0;o<t.length;++o)s(o);return e?or(a,0):a}}),ol=Ze({qr_:function(t,e){if(void 0===e&&(e=!1),t.rank<2)throw new Error("qr() requires input tensor to have a rank >= 2, but got rank "+t.rank);if(2===t.rank)return el(t,e);var n=t.shape.slice(0,t.shape.length-2).reduce((function(t,e){return t*e})),r=sr(t.reshape([n,t.shape[t.shape.length-2],t.shape[t.shape.length-1]]),0),o=[],a=[];return r.forEach((function(t){var n=el(t,e),r=n[0],i=n[1];o.push(r),a.push(i)})),[or(o,0).reshape(t.shape),or(a,0).reshape(t.shape)]}}),al=Object.freeze({bandPart:nl,gramSchmidt:rl,qr:ol});function il(t,e,n,r,o){null==r&&(r=.5),null==o&&(o=Number.NEGATIVE_INFINITY);var a=t.shape[0];return n=Math.min(n,a),E(0<=r&&r<=1,(function(){return"iouThreshold must be in [0, 1], but was '"+r+"'"})),E(2===t.rank,(function(){return"boxes must be a 2D tensor, but was of rank '"+t.rank+"'"})),E(4===t.shape[1],(function(){return"boxes must have 4 columns, but 2nd dimension was "+t.shape[1]})),E(1===e.rank,(function(){return"scores must be a 1D tensor"})),E(e.shape[0]===a,(function(){return"scores has incompatible shape with boxes. Expected "+a+", but was "+e.shape[0]})),{maxOutputSize:n,iouThreshold:r,scoreThreshold:o}}var sl=Ze({resizeBilinear_:function(t,e,n){void 0===n&&(n=!1);var r=je(t,"images","resizeBilinear");E(3===r.rank||4===r.rank,(function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got rank "+r.rank+"."})),E(2===e.length,(function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+e+"."}));var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=Ot.runKernelFunc((function(t,e){return e([o]),t.resizeBilinear(o,i,s,n)}),{x:o},(function(t,e){return{x:function(){return Ot.runKernelFunc((function(r){return r.resizeBilinearBackprop(t,e[0],n)}),{})}}}),"ResizeBilinear",{alignCorners:n,newHeight:i,newWidth:s});return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),ul=Ze({resizeNearestNeighbor_:function(t,e,n){void 0===n&&(n=!1);var r=je(t,"images","resizeNearestNeighbor");E(3===r.rank||4===r.rank,(function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+r.rank+"."})),E(2===e.length,(function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+e+"."})),E("float32"===r.dtype||"int32"===r.dtype,(function(){return"`images` must have `int32` or `float32` as dtype"}));var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=Ot.runKernelFunc((function(t,e){return e([o]),t.resizeNearestNeighbor(o,i,s,n)}),{batchImages:o},(function(t,e){return{batchImages:function(){return Ot.runKernelFunc((function(r){return r.resizeNearestNeighborBackprop(t,e[0],n)}),{})}}}));return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),cl=Ze({nonMaxSuppression_:function(t,e,n,r,o){void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY);var a=je(t,"boxes","nonMaxSuppression"),i=je(e,"scores","nonMaxSuppression"),s=il(a,i,n,r,o);n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold;var u={maxOutputSize:n,iouThreshold:r,scoreThreshold:o};return Ot.runKernelFunc((function(t){return t.nonMaxSuppression(a,i,n,r,o)}),{boxes:a,scores:i},null,"NonMaxSuppressionV3",u)}}),ll=Ze({cropAndResize_:function(t,e,n,r,o,a){var i=je(t,"image","cropAndResize"),s=je(e,"boxes","cropAndResize","float32"),u=je(n,"boxInd","cropAndResize","int32");o=o||"bilinear",a=a||0;var c=s.shape[0];return E(4===i.rank,(function(){return"Error in cropAndResize: image must be rank 4,but got rank "+i.rank+"."})),E(2===s.rank&&4===s.shape[1],(function(){return"Error in cropAndResize: boxes must be have size ["+c+",4] but had shape "+s.shape+"."})),E(1===u.rank&&u.shape[0]===c,(function(){return"Error in cropAndResize: boxInd must be have size ["+c+"] but had shape "+s.shape+"."})),E(2===r.length,(function(){return"Error in cropAndResize: cropSize must be of length 2, but got length "+r.length+"."})),E(r[0]>=1&&r[1]>=1,(function(){return"cropSize must be atleast [1,1], but was "+r})),E("bilinear"===o||"nearest"===o,(function(){return"method must be bilinear or nearest, but was "+o})),Ot.runKernelFunc((function(t,e){return t.cropAndResize(i,s,u,r,o,a)}),{images:i,boxes:s,boxInd:u},null,"CropAndResize",{method:o,extrapolationValue:a,cropSize:r})}}),fl=Object.freeze({resizeBilinear:sl,resizeNearestNeighbor:ul,nonMaxSuppression:cl,nonMaxSuppressionAsync:function(t,e,n,r,o){return void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY),u(this,void 0,void 0,(function(){var a,i,s,u,l,f,h;return c(this,(function(c){switch(c.label){case 0:return a=je(t,"boxes","nonMaxSuppressionAsync"),i=je(e,"scores","nonMaxSuppressionAsync"),s=il(a,i,n,r,o),n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold,[4,Promise.all([a.data(),i.data()])];case 1:return u=c.sent(),l=u[0],f=u[1],h=Jr(l,f,n,r,o),a!==t&&a.dispose(),i!==e&&i.dispose(),[2,h]}}))}))},cropAndResize:ll}),hl=function(t,e){return!(t>0)||"linear"===e},pl=function(t,e,n){if(null==n||"linear"===n)return t;if("relu"===n)return t.mul(e.step());throw new Error("Gradient for activation "+n+" has not been implemented yet.")},dl=function(t,e){var n=e,r=Or(t.shape,e.shape);return r.length>0&&(n=n.sum(r)),n.reshape(t.shape)},vl=function(t,e,n){if("linear"===e)return t;if("relu"===e)return gc(t);if("elu"===e)return dc(t);if("relu6"===e)return yc(t);if("prelu"===e)return mc(t,n);throw new Error("Unknown fused activation "+e+".")},ml=Ze({fusedMatMul_:function(t){var e,n=t.a,r=t.b,o=t.transposeA,a=void 0!==o&&o,i=t.transposeB,s=void 0!==i&&i,u=t.bias,c=t.activation,l=void 0===c?"linear":c,f=t.preluActivationWeights;if(!1===hl(Ot.state.gradientDepth,l)){var h=Pu(n,r,a,s);return null!=u&&(h=Ls(h,u)),vl(h,l,f)}var p=je(n,"a","fused matMul"),d=je(r,"b","fused matMul");e=_t(p,d),p=e[0],d=e[1];var v=a?p.shape[p.rank-2]:p.shape[p.rank-1],m=s?d.shape[d.rank-1]:d.shape[d.rank-2],g=a?p.shape[p.rank-1]:p.shape[p.rank-2],y=s?d.shape[d.rank-2]:d.shape[d.rank-1],b=p.shape.slice(0,-2),x=d.shape.slice(0,-2),w=R(b),C=R(x);E(p.rank>=2&&d.rank>=2&&p.rank===d.rank,(function(){return"Error in fused matMul: inputs must have the same rank of at least 2, got ranks "+p.rank+" and "+d.rank+"."})),E(I(b,x),(function(){return"Error in fused matMul: outer dimensions ("+b+") and ("+x+") of Tensors with shapes "+p.shape+" and "+d.shape+" must match."})),E(v===m,(function(){return"Error in fused matMul: inner shapes ("+v+") and ("+m+") of Tensors with shapes "+p.shape+" and "+d.shape+" and transposeA="+a+" and transposeB="+s+" must match."}));var _,k,S=p.shape.slice(0,-2).concat([g,y]),A=a?p.as3D(w,v,g):p.as3D(w,g,v),O=s?d.as3D(C,y,m):d.as3D(C,m,y);null!=u&&Tr(S,(_=_t(_=je(u,"bias","fused matMul"),p)[0]).shape),null!=f&&(k=je(f,"prelu weights","fused matMul"));var T={$a:A,$b:O};return null!=u&&(T.$bias=_),null!=f&&(T.$preluActivationWeights=k),Ot.runKernelFunc((function(t,e){var n=t.fusedBatchMatMul({a:A,b:O,transposeA:a,transposeB:s,bias:_,activation:l,preluActivationWeights:k});return e([A,O,n]),n}),T,(function(t,e){var n=e[0],r=e[1],o=e[2],i=pl(t,o,l),c={};return null!=u&&(c={$bias:function(){return dl(_,i)}}),a||s?!a&&s?Object.assign({$a:function(){return i.matMul(r,!1,!1)},$b:function(){return i.matMul(n,!0,!1)}},c):a&&!s?Object.assign({$a:function(){return r.matMul(i,!1,!0)},$b:function(){return n.matMul(i,!1,!1)}},c):Object.assign({$a:function(){return r.matMul(i,!0,!0)},$b:function(){return i.matMul(n,!0,!0)}},c):Object.assign({$a:function(){return i.matMul(r,!1,!0)},$b:function(){return n.matMul(i,!0,!1)}},c)})).reshape(S)}}),gl=Ze({fusedConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,a=t.dataFormat,i=void 0===a?"NHWC":a,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,f=t.activation,h=void 0===f?"linear":f,p=t.preluActivationWeights;if(h=h||"linear",!1===hl(Ot.state.gradientDepth,h)){var d=Ru(e,n,r,o,i,u,c);return null!=l&&(d=Ls(d,l)),vl(d,h,p)}var v=je(e,"x","conv2d"),m=je(n,"filter","conv2d"),g=v,y=!1;3===v.rank&&(y=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),E(4===g.rank,(function(){return"Error in fused conv2d: input must be rank 4, but got rank "+g.rank+"."})),E(4===m.rank,(function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+m.rank+"."})),null!=c&&E(S(o),(function(){return"Error in fused conv2d: pad must be an integer when using, dimRoundingMode "+c+" but got pad "+o+"."})),E(g.shape[3]===m.shape[2],(function(){return"Error in conv2d: depth of input ("+g.shape[3]+") must match input depth for filter "+m.shape[2]+"."})),E(zr(r,u),(function(){return"Error in conv2D: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+u+"'"})),E("NHWC"===i,(function(){return"Error in conv2d: got dataFormat of "+i+" but only NHWC is currently supported."}));var b,x,w=Fr(g.shape,m.shape,r,u,o,c);null!=l&&(b=_t(b=je(l,"bias","fused conv2d"),v)[0],Tr(w.outShape,b.shape)),null!=p&&(x=je(p,"prelu weights","fused conv2d"));var C={x:g,filter:m};null!=l&&(C.bias=b),null!=p&&(C.preluActivationWeights=x);var _=[m,g],k=Ot.runKernelFunc((function(t,e){var n=t.fusedConv2d({input:g,filter:m,convInfo:w,bias:b,activation:h,preluActivationWeights:x});return e([m,g,n]),n}),C,(function(t,e){var n=e,a=n[0],i=n[1],s=n[2],c=pl(t,s,h);E(jr(u),(function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+u+"'"}));var f={};return null!=l&&(f={bias:function(){return dl(b,c)}}),Object.assign({x:function(){return Au(i.shape,c,a,r,o)},filter:function(){return Su(i,c,a.shape,r,o)}},f)}),"FusedConv2D",{convInfo:w,activation:h},_,[!0]);return y?k.as3D(k.shape[1],k.shape[2],k.shape[3]):k}}),yl=Ze({fusedDepthwiseConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,a=t.dataFormat,i=void 0===a?"NHWC":a,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,f=t.activation,h=void 0===f?"linear":f,p=t.preluActivationWeights;if(!1===hl(Ot.state.gradientDepth,h)){var d=Ou(e,n,r,o,i,u,c);return null!=l&&(d=Ls(d,l)),vl(d,h,p)}var v=je(e,"x","depthwiseConv2d"),m=je(n,"filter","depthwiseConv2d"),g=v,y=!1;3===v.rank&&(y=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),E(4===g.rank,(function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got rank "+g.rank+"."})),E(4===m.rank,(function(){return"Error in fused depthwiseConv2d: filter must be rank 4, but got rank "+m.rank+"."})),E(g.shape[3]===m.shape[2],(function(){return"Error in fused depthwiseConv2d: number of input channels ("+g.shape[3]+") must match the inChannels dimension in filter "+m.shape[2]+"."})),null==u&&(u=[1,1]),E(zr(r,u),(function(){return"Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+u+"'"})),null!=c&&E(S(o),(function(){return"Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode "+c+" but got pad "+o+"."}));var b,x,w=Fr(g.shape,m.shape,r,u,o,c,!0);null!=l&&(b=_t(b=je(l,"bias","fused conv2d"),v)[0],Tr(w.outShape,b.shape)),null!=p&&(x=je(p,"prelu weights","fused depthwiseConv2d"));var C={x:g,filter:m};null!=l&&(C.bias=b),null!=p&&(C.preluActivationWeights=x);var _=[m,g],k=Ot.runKernelFunc((function(t,e){var n=t.fusedDepthwiseConv2D({input:g,filter:m,convInfo:w,bias:b,activation:h,preluActivationWeights:x});return e([m,g,n]),n}),C,(function(t,e){E(jr(u),(function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+u+"'"}));var n=e[0],r=e[1],o=e[2],a=pl(t,o,h),i={};return null!=l&&(i={bias:function(){return dl(b,a)}}),Object.assign({x:function(){return Tu(r.shape,a,n,w)},filter:function(){return Du(r,a,n.shape,w)}},i)}),"FusedDepthwiseConv2D",{convInfo:w,activation:h},_,[!0]);return y?k.as3D(k.shape[1],k.shape[2],k.shape[3]):k}}),bl=Object.freeze({matMul:ml,conv2d:gl,depthwiseConv2d:yl}),xl=Object.freeze({image:fl,linalg:al,losses:tl,spectral:Nc,fused:bl,signal:Gc,square:Bi,conv1d:ku,conv2d:Ru,conv3d:Iu,depthwiseConv2d:Ou,separableConv2d:Nu,conv2dTranspose:Fu,conv3dTranspose:Mu,op:Ze,batchNormalization2d:_s,batchNormalization3d:ks,batchNormalization4d:Rs,batchNormalization:Is,batchNorm:Ss,batchNorm2d:As,batchNorm3d:Os,batchNorm4d:Ts,booleanMaskAsync:function(t,e,n){return u(this,void 0,void 0,(function(){var r,o,a,i,s,u,l,f,h,p,d,v,m;return c(this,(function(c){switch(c.label){case 0:for(r=je(t,"tensor","boolMask"),o=je(e,"mask","boolMask","bool"),a=null==n?0:n,i=o.rank,s=r.shape,E(i>0,(function(){return"mask cannot be scalar"})),C(s.slice(a,a+i),o.shape,"mask's shape must match the first K dimensions of tensor's shape,"),u=1,l=a;l<a+i;l++)u*=s[l];return f=s.slice(0,a).concat([u],s.slice(a+i)),h=r.reshape(f),p=o.reshape([-1]),[4,Bs(p)];case 1:return d=c.sent(),v=d.squeeze([1]),m=xu(h,v,a),t!==r&&r.dispose(),e!==o&&o.dispose(),v.dispose(),h.dispose(),p.dispose(),d.dispose(),[2,m]}}))}))},complex:tn,real:en,imag:nn,concat:gn,concat1d:yn,concat2d:bn,concat3d:xn,concat4d:wn,split:En,matMul:Pu,dot:Bu,outerProduct:Lu,reverse:Wu,reverse1d:Uu,reverse2d:ju,reverse3d:zu,reverse4d:Vu,maxPool:qu,avgPool:Ku,pool:Xu,maxPool3d:$u,avgPool3d:Yu,slice:Ju,slice1d:Qu,slice2d:Zu,slice3d:tc,slice4d:ec,abs:Li,acos:Wi,acosh:Ui,asin:ji,asinh:zi,atan:Vi,atanh:Gi,ceil:Hi,clipByValue:qi,cos:Ki,cosh:Xi,erf:$i,exp:Yi,expm1:Ji,floor:Qi,log:Zi,log1p:ts,logSigmoid:es,neg:ns,reciprocal:rs,round:os,rsqrt:as,sigmoid:is,sign:ss,isNaN:us,isInf:cs,isFinite:ls,sin:fs,sinh:hs,softplus:ps,sqrt:ds,step:vs,tan:ms,tanh:gs,all:rc,any:oc,argMax:ac,argMin:ic,logSumExp:sc,max:uc,mean:cc,min:lc,moments:fc,sum:hc,prod:pc,equal:iu,equalStrict:su,greater:uu,greaterEqual:cu,greaterEqualStrict:lu,greaterStrict:fu,less:hu,lessEqual:pu,lessEqualStrict:du,lessStrict:vu,notEqual:mu,notEqualStrict:gu,add:Ls,addN:Ws,addStrict:Us,atan2:js,div:zs,divNoNan:Vs,divStrict:Gs,floorDiv:Hs,maximum:qs,maximumStrict:Ks,minimum:Xs,minimumStrict:$s,mod:Ys,modStrict:Js,mul:Qs,mulStrict:Zs,pow:tu,powStrict:eu,squaredDifference:nu,squaredDifferenceStrict:ru,sub:ou,subStrict:au,elu:dc,leakyRelu:vc,prelu:mc,relu:gc,relu6:yc,selu:bc,logicalAnd:Ds,logicalNot:Ns,logicalOr:Fs,logicalXor:Ms,where:Ps,whereAsync:Bs,buffer:Mn,print:function(t,e){void 0===e&&(e=!1)},batchToSpaceND:Pn,broadcastTo:Bn,cast:Ln,clone:Wn,cumsum:Un,depthToSpace:jn,expandDims:zn,eye:Vn,multinomial:Gn,oneHot:Hn,pad:qn,pad1d:Kn,pad2d:Xn,pad3d:$n,pad4d:Yn,rand:Jn,randomNormal:Qn,randomGamma:Zn,randomUniform:tr,reshape:er,spaceToBatchND:nr,squeeze:rr,stack:or,tile:ar,truncatedNormal:ir,unstack:sr,setdiff1dAsync:function(t,e){return u(this,void 0,void 0,(function(){var n,r,o,a,i,s,u,l,f,h;return c(this,(function(c){switch(c.label){case 0:return n=je(t,"x","setdiff1d"),r=je(e,"y","setdiff1d"),E(n.dtype===r.dtype,(function(){return"x and y should have the same dtype, but got x ("+n.dtype+") and y ("+r.dtype+")."})),E(1===n.rank,(function(){return"x should be 1D tensor, but got x ("+n.shape+")."})),E(1===r.rank,(function(){return"y should be 1D tensor, but got y ("+r.shape+")."})),[4,n.data()];case 1:return o=c.sent(),[4,r.data()];case 2:for(a=c.sent(),i=new Set(a),s=0,f=0;f<o.length;f++)i.has(o[f])||s++;for(u=new lt([s],n.dtype),l=new lt([s],"int32"),f=0,h=0;f<o.length;f++)i.has(o[f])||(u.values[h]=o[f],l.values[h]=f,h++);return[2,[u.toTensor(),l.toTensor()]]}}))}))},fill:pn,linspace:function(t,e,n){if(n<=0)throw new Error("The number of values should be positive.");return Ot.runKernelFunc((function(r){return r.linspace(t,e,n)}),{})},ones:fn,range:dn,scalar:an,tensor:rn,tensor1d:sn,tensor2d:un,tensor3d:cn,tensor4d:ln,tensor5d:function(t,e,n){if(_(t),null!=e&&5!==e.length)throw new Error("tensor5d() requires shape to have five numbers");var r=We(t,n);if(5!==r.length&&1!==r.length)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return on(t,e,r,n)},tensor6d:function(t,e,n){if(_(t),null!=e&&6!==e.length)throw new Error("tensor6d() requires shape to have six numbers");var r=We(t,n);if(6!==r.length&&1!==r.length)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(1===r.length&&null==e)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return on(t,e=e||r,r,n)},variable:function(t,e,n,r){return void 0===e&&(e=!0),Ot.makeVariable(t,e,n,r)},zeros:hn,onesLike:vn,zerosLike:mn,transpose:xc,softmax:_r,logSoftmax:kr,localResponseNormalization:wc,norm:Ec,gather:xu,unsortedSegmentSum:wu,basicLSTMCell:Cc,multiRNNCell:_c,movingAverage:kc,stridedSlice:Rc,topk:Ic,scatterND:Sc,fft:Ac,ifft:Oc,rfft:Tc,irfft:Dc,sparseToDense:Fc,gatherND:Mc,diag:Pc,dropout:Bc,hannWindow:Uc,hammingWindow:jc,frame:zc,stft:Vc,inTopKAsync:function(t,e,n){return void 0===n&&(n=1),u(this,void 0,void 0,(function(){var r,o,a,i,s,u,l,f,h,p,d,v,m,g;return c(this,(function(c){switch(c.label){case 0:return r=je(t,"predictions","inTopK"),o=je(e,"targets","inTopK"),E(r.rank>1,(function(){return"inTopK() expects the predictions to be of rank 2 or higher, but got "+r.rank})),E(r.rank-1===o.rank,(function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+r.rank+" and targets rank "+o.rank})),C(r.shape.slice(0,r.shape.length-1),o.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),a=r.shape[r.shape.length-1],E(n>0&&n<=a,(function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last dimension ("+a+"), but got "+n})),[4,r.data()];case 1:return i=c.sent(),[4,o.data()];case 2:for(s=c.sent(),u=[i.length/a,a],f=u[1],h=P("bool",l=u[0]),p=0;p<l;p++){for(d=p*f,v=i.subarray(d,d+f),m=[],g=0;g<v.length;g++)m.push({value:v[g],index:g});for(m.sort((function(t,e){return e.value-t.value})),h[p]=0,g=0;g<n;g++)if(m[g].index===s[p]){h[p]=1;break}}return t!==r&&r.dispose(),e!==o&&o.dispose(),[2,rn(h,o.shape,"bool")]}}))}))}});function wl(t,e){Array.isArray(t)||(t=[t]),t.forEach((function(t){null!=t&&E("complex64"!==t.dtype,(function(){return e+" does not support complex64 tensors."}))}))}function El(t,e,n,r){if("linear"===n)return t.linear(e);if("relu"===n)return t.relu(e);if("elu"===n)return t.elu(e);if("relu6"===n)return t.relu6(e);if("prelu"===n)return t.prelu(e,r);throw new Error("Activation "+n+" has not been implemented for the CPU backend.")}var Cl=function(t){function e(){var e=t.call(this)||this;return e.blockSize=48,e.firstUse=!0,e.data=new Rr(e,Ot),e}return s(e,t),e.prototype.write=function(t,e,n){this.firstUse&&(this.firstUse=!1,f().get("IS_NODE")&&Le("\n============================\nHi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================\n"));var r={};return this.data.set(r,{values:t,dtype:n}),r},e.prototype.move=function(t,e,n,r){this.data.set(t,{values:e,dtype:r})},e.prototype.numDataIds=function(){return this.data.numDataIds()},e.prototype.read=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){return[2,this.readSync(t)]}))}))},e.prototype.readSync=function(t){var e=this.data.get(t),n=e.dtype,r=e.complexTensors;return"complex64"===n?Kr(this.readSync(r.real.dataId),this.readSync(r.imag.dataId)):this.data.get(t).values},e.prototype.bufferSync=function(t){var e=this.readSync(t.dataId),n=e;if("string"===t.dtype)try{n=e.map((function(t){return ot(t)}))}catch(t){throw new Error("Failed to decode encoded string bytes into utf-8")}return Mn(t.shape,t.dtype,n)},e.prototype.makeOutput=function(t,e,n){var r=this.write(t,e,n);return Ot.makeTensorFromDataId(r,e,n,this)},e.prototype.disposeData=function(t){if(this.data.has(t)){var e=this.data.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.data.delete(t)}},e.prototype.time=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){return e=et(),t(),[2,{kernelMs:et()-e}]}))}))},e.prototype.memory=function(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}},e.prototype.complex=function(t,e){var n=this.makeOutput(null,t.shape,"complex64");return this.data.get(n.dataId).complexTensors={real:Ot.keep(t.clone()),imag:Ot.keep(e.clone())},n},e.prototype.real=function(t){return this.data.get(t.dataId).complexTensors.real.clone()},e.prototype.imag=function(t){return this.data.get(t.dataId).complexTensors.imag.clone()},e.prototype.slice=function(t,e,n){if(wl(t,"slice"),wr(t.shape,e,n)){var r=Er(e,t.strides),o=R(n);return rn(this.readSync(t.dataId).subarray(r,r+o),n,t.dtype)}for(var a=Mn(n,t.dtype),i=this.bufferSync(t),s=0;s<a.size;++s){var u=a.indexToLoc(s).map((function(t,n){return t+e[n]}));a.values[s]=i.get.apply(i,u)}return a.toTensor()},e.prototype.stridedSlice=function(t,e,n,r){wl(t,"stridedSlice");var o=yr(e,n,r);if(o.some((function(t){return 0===t})))return rn([],o);for(var a=Mn(o,t.dtype),i=this.bufferSync(t),s=0;s<a.size;s++){for(var u=a.indexToLoc(s),c=new Array(u.length),l=0;l<c.length;l++)c[l]=u[l]*r[l]+e[l];a.set.apply(a,[i.get.apply(i,c)].concat(u))}return a.toTensor()},e.prototype.diag=function(t){for(var e=this.readSync(t.dataId),n=Mn([t.size,t.size],t.dtype),r=n.values,o=0;o<e.length;o++)r[o*t.size+o]=e[o];return n.toTensor()},e.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,a=0;a<t.rank;a++)a!==e&&(r[o++]=t.shape[a]);var i=new Array(t.rank).fill(0),s=t.shape.slice();s[e]=1;var u=new Array(n);for(a=0;a<u.length;a++)i[e]=a,u[a]=this.slice(t,i,s).reshape(r);return u},e.prototype.reverse=function(t,e){wl(t,"reverse");for(var n=Mn(t.shape,t.dtype),r=this.bufferSync(t),o=function(o){var a=n.indexToLoc(o),i=a.slice();e.forEach((function(e){return i[e]=t.shape[e]-1-i[e]})),n.set.apply(n,[r.get.apply(r,i)].concat(a))},a=0;a<n.size;a++)o(a);return n.toTensor()},e.prototype.concat=function(t,e){var n=this;if("complex64"===t[0].dtype){var r=t.map((function(t){return en(t)})),o=t.map((function(t){return nn(t)}));return tn(this.concat(r,e),this.concat(o,e))}var a=t.map((function(t){var n=R(t.shape.slice(e));return t.as2D(-1,n)})),i=Qe(a.map((function(t){return t.shape})),1),s=Mn(i,t[0].dtype).values;if(1===a[0].shape[0]){var u=0;a.forEach((function(t){s.set(n.readSync(t.dataId),u),u+=t.size}))}else{var c=0;a.forEach((function(t){for(var e=n.readSync(t.dataId),r=0,o=0;o<t.shape[0];++o)for(var a=o*i[1]+c,u=0;u<t.shape[1];++u)s[a+u]=e[r++];c+=t.shape[1]}))}var l=Qe(t.map((function(t){return t.shape})),e);return rn(s,l,t[0].dtype)},e.prototype.neg=function(t){return wl(t,"neg"),this.multiply(an(-1),t)},e.prototype.add=function(t,e){return"complex64"===t.dtype||"complex64"===e.dtype?this.broadcastedBinaryComplexOp(t.cast("complex64"),e.cast("complex64"),(function(t,e,n,r){return{real:t+n,imag:e+r}})):this.broadcastedBinaryOp(t,e,Et(t.dtype,e.dtype),(function(t,e){return t+e}))},e.prototype.addN=function(t){var e=this;wl(t,"addN");for(var n=t.map((function(t){return e.readSync(t.dataId)})),r=Mn(t[0].shape,t[0].dtype),o=r.values,a=0;a<t.length;a++)for(var i=n[a],s=0;s<o.length;s++)o[s]+=i[s];return r.toTensor()},e.prototype.subtract=function(t,e){return"complex64"===t.dtype||"complex64"===e.dtype?this.broadcastedBinaryComplexOp(t.cast("complex64"),e.cast("complex64"),(function(t,e,n,r){return{real:t-n,imag:e-r}})):this.broadcastedBinaryOp(t,e,Et(t.dtype,e.dtype),(function(t,e){return t-e}))},e.prototype.pow=function(t,e){return wl([t,e],"pow"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.pow(t,e)}))},e.prototype.batchMatMul=function(t,e,n,r){wl([t,e],"matMul");for(var o=n?t.shape[1]:t.shape[2],a=n?t.shape[2]:t.shape[1],i=r?e.shape[1]:e.shape[2],s=t.shape[0],u=this.readSync(t.dataId),c=this.readSync(e.dataId),l=n?[t.strides[0],1,t.strides[1]]:[t.strides[0],t.strides[1],1],f=l[0],h=l[1],p=l[2],d=r?[1,e.strides[1],e.strides[0]]:[e.strides[1],1,e.strides[0]],v=d[0],m=d[1],g=d[2],y=a*i,b=Mn([s,a,i],t.dtype),x=b.values,w=this.blockSize,E=0;E<s;E++)for(var C=0;C<a;C+=w)for(var _=0;_<i;_+=w)for(var k=0;k<o;k+=w)for(var R=Math.min(C+w,a),I=Math.min(_+w,i),S=Math.min(k+w,o),A=C;A<R;A++)for(var O=_;O<I;O++){for(var T=0,D=k;D<S;D++)T+=u[E*f+A*h+D*p]*c[D*v+O*m+E*g];x[E*y+(A*i+O)]+=T}return b.toTensor()},e.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,a=t.bias,i=t.activation,s=t.preluActivationWeights,u=this.batchMatMul(e,n,r,o);return a&&(u=this.add(u,a)),i&&(u=El(this,u,i,s)),u},e.prototype.multiply=function(t,e){return"complex64"===t.dtype||"complex64"===e.dtype?this.broadcastedBinaryComplexOp(t.cast("complex64"),e.cast("complex64"),(function(t,e,n,r){return{real:t*n-e*r,imag:t*r+e*n}})):this.broadcastedBinaryOp(t,e,Et(t.dtype,e.dtype),(function(t,e){return t*e}))},e.prototype.realDivide=function(t,e){return wl([t,e],"realDivide"),this.broadcastedBinaryOp(t,e,"float32",(function(t,e){return t/e}))},e.prototype.floorDiv=function(t,e){return wl([t,e],"floorDiv"),this.broadcastedBinaryOp(t,e,"int32",(function(t,e){return Math.floor(t/e)}))},e.prototype.sum=function(t,e){wl(t,"sum"),Ke("sum",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],a=hn(r,Et(t.dtype,"int32")),i=R(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,f=0,h=0;h<i;++h)f+=u[l+h];s[c]=f}return a},e.prototype.prod=function(t,e){wl(t,"sum");for(var n=He(t.shape,e),r=n[0],o=n[1],a=hn(r,Et(t.dtype,"int32")),i=R(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,f=1,h=0;h<i;++h)f*=u[l+h];s[c]=f}return a},e.prototype.unsortedSegmentSum=function(t,e,n){wl(t,"unsortedSegmentSum");for(var r=[],o=t.rank-e.rank,a=0;a<o;++a)e=e.expandDims(a+1);for(a=0;a<n;++a){var i=an(a,"int32"),s=iu(i,e).asType("float32").mul(t).sum(0);r.push(s)}return or(r)},e.prototype.argMin=function(t,e){wl(t,"argMin");var n=[e];Ke("argMin",n,t.rank);for(var r=He(t.shape,n),o=r[0],a=r[1],i=hn(o,"int32"),s=R(a),u=this.readSync(i.dataId),c=this.readSync(t.dataId),l=0;l<u.length;++l){for(var f=l*s,h=c[f],p=0,d=0;d<s;++d){var v=c[f+d];v<h&&(h=v,p=d)}u[l]=p}return i},e.prototype.argMax=function(t,e){wl(t,"argMax");var n=[e];Ke("argMax",n,t.rank);for(var r=He(t.shape,n),o=r[0],a=r[1],i=hn(o,"int32"),s=R(a),u=this.readSync(i.dataId),c=this.readSync(t.dataId),l=0;l<u.length;++l){for(var f=l*s,h=c[f],p=0,d=0;d<s;++d){var v=c[f+d];v>h&&(h=v,p=d)}u[l]=p}return i},e.prototype.cumsum=function(t,e,n,r){if(wl(t,"cumsum"),e!==t.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(t.rank-1)+" but got axis="+e);for(var o=Et(t.dtype,"int32"),a=hn(t.shape,o),i=this.readSync(a.dataId),s=this.readSync(t.dataId),u=t.shape[t.rank-1],c=r?function(t,e){return t+u-e-1}:function(t,e){return t+e},l=0;l<s.length;l+=u)for(var f=0;f<u;f++){var h=c(l,f);if(0===f)i[h]=n?0:s[h];else{var p=c(l,f-1);i[h]=n?s[p]+i[p]:s[h]+i[p]}}return a},e.prototype.equal=function(t,e){return wl([t,e],"equal"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t===e?1:0}))},e.prototype.notEqual=function(t,e){return wl([t,e],"notEqual"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t!==e?1:0}))},e.prototype.less=function(t,e){return wl([t,e],"less"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t<e?1:0}))},e.prototype.lessEqual=function(t,e){return wl([t,e],"lessEqual"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t<=e?1:0}))},e.prototype.greater=function(t,e){return wl([t,e],"greater"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t>e?1:0}))},e.prototype.greaterEqual=function(t,e){return wl([t,e],"greaterEqual"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t>=e?1:0}))},e.prototype.logicalNot=function(t){wl(t,"logicalNot");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)n[r]=e[r]?0:1;return this.makeOutput(n,t.shape,"bool")},e.prototype.logicalAnd=function(t,e){return wl([t,e],"logicalAnd"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t&&e}))},e.prototype.logicalOr=function(t,e){return wl([t,e],"logicalOr"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t||e}))},e.prototype.select=function(t,e,n){wl([t,e,n],"select");for(var r=this.readSync(t.dataId),o=this.readSync(e.dataId),a=this.readSync(n.dataId),i=hn(e.shape,Et(e.dtype,n.dtype)),s=this.readSync(i.dataId),u=0,c=0===t.rank||t.rank>1||1===e.rank?1:R(e.shape.slice(1)),l=0;l<r.length;l++)for(var f=0;f<c;f++)1===r[l]?s[u++]=o[l]:s[u++]=a[l];return i},e.prototype.where=function(t){wl([t],"where");var e=this.readSync(t.dataId);return no(t.shape,e)},e.prototype.topk=function(t,e,n){return wl(t,"topk"),eo(this.readSync(t.dataId),t.shape,t.dtype,e)},e.prototype.min=function(t,e){wl(t,"min"),Ke("min",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],a=hn(r,t.dtype),i=R(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,f=u[l],h=0;h<i;++h){var p=u[l+h];p<f&&(f=p)}s[c]=f}return a},e.prototype.minimum=function(t,e){return wl([t,e],"minimum"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.min(t,e)}))},e.prototype.mod=function(t,e){return wl([t,e],"mod"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){var n=t%e;return t<0&&e<0||t>=0&&e>=0?n:(n+e)%e}))},e.prototype.max=function(t,e){wl(t,"max"),Ke("max",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],a=hn(r,t.dtype),i=R(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,f=u[l],h=0;h<i;++h){var p=u[l+h];p>f&&(f=p)}s[c]=f}return a},e.prototype.maximum=function(t,e){return wl([t,e],"maximum"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.max(t,e)}))},e.prototype.all=function(t,e){wl(t,"all"),Ke("all",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],a=hn(r,t.dtype),i=R(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,f=u[l],h=0;h<i;++h){var p=u[l+h];f=f&&p}s[c]=f}return a},e.prototype.any=function(t,e){wl(t,"any"),Ke("any",e,t.rank);for(var n=He(t.shape,e),r=n[0],o=n[1],a=hn(r,t.dtype),i=R(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c<s.length;++c){for(var l=c*i,f=u[l],h=0;h<i;++h){var p=u[l+h];f=f||p}s[c]=f}return a},e.prototype.squaredDifference=function(t,e){return wl([t,e],"squaredDifference"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){var n=t-e;return n*n}))},e.prototype.ceil=function(t){wl(t,"ceil");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.ceil(e[r]);return this.makeOutput(n,t.shape,"float32")},e.prototype.floor=function(t){wl(t,"floor");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.floor(e[r]);return this.makeOutput(n,t.shape,"float32")},e.prototype.sign=function(t){wl(t,"x");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)e[r]<0?n[r]=-1:e[r]>0?n[r]=1:n[r]=0;return this.makeOutput(n,t.shape,"float32")},e.prototype.isNaN=function(t){wl(t,"x");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Number.isNaN(e[r])&&(n[r]=1);return this.makeOutput(n,t.shape,"bool")},e.prototype.isInf=function(t){wl(t,"x");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Math.abs(e[r])===1/0&&(n[r]=1);return this.makeOutput(n,t.shape,"bool")},e.prototype.isFinite=function(t){wl(t,"x");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r<e.length;++r)Number.isFinite(e[r])&&(n[r]=1);return this.makeOutput(n,t.shape,"bool")},e.prototype.round=function(t){wl(t,"round");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=Math.floor(e[r]);e[r]-o<.5?n[r]=Math.floor(e[r]):e[r]-o>.5?n[r]=Math.ceil(e[r]):n[r]=o%2==0?o:o+1}return this.makeOutput(n,t.shape,"float32")},e.prototype.exp=function(t){wl(t,"exp");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.exp(e[r]);return this.makeOutput(n,t.shape,"float32")},e.prototype.expm1=function(t){wl(t,"expm1");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=Math.expm1(e[r]);return this.makeOutput(n,t.shape,"float32")},e.prototype.log=function(t){wl(t,"log");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.log(o)}return this.makeOutput(n,t.shape,"float32")},e.prototype.log1p=function(t){wl(t,"log1p");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.log1p(o)}return this.makeOutput(n,t.shape,"float32")},e.prototype.sqrt=function(t){wl(t,"sqrt");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=Math.sqrt(o)}return this.makeOutput(n,t.shape,"float32")},e.prototype.rsqrt=function(t){wl(t,"rsqrt");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r){var o=e[r];n[r]=1/Math.sqrt(o)}return this.makeOutput(n,t.shape,"float32")},e.prototype.reciprocal=function(t){wl(t,"reciprocal");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r<e.length;++r)n[r]=1/e[r];return this.makeOutput(n,t.shape,"float32")},e.prototype.linear=function(t){return t},e.prototype.relu=function(t){wl(t,"relu");for(var e=hn(t.shape,t.dtype),n=this.readSync(e.dataId),r=this.readSync(t.dataId),o=0;o<r.length;++o)n[o]=Math.max(0,r[o]);return e},e.prototype.relu6=function(t){wl(t,"relu");for(var e=hn(t.shape,t.dtype),n=this.readSync(e.dataId),r=this.readSync(t.dataId),o=0;o<r.length;++o)n[o]=Math.min(Math.max(0,r[o]),6);return e},e.prototype.prelu=function(t,e){return wl([t,e],"prelu"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return t<0?e*t:t}))},e.prototype.elu=function(t){wl(t,"elu");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=n[r];e[r]=o>=0?o:Math.exp(o)-1}return this.makeOutput(e,t.shape,"float32")},e.prototype.eluDer=function(t,e){wl([t,e],"eluDer");for(var n=new Float32Array(e.size),r=this.readSync(e.dataId),o=this.readSync(t.dataId),a=0;a<r.length;++a){var i=r[a];n[a]=i>=1?o[a]:o[a]*(i+1)}return this.makeOutput(n,e.shape,"float32")},e.prototype.selu=function(t){wl(t,"selu");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=n[r];e[r]=o>=0?1.0507009873554805*o:1.7580993408473768*(Math.exp(o)-1)}return this.makeOutput(e,t.shape,"float32")},e.prototype.clip=function(t,e,n){wl(t,"clip");for(var r=new Float32Array(t.size),o=this.readSync(t.dataId),a=0;a<o.length;++a){var i=o[a];r[a]=i>n?n:i<e?e:i}return this.makeOutput(r,t.shape,"float32")},e.prototype.abs=function(t){for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.abs(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.complexAbs=function(t){for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<t.size;++r){var o=n[2*r],a=n[2*r+1];e[r]=Math.hypot(o,a)}return this.makeOutput(e,t.shape,"float32")},e.prototype.int=function(t){wl(t,"int");for(var e=new Int32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=n[r];return this.makeOutput(e,t.shape,"int32")},e.prototype.sigmoid=function(t){wl(t,"sigmoid");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=1/(1+Math.exp(-n[r]));return this.makeOutput(e,t.shape,"float32")},e.prototype.softplus=function(t){wl(t,"softplus");for(var e=Math.log(1.1920928955078125e-7)+2,n=new Float32Array(t.size),r=this.readSync(t.dataId),o=0;o<r.length;++o){var a,i=r[o]>-e,s=r[o]<e,u=Math.exp(r[o]);a=s?u:i?r[o]:Math.log(1+u),n[o]=a}return this.makeOutput(n,t.shape,"float32")},e.prototype.sin=function(t){wl(t,"sin");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.sin(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.cos=function(t){wl(t,"cos");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.cos(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.tan=function(t){wl(t,"tan");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.tan(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.asin=function(t){wl(t,"asin");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.asin(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.acos=function(t){wl(t,"acos");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.acos(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.atan=function(t){wl(t,"atan");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.atan(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.atan2=function(t,e){return wl([t,e],"atan2"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.atan2(t,e)}))},e.prototype.sinh=function(t){wl(t,"sinh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.sinh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.cosh=function(t){wl(t,"cosh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.cosh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.tanh=function(t){wl(t,"tanh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=A(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.asinh=function(t){wl(t,"asinh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.asinh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.acosh=function(t){wl(t,"acosh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.acosh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.atanh=function(t){wl(t,"atanh");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r)e[r]=Math.atanh(n[r]);return this.makeOutput(e,t.shape,"float32")},e.prototype.erf=function(t){wl(t,"erf");for(var e=new Float32Array(t.size),n=this.readSync(t.dataId),r=0;r<n.length;++r){var o=Math.sign(n[r]),a=Math.abs(n[r]),i=1/(1+.3275911*a);e[r]=o*(1-((((1.061405429*i-1.453152027)*i+1.421413741)*i-.284496736)*i+.254829592)*i*Math.exp(-a*a))}return this.makeOutput(e,t.shape,"float32")},e.prototype.step=function(t,e){void 0===e&&(e=0),wl(t,"step");for(var n=new Float32Array(t.size),r=this.readSync(t.dataId),o=0;o<r.length;++o){var a=r[o];isNaN(a)?n[o]=NaN:n[o]=a>0?1:e}return this.makeOutput(n,t.shape,"float32")},e.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,i=t.preluActivationWeights,s=this.conv2d(e,n,r);return o&&(s=this.add(s,o)),a&&(s=El(this,s,a,i)),s},e.prototype.conv2d=function(t,e,n){wl([t,e],"conv2d");for(var r=n.filterHeight,o=n.filterWidth,a=n.dilationHeight,i=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,c="channelsLast"===n.dataFormat,l=Mn(n.outShape,t.dtype),f=t.strides[0],h=c?t.strides[1]:t.strides[2],p=c?t.strides[2]:1,d=c?1:t.strides[1],v=l.strides[0],m=c?l.strides[1]:l.strides[2],g=c?l.strides[2]:1,y=c?1:l.strides[1],b=this.readSync(t.dataId),x=this.readSync(e.dataId),w=l.values,E=0;E<n.batchSize;++E)for(var C=E*f,_=E*v,k=0;k<n.outHeight;++k)for(var R=_+k*m,I=k*n.strideHeight-u,S=0;S<r;S++){var A=I+S*a;if(!(A<0||A>=n.inHeight))for(var O=S*e.strides[0],T=C+A*h,D=0;D<n.outWidth;++D)for(var N=R+D*g,F=D*n.strideWidth-s,M=0;M<o;M++){var P=F+M*i;if(!(P<0||P>=n.inWidth))for(var B=T+P*p,L=O+M*e.strides[1],W=0;W<n.inChannels;++W){for(var U=b[B+W*d],j=0;j<n.outChannels;++j)w[N+j*y]+=U*x[L+j];L+=n.outChannels}}}return l.toTensor()},e.prototype.conv3d=function(t,e,n){for(var r=n.filterDepth,o=n.filterHeight,a=n.filterWidth,i=n.dilationDepth,s=n.dilationHeight,u=n.dilationWidth,c=n.padInfo.front,l=n.padInfo.left,f=n.padInfo.top,h=Mn(n.outShape,t.dtype),p=this.readSync(t.dataId),d=this.readSync(e.dataId),v=h.values,m=0;m<n.batchSize;++m)for(var g=m*t.strides[0],y=m*h.strides[0],b=0;b<n.outDepth;++b)for(var x=y+b*h.strides[1],w=b*n.strideDepth-c,E=0;E<r;E++){var C=w+E*i;if(!(C<0||C>=n.inDepth))for(var _=E*e.strides[0],k=g+C*t.strides[1],R=0;R<n.outHeight;++R)for(var I=x+R*h.strides[2],S=R*n.strideHeight-f,A=0;A<o;A++){var O=S+A*s;if(!(O<0||O>=n.inHeight))for(var T=_+A*e.strides[1],D=k+O*t.strides[2],N=0;N<n.outWidth;++N)for(var F=I+N*n.outChannels,M=N*n.strideWidth-l,P=0;P<a;P++){var B=M+P*u;if(!(B<0||B>=n.inWidth))for(var L=T+P*e.strides[2],W=D+B*n.inChannels,U=L,j=0;j<n.inChannels;++j){for(var z=p[W+j],V=0;V<n.outChannels;++V)v[F+V]+=z*d[U+V];U+=n.outChannels}}}}return h.toTensor()},e.prototype.conv2dDerInput=function(t,e,n){wl([t,e],"conv2dDerInput");for(var r=Mn(n.inShape,"float32"),o=r.values,a=this.readSync(t.dataId),i=this.readSync(e.dataId),s=e.strides,u=s[0],c=s[1],l=s[2],f=n.batchSize,h=n.filterHeight,p=n.filterWidth,d=n.inChannels,v=n.inHeight,m=n.inWidth,g=n.outChannels,y=n.outHeight,b=n.outWidth,x=n.strideHeight,w=n.strideWidth,E=n.dataFormat,C=h-1-n.padInfo.top,_=p-1-n.padInfo.left,k="channelsLast"===E,R=r.strides[0],I=k?r.strides[1]:r.strides[2],S=k?r.strides[2]:1,A=k?1:r.strides[1],O=t.strides[0],T=k?t.strides[1]:t.strides[2],D=k?t.strides[2]:1,N=k?1:t.strides[1],F=0;F<f;++F)for(var M=0;M<d;++M)for(var P=0;P<v;++P)for(var B=P-C,L=Math.max(0,Math.ceil(B/x)),W=Math.min(y,(h+B)/x),U=0;U<m;++U){for(var j=U-_,z=Math.max(0,Math.ceil(j/w)),V=Math.min(b,(p+j)/w),G=0,H=L;H<W;++H)for(var q=H*x-B,K=z;K<V;++K)for(var X=O*F+T*H+D*K,$=u*(h-1-q)+c*(p-1-(K*w-j))+l*M,Y=0;Y<g;++Y)G+=a[X+N*Y]*i[$+Y];o[R*F+I*P+S*U+A*M]=G}return r.toTensor()},e.prototype.conv3dDerInput=function(t,e,n){for(var r=Mn(n.inShape,"float32"),o=r.values,a=r.strides,i=a[0],s=a[1],u=a[2],c=a[3],l=this.readSync(t.dataId),f=t.strides,h=f[0],p=f[1],d=f[2],v=f[3],m=this.readSync(e.dataId),g=e.strides,y=g[0],b=g[1],x=g[2],w=g[3],E=n.batchSize,C=n.filterDepth,_=n.filterHeight,k=n.filterWidth,R=n.inChannels,I=n.inDepth,S=n.inHeight,A=n.inWidth,O=n.outChannels,T=n.outDepth,D=n.outHeight,N=n.outWidth,F=n.strideDepth,M=n.strideHeight,P=n.strideWidth,B=C-1-n.padInfo.front,L=_-1-n.padInfo.top,W=k-1-n.padInfo.left,U=0;U<E;++U)for(var j=0;j<R;++j)for(var z=0;z<I;++z)for(var V=z-B,G=Math.max(0,Math.ceil(V/F)),H=Math.min(T,(C+V)/F),q=0;q<S;++q)for(var K=q-L,X=Math.max(0,Math.ceil(K/M)),$=Math.min(D,(_+K)/M),Y=0;Y<A;++Y){for(var J=Y-W,Q=Math.max(0,Math.ceil(J/P)),Z=Math.min(N,(k+J)/P),tt=0,et=G;et<H;++et)for(var nt=et*F-V,rt=X;rt<$;++rt)for(var ot=rt*M-K,at=Q;at<Z;++at)for(var it=h*U+p*et+d*rt+v*at,st=y*(C-1-nt)+b*(_-1-ot)+x*(k-1-(at*P-J))+w*j,ut=0;ut<O;++ut)tt+=l[it+ut]*m[st+ut];o[i*U+s*z+u*q+c*Y+j]=tt}return r.toTensor()},e.prototype.conv2dDerFilter=function(t,e,n){wl([t,e],"conv2dDerFilter");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s="channelsLast"===n.dataFormat,u=Mn(n.filterShape,"float32"),c=n.padInfo.left,l=n.padInfo.top,f=this.bufferSync(t),h=this.bufferSync(e),p=0;p<a;++p)for(var d=Math.max(0,Math.ceil((l-p)/r)),v=Math.min(n.outHeight,(n.inHeight+l-p)/r),m=0;m<i;++m)for(var g=Math.max(0,Math.ceil((c-m)/o)),y=Math.min(n.outWidth,(n.inWidth+c-m)/o),b=0;b<n.inChannels;++b)for(var x=0;x<n.outChannels;++x){for(var w=0,E=0;E<n.batchSize;++E)for(var C=d;C<v;++C)for(var _=p+C*r-l,k=g;k<y;++k){var R=m+k*o-c;w+=s?f.get(E,_,R,b)*h.get(E,C,k,x):f.get(E,b,_,R)*h.get(E,x,C,k)}u.set(w,p,m,b,x)}return u.toTensor()},e.prototype.conv3dDerFilter=function(t,e,n){for(var r=n.strideDepth,o=n.strideHeight,a=n.strideWidth,i=n.filterDepth,s=n.filterHeight,u=n.filterWidth,c=Mn(n.filterShape,"float32"),l=c.values,f=c.strides,h=f[0],p=f[1],d=f[2],v=f[3],m=this.readSync(e.dataId),g=e.strides,y=g[0],b=g[1],x=g[2],w=g[3],E=this.readSync(t.dataId),C=t.strides,_=C[0],k=C[1],R=C[2],I=C[3],S=n.padInfo.front,A=n.padInfo.left,O=n.padInfo.top,T=0;T<i;++T)for(var D=Math.max(0,Math.ceil((S-T)/r)),N=Math.min(n.outDepth,(n.inDepth+S-T)/r),F=T*h,M=0;M<s;++M)for(var P=Math.max(0,Math.ceil((O-M)/o)),B=Math.min(n.outHeight,(n.inHeight+O-M)/o),L=M*p+F,W=0;W<u;++W)for(var U=Math.max(0,Math.ceil((A-W)/a)),j=Math.min(n.outWidth,(n.inWidth+A-W)/a),z=W*d+L,V=0;V<n.inChannels;++V)for(var G=V*v+z,H=0;H<n.outChannels;++H){for(var q=0,K=0;K<n.batchSize;++K)for(var X=K*_,$=K*y,Y=D;Y<N;++Y)for(var J=(T+Y*r-S)*k+X,Q=Y*b+$,Z=P;Z<B;++Z)for(var tt=(M+Z*o-O)*R+J,et=Z*x+Q,nt=U;nt<j;++nt){var rt=nt*w+et;q+=E[(W+nt*a-A)*I+tt+V]*m[rt+H]}l[G+H]=q}return c.toTensor()},e.prototype.fusedDepthwiseConv2D=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,i=t.preluActivationWeights,s=this.depthwiseConv2D(e,n,r);return o&&(s=this.add(s,o)),a&&(s=El(this,s,a,i)),s},e.prototype.depthwiseConv2D=function(t,e,n){wl([t,e],"depthwiseConv2D");for(var r=n.filterHeight,o=n.filterWidth,a=n.dilationHeight,i=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,c=n.outChannels/n.inChannels,l=Mn(n.outShape,t.dtype),f=this.readSync(t.dataId),h=this.readSync(e.dataId),p=l.values,d=0;d<n.batchSize;++d)for(var v=d*t.strides[0],m=d*l.strides[0],g=0;g<n.outHeight;++g)for(var y=m+g*l.strides[1],b=g*n.strideHeight-s,x=0;x<r;++x){var w=b+x*a;if(!(w<0||w>=n.inHeight))for(var E=x*e.strides[0],C=v+w*t.strides[1],_=0;_<n.outWidth;++_)for(var k=y+_*l.strides[2],R=_*n.strideWidth-u,I=0;I<o;++I){var S=R+I*i;if(!(S<0||S>=n.inWidth))for(var A=E+I*e.strides[1],O=C+S*n.inChannels,T=k,D=A,N=0;N<n.inChannels;++N){for(var F=f[O+N],M=0;M<c;++M)p[T+M]+=F*h[D+M];T+=c,D+=c}}}return l.toTensor()},e.prototype.depthwiseConv2DDerInput=function(t,e,n){wl([t,e],"depthwiseConv2DDerInput");for(var r=Mn(n.inShape,"float32"),o=r.values,a=r.strides,i=a[0],s=a[1],u=a[2],c=this.readSync(t.dataId),l=t.strides,f=l[0],h=l[1],p=l[2],d=this.readSync(e.dataId),v=e.strides,m=v[0],g=v[1],y=v[2],b=n.batchSize,x=n.filterHeight,w=n.filterWidth,E=n.inChannels,C=n.inHeight,_=n.inWidth,k=n.outChannels,R=n.outHeight,I=n.outWidth,S=n.strideHeight,A=n.strideWidth,O=x-1-n.padInfo.top,T=w-1-n.padInfo.left,D=k/E,N=0;N<b;++N)for(var F=0;F<E;++F)for(var M=0;M<C;++M)for(var P=M-O,B=Math.max(0,Math.ceil(P/S)),L=Math.min(R,(x+P)/S),W=0;W<_;++W){for(var U=W-T,j=Math.max(0,Math.ceil(U/A)),z=Math.min(I,(w+U)/A),V=0,G=B;G<L;++G)for(var H=G*S-P,q=j;q<z;++q)for(var K=f*N+h*G+p*q,X=m*(x-1-H)+g*(w-1-(q*A-U))+y*F,$=0;$<D;++$)V+=c[K+(F*D+$)]*d[X+$];o[i*N+s*M+u*W+F]=V}return r.toTensor()},e.prototype.depthwiseConv2DDerFilter=function(t,e,n){wl([t,e],"depthwiseConv2DDerFilter");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=Mn(n.filterShape,"float32"),u=n.padInfo.left,c=n.padInfo.top,l=n.outChannels/n.inChannels,f=this.bufferSync(t),h=this.bufferSync(e),p=0;p<a;++p)for(var d=Math.max(0,Math.ceil((c-p)/r)),v=Math.min(n.outHeight,(n.inHeight+c-p)/r),m=0;m<i;++m)for(var g=Math.max(0,Math.ceil((u-m)/o)),y=Math.min(n.outWidth,(n.inWidth+u-m)/o),b=0;b<n.outChannels;++b){for(var x=Math.trunc(b/l),w=b%l,E=0,C=0;C<n.batchSize;++C)for(var _=d;_<v;++_)for(var k=p+_*r-c,R=g;R<y;++R){var I=m+R*o-u;E+=f.get(C,k,I,x)*h.get(C,_,R,b)}s.set(E,p,m,x,w)}return s.toTensor()},e.prototype.tile=function(t,e){return wl(t,"tile"),to(this.bufferSync(t),e)},e.prototype.pad=function(t,e,n){wl(t,"pad");var r=e.map((function(e,n){return e[0]+t.shape[n]+e[1]})),o=e.map((function(t){return t[0]})),a=this.bufferSync(t),i=Mn(r,t.dtype);0!==n&&i.values.fill(n);for(var s=0;s<t.size;s++){var u=a.indexToLoc(s),c=u.map((function(t,e){return t+o[e]}));i.set.apply(i,[a.get.apply(a,u)].concat(c))}return i.toTensor()},e.prototype.transpose=function(t,e){wl(t,"transpose");for(var n=new Array(t.rank),r=0;r<n.length;r++)n[r]=t.shape[e[r]];var o=this.readSync(t.dataId),a=Mn(n,t.dtype),i=this.bufferSync(t);for(r=0;r<t.size;++r){for(var s=i.indexToLoc(r),u=new Array(s.length),c=0;c<u.length;c++)u[c]=s[e[c]];var l=a.locToIndex(u);a.values[l]=o[r]}return a.toTensor()},e.prototype.gather=function(t,e,n){wl([t,e],"gather");var r=t.shape.slice(),o=this.readSync(e.dataId);r[n]=o.length;for(var a=Mn(r,t.dtype),i=this.bufferSync(t),s=0;s<a.size;++s){var u=a.indexToLoc(s),c=u.slice();c[n]=o[u[n]];var l=i.locToIndex(c);a.values[s]=i.values[l]}return a.toTensor()},e.prototype.batchToSpaceND=function(t,e,n){wl([t],"batchToSpaceND");var r=e.reduce((function(t,e){return t*e})),o=ur(t.shape,e,r),a=cr(o.length,e.length),i=lr(t.shape,e,r),s=fr(n,e.length),u=hr(i,n,e.length);return t.reshape(o).transpose(a).reshape(i).slice(s,u)},e.prototype.spaceToBatchND=function(t,e,n){wl([t],"spaceToBatchND");var r=e.reduce((function(t,e){return t*e})),o=[[0,0]];o.push.apply(o,n);for(var a=1+e.length;a<t.shape.length;++a)o.push([0,0]);var i=t.pad(o),s=ur(i.shape,e,r,!1),u=cr(s.length,e.length,!1),c=lr(i.shape,e,r,!1);return i.reshape(s).transpose(u).reshape(c)},e.prototype.pool=function(t,e,n){wl(t,"pool");for(var r=e.strideHeight,o=e.strideWidth,a=e.dilationHeight,i=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=e.padInfo.top,l=e.padInfo.left,f="max"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,h=this.readSync(t.dataId),p=Mn(e.outShape,t.dtype),d=p.values,v=e.outShape[1]*e.outShape[2]*e.outShape[3],m=e.outShape[2]*e.outShape[3],g=e.outShape[3],y=0;y<e.batchSize;++y)for(var b=y*v,x=y*t.strides[0],w=0;w<e.inChannels;++w)for(var E=0;E<e.outHeight;++E)for(var C=E*r-c,_=Math.max(0,C),k=Math.min(e.inHeight,s+C),R=b+E*m,I=0;I<e.outWidth;++I){for(var S=I*o-l,A=Math.max(0,S),O=Math.min(e.inWidth,u+S),T=f,D=0,N=0,F=_;F<k;F+=a){for(var M=x+F*t.strides[1],P=A;P<O;P+=i){var B=h[M+P*t.strides[2]+w];"max"===n&&B>T?T=B:"avg"===n&&(D+=B,N++)}if(isNaN(T))break}d[R+I*g+w]="avg"===n?D/N:T}return p.toTensor()},e.prototype.maxPool=function(t,e){return this.pool(t,e,"max")},e.prototype.maxPoolPositions=function(t,e){for(var n=Mn(e.outShape,"int32"),r=e.strideHeight,o=e.strideWidth,a=e.dilationHeight,i=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=e.padInfo.top,l=e.padInfo.left,f=this.bufferSync(t),h=0;h<e.batchSize;++h)for(var p=0;p<e.inChannels;++p)for(var d=0;d<e.outHeight;++d){for(var v=d*r-c,m=v;m<0;)m+=a;for(var g=Math.min(e.inHeight,s+v),y=0;y<e.outWidth;++y){for(var b=y*o-l,x=b;x<0;)x+=i;for(var w=Math.min(e.inWidth,u+b),E=Number.NEGATIVE_INFINITY,C=-1,_=m;_<g;_+=a)for(var k=_-v,R=x;R<w;R+=i){var I=R-b,S=f.get(h,_,R,p);S>E&&(E=S,C=k*u+I)}n.set(C,h,d,y,p)}}return n.toTensor()},e.prototype.maxPoolBackprop=function(t,e,n,r){wl([e,n],"maxPoolBackprop");for(var o=this.maxPoolPositions(e,r),a=r.strideHeight,i=r.strideWidth,s=r.dilationHeight,u=r.dilationWidth,c=r.effectiveFilterHeight,l=r.effectiveFilterWidth,f=l-1-r.padInfo.left,h=c-1-r.padInfo.top,p=Mn(e.shape,"float32"),d=this.bufferSync(o),v=this.bufferSync(t),m=0;m<r.batchSize;++m)for(var g=0;g<r.inChannels;++g)for(var y=0;y<r.inHeight;++y)for(var b=0;b<r.inWidth;++b){for(var x=y-h,w=b-f,E=0,C=0;C<c;C+=s){var _=(x+C)/a;if(!(_<0||_>=r.outHeight||Math.floor(_)!==_))for(var k=0;k<l;k+=u){var R=(w+k)/i;if(!(R<0||R>=r.outWidth||Math.floor(R)!==R)){var I=c*l-1-d.get(m,_,R,g)===C*l+k?1:0;0!==I&&(E+=v.get(m,_,R,g)*I)}}}p.set(E,m,y,b,g)}return p.toTensor()},e.prototype.avgPoolBackprop=function(t,e,n){wl([t,e],"avgPoolBackprop");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,f=l-1-n.padInfo.left,h=c-1-n.padInfo.top,p=Mn(e.shape,"float32"),d=1/(a*i),v=this.bufferSync(t),m=0;m<n.batchSize;++m)for(var g=0;g<n.inChannels;++g)for(var y=0;y<n.inHeight;++y)for(var b=0;b<n.inWidth;++b){for(var x=y-h,w=b-f,E=0,C=0;C<c;C+=s){var _=(x+C)/r;if(!(_<0||_>=n.outHeight||Math.floor(_)!==_))for(var k=0;k<l;k+=u){var R=(w+k)/o;R<0||R>=n.outWidth||Math.floor(R)!==R||(E+=v.get(m,_,R,g))}}p.set(E*d,m,y,b,g)}return p.toTensor()},e.prototype.pool3d=function(t,e,n){wl(t,"pool3d");for(var r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,f=e.effectiveFilterWidth,h=e.padInfo.front,p=e.padInfo.top,d=e.padInfo.left,v="max"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=this.readSync(t.dataId),g=Mn(e.outShape,t.dtype),y=g.values,b=e.outShape[1]*e.outShape[2]*e.outShape[3]*e.outShape[4],x=e.outShape[2]*e.outShape[3]*e.outShape[4],w=e.outShape[3]*e.outShape[4],E=e.outShape[4],C=0;C<e.batchSize;++C)for(var _=C*b,k=C*t.strides[0],R=0;R<e.inChannels;++R)for(var I=0;I<e.outDepth;++I){for(var S=I*r-h,A=S;A<0;)A+=i;for(var O=Math.min(e.inDepth,c+S),T=_+I*x,D=0;D<e.outHeight;++D){for(var N=D*o-p,F=N;F<0;)F+=s;for(var M=Math.min(e.inHeight,l+N),P=T+D*w,B=0;B<e.outWidth;++B){for(var L=B*a-d,W=L;W<0;)W+=u;for(var U=Math.min(e.inWidth,f+L),j=P+B*E,z=v,V=0,G=0,H=A;H<O;H+=i){for(var q=k+H*t.strides[1],K=F;K<M;K+=s){for(var X=q+K*t.strides[2],$=W;$<U;$+=u){var Y=m[X+$*t.strides[3]+R];if("max"===n&&Y>z?z=Y:"avg"===n&&(V+=Y,G++),isNaN(z))break}if(isNaN(z))break}if(isNaN(z))break}y[j+R]="avg"===n?V/G:z}}}return g.toTensor()},e.prototype.avgPool3d=function(t,e){return wl(t,"avgPool3d"),this.pool3d(t,e,"avg").toFloat()},e.prototype.avgPool3dBackprop=function(t,e,n){wl([t,e],"avgPool3dBackprop");for(var r=n.strideDepth,o=n.strideHeight,a=n.strideWidth,i=n.filterDepth,s=n.filterHeight,u=n.filterWidth,c=n.dilationDepth,l=n.dilationHeight,f=n.dilationWidth,h=n.effectiveFilterDepth,p=n.effectiveFilterHeight,d=n.effectiveFilterWidth,v=h-1-n.padInfo.front,m=d-1-n.padInfo.left,g=p-1-n.padInfo.top,y=Mn(e.shape,"float32"),b=1/(i*s*u),x=this.bufferSync(t),w=0;w<n.batchSize;++w)for(var E=0;E<n.inChannels;++E)for(var C=0;C<n.inDepth;++C)for(var _=0;_<n.inHeight;++_)for(var k=0;k<n.inWidth;++k){for(var R=C-v,I=_-g,S=k-m,A=0,O=0;O<h;O+=c){var T=(R+O)/r;if(!(T<0||T>=n.outDepth||Math.floor(T)!==T))for(var D=0;D<p;D+=l){var N=(I+D)/o;if(!(N<0||N>=n.outHeight||Math.floor(N)!==N))for(var F=0;F<d;F+=f){var M=(S+F)/a;M<0||M>=n.outWidth||Math.floor(M)!==M||(A+=x.get(w,T,N,M,E))}}}y.set(A*b,w,C,_,k,E)}return y.toTensor()},e.prototype.maxPool3d=function(t,e){return wl(t,"maxPool3d"),this.pool3d(t,e,"max").toFloat()},e.prototype.maxPool3dPositions=function(t,e){for(var n=Mn(e.outShape,"int32"),r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,f=e.effectiveFilterWidth,h=e.padInfo.front,p=e.padInfo.top,d=e.padInfo.left,v=this.bufferSync(t),m=0;m<e.batchSize;++m)for(var g=0;g<e.inChannels;++g)for(var y=0;y<e.outDepth;++y){for(var b=y*r-h,x=b;x<0;)x+=i;for(var w=Math.min(e.inDepth,c+b),E=0;E<e.outHeight;++E){for(var C=E*o-p,_=C;_<0;)_+=s;for(var k=Math.min(e.inHeight,l+C),R=0;R<e.outWidth;++R){for(var I=R*a-d,S=I;S<0;)S+=u;for(var A=Math.min(e.inWidth,f+I),O=Number.NEGATIVE_INFINITY,T=-1,D=x;D<w;D+=i)for(var N=D-b,F=_;F<k;F+=s)for(var M=F-C,P=S;P<A;P+=u){var B=P-I,L=v.get(m,D,F,P,g);L>=O&&(O=L,T=N*l*f+M*l+B)}n.set(T,m,y,E,R,g)}}}return n.toTensor()},e.prototype.maxPool3dBackprop=function(t,e,n,r){wl([e,n],"maxPool3dBackprop");for(var o=this.maxPool3dPositions(e,r),a=r.strideDepth,i=r.strideHeight,s=r.strideWidth,u=r.dilationDepth,c=r.dilationHeight,l=r.dilationWidth,f=r.effectiveFilterDepth,h=r.effectiveFilterHeight,p=r.effectiveFilterWidth,d=f-1-r.padInfo.front,v=p-1-r.padInfo.left,m=h-1-r.padInfo.top,g=Mn(e.shape,"float32"),y=this.bufferSync(o),b=this.bufferSync(t),x=0;x<r.batchSize;++x)for(var w=0;w<r.inChannels;++w)for(var E=0;E<r.inDepth;++E)for(var C=0;C<r.inHeight;++C)for(var _=0;_<r.inWidth;++_){for(var k=E-d,R=C-m,I=_-v,S=0,A=0;A<f;A+=u){var O=(k+A)/a;if(!(O<0||O>=r.outDepth||Math.floor(O)!==O))for(var T=0;T<h;T+=c){var D=(R+T)/i;if(!(D<0||D>=r.outHeight||Math.floor(D)!==D))for(var N=0;N<p;N+=l){var F=(I+N)/s;if(!(F<0||F>=r.outWidth||Math.floor(F)!==F)){var M=f*h*p-1-y.get(x,O,D,F,w)===A*h*p+T*p+N?1:0;0!==M&&(S+=b.get(x,O,D,F,w)*M)}}}}g.set(S,x,E,C,_,w)}return g.toTensor()},e.prototype.cast=function(t,e){return Gr(t,e,this)},e.prototype.reshape=function(t,e){return Hr(t,e)},e.prototype.avgPool=function(t,e){return wl(t,"avgPool"),this.pool(t,e,"avg").toFloat()},e.prototype.resizeBilinear=function(t,e,n,r){wl(t,"resizeBilinear");for(var o=t.shape,a=o[0],i=o[1],s=o[2],u=o[3],c=this.readSync(t.dataId),l=new Float32Array(R([a,e,n,u])),f=[r&&e>1?i-1:i,r&&n>1?s-1:s],h=[r&&e>1?e-1:e,r&&n>1?n-1:n],p=0,d=f[0]/h[0],v=f[1]/h[1],m=0;m<a;m++)for(var g=0;g<e;g++)for(var y=d*g,b=Math.floor(y),x=y-b,w=Math.min(i-1,Math.ceil(y)),E=m*t.strides[0]+b*t.strides[1],C=m*t.strides[0]+w*t.strides[1],_=0;_<n;_++)for(var k=v*_,I=Math.floor(k),S=k-I,A=Math.min(s-1,Math.ceil(k)),O=E+I*t.strides[2],T=C+I*t.strides[2],D=E+A*t.strides[2],N=C+A*t.strides[2],F=0;F<u;F++){var M=c[O+F],P=c[T+F],B=M+(c[D+F]-M)*S,L=B+(P+(c[N+F]-P)*S-B)*x;l[p++]=L}return rn(l,[a,e,n,u])},e.prototype.resizeBilinearBackprop=function(t,e,n){wl([t,e],"resizeBilinearBackprop");for(var r=e.shape,o=r[0],a=r[1],i=r[2],s=r[3],u=t.shape,c=u[1],l=u[2],f=new Float32Array(o*a*i*s),h=[n&&c>1?a-1:a,n&&l>1?i-1:i],p=[n&&c>1?c-1:c,n&&l>1?l-1:l],d=h[0]/p[0],v=h[1]/p[1],m=this.readSync(t.dataId),g=0,y=0;y<o;y++)for(var b=y*e.strides[0],x=0;x<c;x++)for(var w=x*d,E=Math.floor(w),C=Math.min(Math.ceil(w),a-1),_=b+E*e.strides[1],k=b+C*e.strides[1],R=w-E,I=1-R,S=0;S<l;S++)for(var A=S*v,O=Math.floor(A),T=Math.min(Math.ceil(A),i-1),D=A-O,N=1-D,F=_+O*e.strides[2],M=_+T*e.strides[2],P=k+O*e.strides[2],B=k+T*e.strides[2],L=I*N,W=I*D,U=R*N,j=R*D,z=0;z<s;z++){var V=m[g++];f[F+z]+=V*L,f[M+z]+=V*W,f[P+z]+=V*U,f[B+z]+=V*j}return ln(f,[o,i,a,s],e.dtype)},e.prototype.resizeNearestNeighbor=function(t,e,n,r){wl(t,"resizeNearestNeighbor");for(var o=t.shape,a=o[0],i=o[1],s=o[2],u=o[3],c=this.readSync(t.dataId),l=new Float32Array(a*e*n*u),f=[r&&e>1?i-1:i,r&&n>1?s-1:s],h=[r&&e>1?e-1:e,r&&n>1?n-1:n],p=f[0]/h[0],d=f[1]/h[1],v=0,m=0;m<a;m++)for(var g=m*t.strides[0],y=0;y<e;y++)for(var b=p*y,x=g+Math.min(i-1,r?Math.round(b):Math.floor(b))*t.strides[1],w=0;w<n;w++)for(var E=d*w,C=x+Math.min(s-1,r?Math.round(E):Math.floor(E))*t.strides[2],_=0;_<u;_++){var k=c[C+_];l[v++]=k}return rn(l,[a,e,n,u],t.dtype)},e.prototype.resizeNearestNeighborBackprop=function(t,e,n){wl([t,e],"resizeNearestNeighborBackprop");for(var r=e.shape,o=r[0],a=r[1],i=r[2],s=r[3],u=t.shape,c=u[1],l=u[2],f=new Float32Array(o*a*i*s),h=this.readSync(t.dataId),p=[n&&c>1?a-1:a,n&&l>1?i-1:i],d=[n&&c>1?c-1:c,n&&l>1?l-1:l],v=p[0]/d[0],m=p[1]/d[1],g=1/v,y=1/m,b=2*Math.ceil(g)+2,x=2*Math.ceil(y)+2,w=0;w<o;w++)for(var E=w*e.strides[0],C=0;C<a;C++)for(var _=E+C*e.strides[1],k=Math.floor(C*g),R=Math.floor(k-b/2),I=0;I<i;I++)for(var S=_+I*e.strides[2],A=Math.floor(I*y),O=Math.floor(A-x/2),T=0;T<s;T++){for(var D=0,N=0;N<b;N++){var F=N+R;if(!(F<0||F>=c)){var M=E+F*t.strides[1],P=F*v;if(C===Math.min(a-1,n?Math.round(P):Math.floor(P)))for(var B=0;B<x;B++){var L=B+O;if(!(L<0||L>=l)){var W=M+L*t.strides[2],U=L*m;I===Math.min(i-1,n?Math.round(U):Math.floor(U))&&(D+=h[W+T])}}}}f[S+T]=D}return ln(f,e.shape,e.dtype)},e.prototype.batchNormalization=function(t,e,n,r,o,a){wl([t,e,n,o,a],"batchNorm");for(var i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=this.readSync(n.dataId),c=o?this.readSync(o.dataId):new Float32Array([1]),l=a?this.readSync(a.dataId):new Float32Array([0]),f=new Float32Array(i.length),h=l.length,p=c.length,d=u.length,v=s.length,m=0,g=0,y=0,b=0,x=0;x<i.length;++x)f[x]=l[m++]+(i[x]-s[g++])*c[y++]/Math.sqrt(u[b++]+r),m>=h&&(m=0),g>=v&&(g=0),y>=p&&(y=0),b>=d&&(b=0);return ln(f,t.shape)},e.prototype.localResponseNormalization4D=function(t,e,n,r,o){wl(t,"localResponseNormalization4D");var a=t.shape[3],i=a-1,s=this.readSync(t.dataId),u=t.size,c=new Float32Array(u);function l(t){for(var n=t%a,r=t-n+Math.max(0,n-e),o=t-n+Math.min(n+e,i),u=0;r<=o;r++){var c=s[r];u+=c*c}return u}for(var f=0;f<u;f++){var h=l(f),p=s[f]*Math.pow(n+r*h,-o);c[f]=p}return ln(c,t.shape)},e.prototype.LRNGrad=function(t,e,n,r,o,a,i){wl(t,"LRNGrad");for(var s=t.shape[3],u=this.readSync(t.dataId),c=this.readSync(e.dataId),l=this.readSync(n.dataId),f=new Float32Array(t.size),h=t.size,p=0;p<h;p++){for(var d=p%s,v=p-d+Math.max(0,d-r),m=p-d+Math.min(s,d+r+1),g=0,y=v;y<m;y++)g+=Math.pow(c[y],2);for(g=a*g+o,y=v;y<m;y++){var b=-2*a*i*c[y]*l[p]/g;p===y&&(b+=Math.pow(g,-i)),b*=u[p],f[y]+=b}}return ln(f,t.shape)},e.prototype.multinomial=function(t,e,n,r){wl(t,"multinomial");for(var o=e?t:_r(t),a=o.shape[0],i=o.shape[1],s=hn([a,n],"int32"),u=this.readSync(s.dataId),c=this.readSync(o.dataId),l=0;l<a;++l){var f=l*i,h=new Float32Array(i-1);h[0]=c[f];for(var p=1;p<h.length;++p)h[p]=h[p-1]+c[f+p];for(var d=Tn(r.toString()),v=l*n,m=0;m<n;++m){var g=d();u[v+m]=h.length;for(var y=0;y<h.length;y++)if(g<h[y]){u[v+m]=y;break}}}return s},e.prototype.oneHot=function(t,e,n,r){wl(t,"oneHot");var o=new Float32Array(t.size*e);o.fill(r);for(var a=this.readSync(t.dataId),i=0;i<t.size;++i)a[i]>=0&&a[i]<e&&(o[i*e+a[i]]=n);return un(o,[t.size,e],"int32")},e.prototype.nonMaxSuppression=function(t,e,n,r,o){return wl(t,"nonMaxSuppression"),Jr(this.readSync(t.dataId),this.readSync(e.dataId),n,r,o)},e.prototype.fft=function(t){return this.fftBatch(t,!1)},e.prototype.ifft=function(t){return this.fftBatch(t,!0)},e.prototype.fftBatch=function(t,e){for(var n=t.shape[0],r=t.shape[1],o=Mn(t.shape,"float32"),a=Mn(t.shape,"float32"),i=en(t).as2D(n,r),s=nn(t).as2D(n,r),u=0;u<n;u++)for(var c=i.slice([u,0],[1,r]),l=s.slice([u,0],[1,r]),f=tn(c,l),h=this.readSync(this.fftImpl(f,e).dataId),p=0;p<r;p++){var d=Xr(h,p);o.values[u*r+p]=d.real,a.values[u*r+p]=d.imag}return tn(o.toTensor(),a.toTensor()).as2D(n,r)},e.prototype.fftImpl=function(t,e){var n=t.as1D(),r=n.size;if(this.isExponentOf2(r)){var o=this.fftRadix2(n,r,e).as2D(t.shape[0],t.shape[1]);return e&&(o=tn(en(o).div(an(r)),nn(o).div(an(r)))),o}var a=this.readSync(t.dataId),i=function(t){for(var e=new Float32Array(t.length/2),n=new Float32Array(t.length/2),r=0;r<t.length;r+=2)e[r/2]=t[r],n[r/2]=t[r+1];return{real:e,imag:n}}(this.fourierTransformByMatmul(a,r,e));return tn(i.real,i.imag).as2D(t.shape[0],t.shape[1])},e.prototype.isExponentOf2=function(t){return 0==(t&t-1)},e.prototype.fftRadix2=function(t,e,n){if(1===e)return t;var r=this.readSync(t.dataId),o=e/2,a=function(t){for(var e=Math.ceil(t.length/4),n=new Float32Array(e),r=new Float32Array(e),o=0;o<t.length;o+=4)n[Math.floor(o/4)]=t[o],r[Math.floor(o/4)]=t[o+1];return{real:n,imag:r}}(r),i=tn(a.real,a.imag).as1D(),s=function(t){for(var e=Math.floor(t.length/4),n=new Float32Array(e),r=new Float32Array(e),o=2;o<t.length;o+=4)n[Math.floor(o/4)]=t[o],r[Math.floor(o/4)]=t[o+1];return{real:n,imag:r}}(r),u=tn(s.real,s.imag).as1D();i=this.fftRadix2(i,o,n),u=this.fftRadix2(u,o,n);var c=function(t,e){for(var n=new Float32Array(t/2),r=new Float32Array(t/2),o=0;o<Math.ceil(t/2);o++){var a=(e?2:-2)*Math.PI*(o/t);n[o]=Math.cos(a),r[o]=Math.sin(a)}return{real:n,imag:r}}(e,n),l=tn(c.real,c.imag).mul(u),f=i.add(l),h=i.sub(l),p=en(f).concat(en(h)),d=nn(f).concat(nn(h));return tn(p,d).as1D()},e.prototype.fourierTransformByMatmul=function(t,e,n){for(var r=new Float32Array(2*e),o=0;o<e;o++){for(var a=0,i=0,s=0;s<e;s++){var u=Yr(o*s,e,n),c=Xr(t,s);a+=c.real*u.real-c.imag*u.imag,i+=c.real*u.imag+c.imag*u.real}n&&(a/=e,i/=e),$r(r,a,i,o)}return r},e.prototype.depthToSpace=function(t,e,n){E("NHWC"===n,(function(){return"Only NHWC dataFormat supported on CPU for depthToSpace. Got "+n})),E(e>1,(function(){return"blockSize should be > 1 for depthToSpace, but was: "+e}));for(var r=t.shape[0],o=t.shape[1],a=t.shape[2],i=t.shape[3],s=o*e,u=a*e,c=i/(e*e),l=this.readSync(t.dataId),f=new Float32Array(r*s*u*c),h=0,p=0;p<r;++p)for(var d=0;d<s;++d)for(var v=Math.floor(d/e),m=d%e,g=0;g<u;++g)for(var y=Math.floor(g/e),b=(m*e+g%e)*c,x=0;x<c;++x){var w=x+b+i*(y+a*(v+o*p));f[h++]=l[w]}return ln(f,[r,s,u,c])},e.prototype.broadcastedBinaryOp=function(t,e,n,r){var o=Tr(t.shape,e.shape),a=Mn(o,n),i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=Ar(t.shape,o),c=Ar(e.shape,o),l=a.values;if(u.length+c.length===0)for(var f=0;f<l.length;++f)l[f]=r(i[f%i.length],s[f%s.length]);else{var h=this.bufferSync(t),p=this.bufferSync(e),d=function(n){var o=a.indexToLoc(n),f=o.slice(-t.rank);u.forEach((function(t){return f[t]=0}));var d=h.locToIndex(f),v=o.slice(-e.rank);c.forEach((function(t){return v[t]=0}));var m=p.locToIndex(v);l[n]=r(i[d],s[m])};for(f=0;f<l.length;++f)d(f)}return a.toTensor()},e.prototype.broadcastedBinaryComplexOp=function(t,e,n){var r=Tr(t.shape,e.shape),o=Mn(r,"float32"),a=Mn(r,"float32"),i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=Ar(t.shape,r),c=Ar(e.shape,r),l=o.values,f=a.values;if(u.length+c.length===0)for(var h=0;h<l.length;h++){var p=h%i.length,d=h%s.length,v=n(i[2*p],i[2*p+1],s[2*d],s[2*d+1]);l[h]=v.real,f[h]=v.imag}else{var m=this.bufferSync(this.data.get(t.dataId).complexTensors.real),g=this.bufferSync(this.data.get(e.dataId).complexTensors.real),y=function(r){var a=o.indexToLoc(r),h=a.slice(-t.rank);u.forEach((function(t){return h[t]=0}));var p=m.locToIndex(h),d=a.slice(-e.rank);c.forEach((function(t){return d[t]=0}));var v=g.locToIndex(d),y=n(i[2*p],i[2*p+1],s[2*v],s[2*v+1]);l[r]=y.real,f[r]=y.imag};for(h=0;h<l.length;h++)y(h)}return this.complex(o.toTensor(),a.toTensor())},e.prototype.split=function(t,e,n){return Zr(t,e,n)},e.prototype.dispose=function(){},e.prototype.floatPrecision=function(){return 32},e.prototype.epsilon=function(){return 1e-7},e.prototype.cropAndResize=function(t,e,n,r,o,a){for(var i=t.shape,s=i[0],u=i[1],c=i[2],l=i[3],f=e.shape[0],h=r[0],p=r[1],d=Mn([f,h,p,l],"float32"),v=this.readSync(e.dataId),m=this.readSync(n.dataId),g=this.readSync(t.dataId),y=t.strides,b=d.strides,x=0;x<f;x++){var w=4*x,E=v[w],C=v[w+1],_=v[w+2],k=v[w+3],R=m[x];if(!(R>=s))for(var I=h>1?(_-E)*(u-1)/(h-1):0,S=p>1?(k-C)*(c-1)/(p-1):0,A=0;A<h;A++){var O=h>1?E*(u-1)+A*I:.5*(E+_)*(u-1);if(O<0||O>u-1)for(var T=0;T<p;T++)for(var D=0;D<l;D++){var N=D+T*b[2]+A*b[1]+x*b[0];d.values[N]=a}else if("bilinear"===o){var F=Math.floor(O),M=Math.ceil(O),P=O-F;for(T=0;T<p;T++)if((H=p>1?C*(c-1)+T*S:.5*(C+k)*(c-1))<0||H>c-1)for(D=0;D<l;D++)N=D+T*b[2]+A*b[1]+x*b[0],d.values[N]=a;else{var B=Math.floor(H),L=Math.ceil(H),W=H-B;for(D=0;D<l;D++){var U=g[N=D+B*y[2]+F*y[1]+R*y[0]],j=g[N=D+L*y[2]+F*y[1]+R*y[0]],z=g[N=D+B*y[2]+M*y[1]+R*y[0]],V=U+(j-U)*W,G=z+(g[N=D+L*y[2]+M*y[1]+R*y[0]]-z)*W;N=D+T*b[2]+A*b[1]+x*b[0],d.values[N]=V+(G-V)*P}}}else for(T=0;T<p;++T){var H;if((H=p>1?C*(c-1)+T*S:.5*(C+k)*(c-1))<0||H>c-1)for(D=0;D<l;D++)N=D+T*b[2]+A*b[1]+x*b[0],d.values[N]=a;else{var q=Math.round(H),K=Math.round(O);for(D=0;D<l;D++){var X=D+q*y[2]+K*y[1]+R*y[0],$=D+T*b[2]+A*b[1]+x*b[0];d.values[$]=g[X]}}}}}return d.toTensor()},e.prototype.sparseToDense=function(t,e,n,r){var o=vr(0,t,n),a=o.sliceRank,i=o.numUpdates,s=o.sliceSize,u=o.strides,c=o.outputSize;return this.scatter(t,e,n,c,s,i,a,u,r,!1)},e.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=pr(t,e),a=o[0],i=o[1],s=o[2],u=o[3];if(0===i)return rn([],a,t.dtype);for(var c=new lt([i,s],t.dtype),l=this.readSync(e.dataId),f=this.readSync(t.dataId),h=0;h<i;h++){for(var p=[],d=0,v=0;v<r;v++){var m=l[h*r+v];d+=m*u[v],p.push(m)}if(d<0||d>=t.size/s)throw new Error("Invalid indices: "+p+" does not index into "+t.shape);for(var g=0;g<s;g++)c.values[h*s+g]=f[d*s+g]}return c.toTensor().reshape(a)},e.prototype.scatterND=function(t,e,n){var r=vr(0,t,n),o=r.sliceRank,a=r.numUpdates,i=r.sliceSize,s=r.strides,u=r.outputSize,c=an(0);return this.scatter(t,e,n,u,i,a,o,s,c,!0)},e.prototype.fill=function(t,e,n){var r=B(n=n||K(e),R(t));return r.fill(e),Ot.makeTensor(r,t,n,this)},e.prototype.onesLike=function(t){if("string"===t.dtype)throw new Error("onesLike is not supported for string tensors");return this.fill(t.shape,1,t.dtype)},e.prototype.zerosLike=function(t){var e=B(t.dtype,R(t.shape));return this.makeOutput(e,t.shape,t.dtype)},e.prototype.linspace=function(t,e,n){return qr(t,e,n)},e.prototype.scatter=function(t,e,n,r,o,a,i,s,u,c){var l=[r/o,o],f=this.readSync(t.dataId),h=this.readSync(e.dataId);if(0===r)return rn([],n,e.dtype);var p=new lt(l,e.dtype);p.values.fill(this.readSync(u.dataId)[0]);for(var d=0;d<a;d++){for(var v=[],m=0,g=0;g<i;g++){var y=f[d*i+g];v.push(y),m+=y*s[g]}if(m<0||m>=r/o)throw new Error("Invalid indices: "+v+" does not index into "+n);for(var b=0;b<o;b++)c?p.values[m*o+b]+=h[d*o+b]:p.values[m*o+b]=0===e.rank?h[0]:h[d*o+b]}return p.toTensor().reshape(n)},e}(Ir);Ot.registerBackend("cpu",(function(){return new Cl}),1),m({kernelName:"Square",backendName:"cpu",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e.x,o=n;wl(r,"square");for(var a=o.data.get(r.dataId).values,i=new Float32Array(a.length),s=0;s<a.length;++s){var u=a[s];i[s]=u*u}return{dataId:o.write(i,r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}}),m({kernelName:"Square",backendName:"webgl",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=e.x,o=n,a=new gi(r.shape,"return x * x;");return o.runWebGLProgram(a,[r],r.dtype)}});var _l,kl=function(t){this.variableNames=["A"];var e=uo(),n=t[0],r=t[1];this.outputShape=t,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+r+".0, "+n+".0);\n\n vec4 values = "+e.texture2D+"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n setOutput(floor(value * 255.0 + 0.5));\n }\n "},Rl=function(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var e=uo(),n=t[0],r=t[1];this.outputShape=t,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n\n vec4 result = vec4(0.);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n texC = coords[1] + row;\n depth = coords[2] + col;\n\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+r+".0, "+n+".0);\n vec4 values = "+e.texture2D+"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n result[row * 2 + col] = floor(value * 255.0 + 0.5);\n }\n }\n\n "+e.output+" = result;\n }\n "};m({kernelName:"FromPixels",backendName:"webgl",kernelFunc:function(t){var e=t.inputs,n=t.backend,r=t.attrs,o=e.pixels,a=r.numChannels,i="undefined"!=typeof HTMLVideoElement&&o instanceof HTMLVideoElement,s="undefined"!=typeof HTMLImageElement&&o instanceof HTMLImageElement,u=i?[o.videoWidth,o.videoHeight]:[o.width,o.height],c=u[0],l=u[1],h=[l,c],p=[l,c,a];(s||i)&&(null==_l&&(_l=document.createElement("canvas").getContext("2d")),_l.canvas.width=c,_l.canvas.height=l,_l.drawImage(o,0,0,c,l),o=_l.canvas);var d=n.makeTensorInfo(h,"int32");n.texData.get(d.dataId).usage=Ft.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(d.dataId),o);var v=f().getBool("WEBGL_PACK")?new Rl(p):new kl(p),m=n.runWebGLProgram(v,[d],"int32");return n.disposeData(d.dataId),m}});var Il=function(){function t(){}return t.prototype.fetch=function(t,e){return fetch(t,e)},t.prototype.now=function(){return performance.now()},t.prototype.encode=function(t,e){if("utf-8"!==e&&"utf8"!==e)throw new Error("Browser's encoder only supports utf-8, but got "+e);return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(t)},t.prototype.decode=function(t,e){return new TextDecoder(e).decode(t)},t}();f().get("IS_BROWSER")&&f().setPlatform("browser",new Il);var Sl,Al=function(){function t(){this.util=n(69),this.textEncoder=new this.util.TextEncoder}return t.prototype.fetch=function(t,e){return null!=f().global.fetch?f().global.fetch(t,e):(null==Sl&&(Sl=n(68)),Sl(t,e))},t.prototype.now=function(){var t=r.hrtime();return 1e3*t[0]+t[1]/1e6},t.prototype.encode=function(t,e){if("utf-8"!==e&&"utf8"!==e)throw new Error("Node built-in encoder only supports utf-8, but got "+e);return this.textEncoder.encode(t)},t.prototype.decode=function(t,e){return 0===t.length?"":new this.util.TextDecoder(e).decode(t)},t}();f().get("IS_NODE")&&f().setPlatform("node",new Al);var Ol={float32:4,int32:4,uint16:2,uint8:1,bool:1};function Tl(t,e){for(var n={},r=0,o=function(e){var o=e.name,a=e.dtype,i=e.shape,s=R(i),u=void 0;if("quantization"in e){var c=e.quantization;if("uint8"!==c.dtype&&"uint16"!==c.dtype)throw new Error("Weight "+e.name+" has unknown quantization dtype "+c.dtype+". Supported quantization dtypes are: 'uint8' and 'uint16'.");var l=Ol[c.dtype],f=t.slice(r,r+s*l),h="uint8"===c.dtype?new Uint8Array(f):new Uint16Array(f);if("float32"===a)u=Float32Array.from(h,(function(t){return t*c.scale+c.min}));else{if("int32"!==a)throw new Error("Unsupported dtype in weight '"+o+"': "+a);u=Int32Array.from(h,(function(t){return Math.round(t*c.scale+c.min)}))}r+=s*l}else if("string"===a){var p=R(e.shape);u=[];for(var d=0;d<p;d++){var v=new Uint32Array(t.slice(r,r+4))[0];r+=4;var m=new Uint8Array(t.slice(r,r+v));u.push(m),r+=v}}else{var g=Ol[a];if(f=t.slice(r,r+s*g),"float32"===a)u=new Float32Array(f);else if("int32"===a)u=new Int32Array(f);else{if("bool"!==a)throw new Error("Unsupported dtype in weight '"+o+"': "+a);u=new Uint8Array(f)}r+=s*g}n[o]=rn(u,i,a)},a=0,i=e;a<i.length;a++)o(i[a]);return n}function Dl(t){if(null===t)throw new Error("Invalid input value: "+JSON.stringify(t));var e=0,n=[];t.forEach((function(t){if(e+=t.byteLength,n.push(t.byteLength===t.buffer.byteLength?t:new t.constructor(t)),!(t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+t.constructor.name)}));var r=new Uint8Array(e),o=0;return n.forEach((function(t){r.set(new Uint8Array(t.buffer),o),o+=t.byteLength})),r.buffer}var Nl=void 0!==o&&("undefined"==typeof Blob||"undefined"==typeof atob||"undefined"==typeof btoa);function Fl(t){return Nl?o.byteLength(t):new Blob([t]).size}function Ml(t){var e=0;t.forEach((function(t){e+=t.byteLength}));var n=new Uint8Array(e),r=0;return t.forEach((function(t){n.set(new Uint8Array(t),r),r+=t.byteLength})),n.buffer}function Pl(t){for(t=t.trim();t.endsWith("/");)t=t.slice(0,t.length-1);var e=t.split("/");return e[e.length-1]}function Bl(t){if(t.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:null==t.modelTopology?0:Fl(JSON.stringify(t.modelTopology)),weightSpecsBytes:null==t.weightSpecs?0:Fl(JSON.stringify(t.weightSpecs)),weightDataBytes:null==t.weightData?0:t.weightData.byteLength}}var Ll=function(){function t(){this.saveRouters=[],this.loadRouters=[]}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerSaveRouter=function(e){t.getInstance().saveRouters.push(e)},t.registerLoadRouter=function(e){t.getInstance().loadRouters.push(e)},t.getSaveHandlers=function(e){return t.getHandlers(e,"save")},t.getLoadHandlers=function(e,n){return t.getHandlers(e,"load",n)},t.getHandlers=function(e,n,r){var o=[];return("load"===n?t.getInstance().loadRouters:t.getInstance().saveRouters).forEach((function(t){var n=t(e,r);null!==n&&o.push(n)})),o},t}(),Wl="://",Ul=function(){function t(){this.managers={}}return t.getInstance=function(){return null==t.instance&&(t.instance=new t),t.instance},t.registerManager=function(e,n){E(null!=e,(function(){return"scheme must not be undefined or null."})),e.endsWith(Wl)&&(e=e.slice(0,e.indexOf(Wl))),E(e.length>0,(function(){return"scheme must not be an empty string."}));var r=t.getInstance();E(null==r.managers[e],(function(){return"A model store manager is already registered for scheme '"+e+"'."})),r.managers[e]=n},t.getManager=function(t){var e=this.getInstance().managers[t];if(null==e)throw new Error("Cannot find model manager for scheme '"+t+"'");return e},t.getSchemes=function(){return Object.keys(this.getInstance().managers)},t}();function jl(t){if(-1===t.indexOf(Wl))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+Ul.getSchemes().join(","));return{scheme:t.split(Wl)[0],path:t.split(Wl)[1]}}function zl(t,e,n){return void 0===n&&(n=!1),u(this,void 0,void 0,(function(){var r,o,a,i,s,u,l,f,h;return c(this,(function(c){switch(c.label){case 0:return E(t!==e,(function(){return"Old path and new path are the same: '"+t+"'"})),E((r=Ll.getLoadHandlers(t)).length>0,(function(){return"Copying failed because no load handler is found for source URL "+t+"."})),E(r.length<2,(function(){return"Copying failed because more than one ("+r.length+") load handlers for source URL "+t+"."})),o=r[0],E((a=Ll.getSaveHandlers(e)).length>0,(function(){return"Copying failed because no save handler is found for destination URL "+e+"."})),E(a.length<2,(function(){return"Copying failed because more than one ("+r.length+") save handlers for destination URL "+e+"."})),i=a[0],s=jl(t).scheme,u=jl(t).path,l=s===jl(t).scheme,[4,o.load()];case 1:return f=c.sent(),n&&l?[4,Ul.getManager(s).removeModel(u)]:[3,3];case 2:c.sent(),c.label=3;case 3:return[4,i.save(f)];case 4:return h=c.sent(),!n||l?[3,6]:[4,Ul.getManager(s).removeModel(u)];case 5:c.sent(),c.label=6;case 6:return[2,h.modelArtifactsInfo]}}))}))}var Vl="models_store",Gl="model_info_store";function Hl(){if(!f().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var t=window,e=t.indexedDB||t.mozIndexedDB||t.webkitIndexedDB||t.msIndexedDB||t.shimIndexedDB;if(null==e)throw new Error("The current browser does not appear to support IndexedDB.");return e}function ql(t){var e=t.result;e.createObjectStore(Vl,{keyPath:"modelPath"}),e.createObjectStore(Gl,{keyPath:"modelPath"})}var Kl=function(){function t(t){if(this.indexedDB=Hl(),null==t||!t)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=t}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,t)]}))}))},t.prototype.load=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){return[2,this.databaseAction(this.modelPath)]}))}))},t.prototype.databaseAction=function(t,e){var n=this;return new Promise((function(t,r){var o=n.indexedDB.open("tensorflowjs",1);o.onupgradeneeded=function(){return ql(o)},o.onsuccess=function(){var a=o.result;if(null==e){var i=a.transaction(Vl,"readonly"),s=i.objectStore(Vl).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return a.close(),r(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));t(s.result.modelArtifacts)},s.onerror=function(t){return a.close(),r(s.error)},i.oncomplete=function(){return a.close()}}else{var u,c=Bl(e),l=a.transaction(Gl,"readwrite"),f=l.objectStore(Gl),h=f.put({modelPath:n.modelPath,modelArtifactsInfo:c});h.onsuccess=function(){var o=(u=a.transaction(Vl,"readwrite")).objectStore(Vl).put({modelPath:n.modelPath,modelArtifacts:e,modelArtifactsInfo:c});o.onsuccess=function(){return t({modelArtifactsInfo:c})},o.onerror=function(t){var e=(f=l.objectStore(Gl)).delete(n.modelPath);e.onsuccess=function(){return a.close(),r(o.error)},e.onerror=function(t){return a.close(),r(o.error)}}},h.onerror=function(t){return a.close(),r(h.error)},l.oncomplete=function(){null==u?a.close():u.oncomplete=function(){return a.close()}}}},o.onerror=function(t){return r(o.error)}}))},t.URL_SCHEME="indexeddb://",t}(),Xl=function(t){return f().getBool("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(Kl.URL_SCHEME)?(e=t.slice(Kl.URL_SCHEME.length),new Kl(e)):null;var e};Ll.registerSaveRouter(Xl),Ll.registerLoadRouter(Xl);var $l=function(){function t(){this.indexedDB=Hl()}return t.prototype.listModels=function(){return u(this,void 0,void 0,(function(){var t=this;return c(this,(function(e){return[2,new Promise((function(e,n){var r=t.indexedDB.open("tensorflowjs",1);r.onupgradeneeded=function(){return ql(r)},r.onsuccess=function(){var t=r.result,o=t.transaction(Gl,"readonly"),a=o.objectStore(Gl).getAll();a.onsuccess=function(){for(var t={},n=0,r=a.result;n<r.length;n++){var o=r[n];t[o.modelPath]=o.modelArtifactsInfo}e(t)},a.onerror=function(e){return t.close(),n(a.error)},o.oncomplete=function(){return t.close()}},r.onerror=function(t){return n(r.error)}}))]}))}))},t.prototype.removeModel=function(t){return u(this,void 0,void 0,(function(){var e=this;return c(this,(function(n){var r;return t=(r=t).startsWith(Kl.URL_SCHEME)?r.slice(Kl.URL_SCHEME.length):r,[2,new Promise((function(n,r){var o=e.indexedDB.open("tensorflowjs",1);o.onupgradeneeded=function(){return ql(o)},o.onsuccess=function(){var e,a=o.result,i=a.transaction(Gl,"readwrite"),s=i.objectStore(Gl),u=s.get(t);u.onsuccess=function(){if(null==u.result)return a.close(),r(new Error("Cannot find model with path '"+t+"' in IndexedDB."));var o=s.delete(t),i=function(){var o=(e=a.transaction(Vl,"readwrite")).objectStore(Vl).delete(t);o.onsuccess=function(){return n(u.result.modelArtifactsInfo)},o.onerror=function(t){return r(u.error)}};o.onsuccess=i,o.onerror=function(t){return i(),a.close(),r(u.error)}},u.onerror=function(t){return a.close(),r(u.error)},i.oncomplete=function(){null==e?a.close():e.oncomplete=function(){return a.close()}}},o.onerror=function(t){return r(o.error)}}))]}))}))},t}();if(f().getBool("IS_BROWSER"))try{Ul.registerManager(Kl.URL_SCHEME,new $l)}catch(i){}var Yl="/",Jl="tensorflowjs_models",Ql="info",Zl="model_topology",tf="weight_specs",ef="weight_data",nf="model_metadata";function rf(t){return{info:[Jl,t,Ql].join(Yl),topology:[Jl,t,Zl].join(Yl),weightSpecs:[Jl,t,tf].join(Yl),weightData:[Jl,t,ef].join(Yl),modelMetadata:[Jl,t,nf].join(Yl)}}function of(t){var e=t.split(Yl);if(e.length<3)throw new Error("Invalid key format: "+t);return e.slice(1,e.length-1).join(Yl)}var af=function(){function t(t){if(!f().getBool("IS_BROWSER")||void 0===window.localStorage)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==t||!t)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=t,this.keys=rf(this.modelPath)}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){var e,n,r;return c(this,(function(a){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");e=JSON.stringify(t.modelTopology),n=JSON.stringify(t.weightSpecs),r=Bl(t);try{return this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,e),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,(i=t.weightData,Nl?o.from(i).toString("base64"):btoa(String.fromCharCode.apply(null,new Uint8Array(i))))),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata})),[2,{modelArtifactsInfo:r}]}catch(t){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error("Failed to save model '"+this.modelPath+"' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes="+r.modelTopologyBytes+", weightSpecsBytes="+r.weightSpecsBytes+", weightDataBytes="+r.weightDataBytes+".")}var i;return[2]}))}))},t.prototype.load=function(){return u(this,void 0,void 0,(function(){var t,e,n,r,a,i,s;return c(this,(function(u){if(null==(t=JSON.parse(this.LS.getItem(this.keys.info))))throw new Error("In local storage, there is no model with name '"+this.modelPath+"'");if("JSON"!==t.modelTopologyType)throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");if(e={},null==(n=JSON.parse(this.LS.getItem(this.keys.topology))))throw new Error("In local storage, the topology of model '"+this.modelPath+"' is missing.");if(e.modelTopology=n,null==(r=JSON.parse(this.LS.getItem(this.keys.weightSpecs))))throw new Error("In local storage, the weight specs of model '"+this.modelPath+"' are missing.");if(e.weightSpecs=r,null!=(a=this.LS.getItem(this.keys.modelMetadata))&&(i=JSON.parse(a),e.format=i.format,e.generatedBy=i.generatedBy,e.convertedBy=i.convertedBy,e.userDefinedMetadata=i.userDefinedMetadata),null==(s=this.LS.getItem(this.keys.weightData)))throw new Error("In local storage, the binary weight values of model '"+this.modelPath+"' are missing.");return e.weightData=function(t){if(Nl){var e=o.from(t,"base64");return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}for(var n=atob(t),r=new Uint8Array(n.length),a=0;a<n.length;++a)r.set([n.charCodeAt(a)],a);return r.buffer}(s),[2,e]}))}))},t.URL_SCHEME="localstorage://",t}(),sf=function(t){return f().getBool("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(af.URL_SCHEME)?(e=t.slice(af.URL_SCHEME.length),new af(e)):null;var e};Ll.registerSaveRouter(sf),Ll.registerLoadRouter(sf);var uf=function(){function t(){E(f().getBool("IS_BROWSER"),(function(){return"Current environment is not a web browser"})),E(void 0!==window.localStorage,(function(){return"Current browser does not appear to support localStorage"})),this.LS=window.localStorage}return t.prototype.listModels=function(){return u(this,void 0,void 0,(function(){var t,e,n,r,o,a;return c(this,(function(i){for(t={},e=Jl+Yl,n=Yl+Ql,r=0;r<this.LS.length;++r)(o=this.LS.key(r)).startsWith(e)&&o.endsWith(n)&&(a=of(o),t[a]=JSON.parse(this.LS.getItem(o)));return[2,t]}))}))},t.prototype.removeModel=function(t){return u(this,void 0,void 0,(function(){var e,n;return c(this,(function(r){var o;if(t=(o=t).startsWith(af.URL_SCHEME)?o.slice(af.URL_SCHEME.length):o,e=rf(t),null==this.LS.getItem(e.info))throw new Error("Cannot find model at path '"+t+"'");return n=JSON.parse(this.LS.getItem(e.info)),this.LS.removeItem(e.info),this.LS.removeItem(e.topology),this.LS.removeItem(e.weightSpecs),this.LS.removeItem(e.weightData),[2,n]}))}))},t}();if(f().getBool("IS_BROWSER"))try{Ul.registerManager(af.URL_SCHEME,new uf)}catch(i){}function cf(t){return new Promise((function(t){return setTimeout(t)})).then(t)}var lf=function(){function t(e){if(!f().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(t.URL_SCHEME)&&(e=e.slice(t.URL_SCHEME.length)),null!=e&&0!==e.length||(e="model"),this.modelTopologyFileName=e+".json",this.weightDataFileName=e+".weights.bin"}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o,a,i;return c(this,(function(s){switch(s.label){case 0:if("undefined"==typeof document)throw new Error("Browser downloads are not supported in this environment since `document` is not present");if(e=window.URL.createObjectURL(new Blob([t.weightData],{type:"application/octet-stream"})),!(t.modelTopology instanceof ArrayBuffer))return[3,1];throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");case 1:return n=[{paths:["./"+this.weightDataFileName],weights:t.weightSpecs}],r={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,weightsManifest:n},o=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),(a=null==this.jsonAnchor?document.createElement("a"):this.jsonAnchor).download=this.modelTopologyFileName,a.href=o,[4,cf((function(){return a.dispatchEvent(new MouseEvent("click"))}))];case 2:return s.sent(),null==t.weightData?[3,4]:((i=null==this.weightDataAnchor?document.createElement("a"):this.weightDataAnchor).download=this.weightDataFileName,i.href=e,[4,cf((function(){return i.dispatchEvent(new MouseEvent("click"))}))]);case 3:s.sent(),s.label=4;case 4:return[2,{modelArtifactsInfo:Bl(t)}]}}))}))},t.URL_SCHEME="downloads://",t}(),ff=function(){function t(t){if(null==t||t.length<1)throw new Error("When calling browserFiles, at least 1 file is required, but received "+t);this.files=t}return t.prototype.load=function(){return u(this,void 0,void 0,(function(){var t,e,n=this;return c(this,(function(r){return t=this.files[0],e=this.files.slice(1),[2,new Promise((function(r,o){var a=new FileReader;a.onload=function(a){var i=JSON.parse(a.target.result),s=i.modelTopology;if(null!=s){0===e.length&&r({modelTopology:s});var u=i.weightsManifest;if(null!=u){var c;try{c=n.checkManifestAndWeightFiles(u,e)}catch(t){return void o(t)}var l=[],f=[],h=[];u.forEach((function(t){t.paths.forEach((function(t){f.push(t),h.push(null)})),l.push.apply(l,t.weights)})),u.forEach((function(t){t.paths.forEach((function(t){var e=new FileReader;e.onload=function(e){var n=e.target.result,o=f.indexOf(t);h[o]=n,-1===h.indexOf(null)&&r({modelTopology:s,weightSpecs:l,weightData:Ml(h),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy,userDefinedMetadata:i.userDefinedMetadata})},e.onerror=function(e){return o("Failed to weights data from file of path '"+t+"'.")},e.readAsArrayBuffer(c[t])}))}))}else o(new Error("weightManifest field is missing from file "+t.name))}else o(new Error("modelTopology field is missing from file "+t.name))},a.onerror=function(e){return o("Failed to read model topology and weights manifest JSON from file '"+t.name+"'. BrowserFiles supports loading Keras-style tf.Model artifacts only.")},a.readAsText(t)}))]}))}))},t.prototype.checkManifestAndWeightFiles=function(t,e){for(var n=[],r=e.map((function(t){return Pl(t.name)})),o={},a=0,i=t;a<i.length;a++)i[a].paths.forEach((function(t){var a=Pl(t);if(-1!==n.indexOf(a))throw new Error("Duplicate file basename found in weights manifest: '"+a+"'");if(n.push(a),-1===r.indexOf(a))throw new Error("Weight file with basename '"+a+"' is not provided.");o[t]=e[r.indexOf(a)]}));if(n.length!==e.length)throw new Error("Mismatch in the number of files in weights manifest ("+n.length+") and the number of weight files provided ("+e.length+").");return o},t}();function hf(t,e,n,r){!function(t){E(null!=t&&Array.isArray(t)&&t.length>0,(function(){return"promises must be a none empty array"}))}(t),function(t,e){E(t>=0&&t<=1,(function(){return"Progress fraction must be in range [0, 1], but got startFraction "+t})),E(e>=0&&e<=1,(function(){return"Progress fraction must be in range [0, 1], but got endFraction "+e})),E(e>=t,(function(){return"startFraction must be no more than endFraction, but got startFraction "+t+" and endFraction "+e}))}(n=null==n?0:n,r=null==r?1:r);var o=0;return Promise.all(t.map((function(a){return a.then((function(a){var i=n+ ++o/t.length*(r-n);return e(i),a})),a})))}function pf(t,e){return u(this,void 0,void 0,(function(){var n,r,o,a,i,s,u,l,h;return c(this,(function(c){switch(c.label){case 0:return null==e&&(e={}),n=null==e.fetchFunc?f().platform.fetch:e.fetchFunc,r=t.map((function(t){return n(t,e.requestInit,{isBinary:!0})})),o=0,a=.5,null!=e.onProgress?[3,2]:[4,Promise.all(r)];case 1:return i=c.sent(),[3,4];case 2:return[4,hf(r,e.onProgress,o,a)];case 3:i=c.sent(),c.label=4;case 4:return s=i.map((function(t){return t.arrayBuffer()})),u=.5,l=1,null!=e.onProgress?[3,6]:[4,Promise.all(s)];case 5:return h=c.sent(),[3,8];case 6:return[4,hf(s,e.onProgress,u,l)];case 7:h=c.sent(),c.label=8;case 8:return[2,h]}}))}))}function df(t){var e=this;return function(n,r,o){return void 0===r&&(r=""),u(e,void 0,void 0,(function(){var e,a,i,s,u,l,f,h,p,d;return c(this,(function(c){switch(c.label){case 0:if(e=n.map((function(){return!1})),a={},i=null!=o?o.map((function(){return!1})):[],s=[],n.forEach((function(t,n){var r=0;t.weights.forEach((function(t){var u="quantization"in t?t.quantization.dtype:t.dtype,c=Ol[u]*R(t.shape),l=function(){e[n]=!0,null==a[n]&&(a[n]=[]),a[n].push({manifestEntry:t,groupOffset:r,sizeBytes:c})};null!=o?o.forEach((function(e,n){e===t.name&&(l(),i[n]=!0)})):l(),s.push(t.name),r+=c}))})),!i.every((function(t){return t})))throw u=o.filter((function(t,e){return!i[e]})),new Error("Could not find weights in manifest with names: "+u.join(", ")+". \nManifest JSON has weights with names: "+s.join(", ")+".");return l=e.reduce((function(t,e,n){return e&&t.push(n),t}),[]),f=[],l.forEach((function(t){n[t].paths.forEach((function(t){var e=r+(r.endsWith("/")?"":"/")+t;f.push(e)}))})),[4,t(f)];case 1:return h=c.sent(),p={},d=0,l.forEach((function(t){for(var e=n[t].paths.length,r=0,o=0;o<e;o++)r+=h[d+o].byteLength;for(var i=new ArrayBuffer(r),s=new Uint8Array(i),u=0,c=0;c<e;c++){var l=new Uint8Array(h[d+c]);s.set(l,u),u+=l.byteLength}a[t].forEach((function(t){var e=Tl(i.slice(t.groupOffset,t.groupOffset+t.sizeBytes),[t.manifestEntry]);for(var n in e)p[n]=e[n]})),d+=e})),[2,p]}}))}))}}Ll.registerSaveRouter((function(t){return f().getBool("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(lf.URL_SCHEME)?(void 0===(e=t.slice(lf.URL_SCHEME.length))&&(e="model"),new lf(e)):null;var e}));var vf=function(){function t(t,e){if(this.DEFAULT_METHOD="POST",null==e&&(e={}),this.weightPathPrefix=e.weightPathPrefix,this.onProgress=e.onProgress,null!=e.fetchFunc?(E("function"==typeof e.fetchFunc,(function(){return"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"})),this.fetch=e.fetchFunc):this.fetch=f().platform.fetch,E(null!=t&&t.length>0,(function(){return"URL path for http must not be null, undefined or empty."})),Array.isArray(t)&&E(2===t.length,(function(){return"URL paths for http must have a length of 2, (actual length is "+t.length+")."})),this.path=t,null!=e.requestInit&&null!=e.requestInit.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=e.requestInit||{}}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o;return c(this,(function(a){switch(a.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:t.weightSpecs}],r={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata,weightsManifest:n},e.body.append("model.json",new Blob([JSON.stringify(r)],{type:"application/json"}),"model.json"),null!=t.weightData&&e.body.append("model.weights.bin",new Blob([t.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,this.fetch(this.path,e)];case 1:if((o=a.sent()).ok)return[2,{modelArtifactsInfo:Bl(t),responses:[o]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+o.status+".")}}))}))},t.prototype.load=function(){return u(this,void 0,void 0,(function(){var t,e,n,r,o,a,i,s,u,l,f,h;return c(this,(function(c){switch(c.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(!(t=c.sent()).ok)throw new Error("Request to "+this.path+" failed with status code "+t.status+". Please verify this URL points to the model JSON of the model to load.");c.label=2;case 2:return c.trys.push([2,4,,5]),[4,t.json()];case 3:return e=c.sent(),[3,5];case 4:throw c.sent(),n="Failed to parse model JSON of response from "+this.path+".",this.path.endsWith(".pb")?n+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":n+=" Please make sure the server is serving valid JSON for this request.",new Error(n);case 5:if(r=e.modelTopology,o=e.weightsManifest,a=e.generatedBy,i=e.convertedBy,s=e.format,u=e.userDefinedMetadata,null==r&&null==o)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return null==o?[3,7]:[4,this.loadWeights(o)];case 6:h=c.sent(),l=h[0],f=h[1],c.label=7;case 7:return[2,{modelTopology:r,weightSpecs:l,weightData:f,userDefinedMetadata:u,generatedBy:a,convertedBy:i,format:s}]}}))}))},t.prototype.loadWeights=function(t){return u(this,void 0,void 0,(function(){var e,n,r,o,a,i,s,u,l,f,h;return c(this,(function(c){switch(c.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,n=function(t){var e=t.lastIndexOf("/"),n=t.lastIndexOf("?");return[t.substring(0,e)+"/",n>e?t.substring(n):""]}(e),r=n[0],o=n[1],a=this.weightPathPrefix||r,i=[],s=0,u=t;s<u.length;s++)l=u[s],i.push.apply(i,l.weights);return f=[],t.forEach((function(t){t.paths.forEach((function(t){f.push(a+t+o)}))})),[4,pf(f,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress})];case 1:return h=c.sent(),[2,[i,Ml(h)]]}}))}))},t.URL_SCHEME_REGEX=/^https?:\/\//,t}();function mf(t){return null!=t.match(vf.URL_SCHEME_REGEX)}var gf=function(t,e){return"undefined"==typeof fetch?null:(Array.isArray(t)?t.every((function(t){return mf(t)})):mf(t))?yf(t,{onProgress:e}):null};function yf(t,e){return new vf(t,e)}Ll.registerSaveRouter(gf),Ll.registerLoadRouter(gf);var bf,xf=function(){function t(t){this.modelArtifacts=t}return t.prototype.load=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){return[2,this.modelArtifacts]}))}))},t}(),wf=function(){function t(t){this.saveHandler=t}return t.prototype.save=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){return[2,this.saveHandler(t)]}))}))},t}(),Ef=Object.freeze({browserFiles:function(t){return new ff(t)},browserHTTPRequest:function(t,e){return yf(t,e)},concatenateArrayBuffers:Ml,decodeWeights:Tl,encodeWeights:function(t,e){return u(this,void 0,void 0,(function(){var n,r,o,a,i,s=this;return c(this,(function(l){switch(l.label){case 0:for(n=[],r=[],o=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t),a=function(a){var i=o[a],l=Array.isArray(t)?t[a].tensor:t[i];if("float32"!==l.dtype&&"int32"!==l.dtype&&"bool"!==l.dtype&&"string"!==l.dtype)throw new Error("Unsupported dtype in weight '"+i+"': "+l.dtype);var f={name:i,shape:l.shape,dtype:l.dtype};if("string"===l.dtype){var h=new Promise((function(t){return u(s,void 0,void 0,(function(){var e,n,r,o,a,i,s;return c(this,(function(u){switch(u.label){case 0:return[4,l.bytes()];case 1:for(e=u.sent(),n=e.reduce((function(t,e){return t+e.length}),0)+4*e.length,r=new Uint8Array(n),o=0,a=0;a<e.length;a++)i=e[a],s=new Uint8Array(new Uint32Array([i.length]).buffer),r.set(s,o),o+=4,r.set(i,o),o+=i.length;return t(r),[2]}}))}))}));r.push(h)}else r.push(l.data());null!=e&&(f.group=e),n.push(f)},i=0;i<o.length;++i)a(i);return[4,Promise.all(r)];case 1:return[2,{data:Dl(l.sent()),specs:n}]}}))}))},fromMemory:function(t,e,n,r){return 1===arguments.length?null!=t.modelTopology||null!=t.weightSpecs?new xf(t):new xf({modelTopology:t}):new xf({modelTopology:t,weightSpecs:e,weightData:n,trainingConfig:r})},getLoadHandlers:function(t,e){return Ll.getLoadHandlers(t,e)},getModelArtifactsInfoForJSON:Bl,getSaveHandlers:function(t){return Ll.getSaveHandlers(t)},http:yf,isHTTPScheme:mf,loadWeights:function(t,e,n,r){return void 0===e&&(e=""),u(this,void 0,void 0,(function(){return c(this,(function(o){return[2,df((function(t){return pf(t,{requestInit:r})}))(t,e,n)]}))}))},registerLoadRouter:function(t){return Ll.registerLoadRouter(t)},registerSaveRouter:function(t){return Ll.registerSaveRouter(t)},weightsLoaderFactory:df,withSaveHandler:function(t){return new wf(t)},copyModel:function(t,e){return u(this,void 0,void 0,(function(){return c(this,(function(n){return[2,zl(t,e,!1)]}))}))},listModels:function(){return u(this,void 0,void 0,(function(){var t,e,n,r,o,a,i;return c(this,(function(s){switch(s.label){case 0:t=Ul.getSchemes(),e={},n=0,r=t,s.label=1;case 1:return n<r.length?(o=r[n],[4,Ul.getManager(o).listModels()]):[3,4];case 2:for(i in a=s.sent())e[o+Wl+i]=a[i];s.label=3;case 3:return n++,[3,1];case 4:return[2,e]}}))}))},moveModel:function(t,e){return u(this,void 0,void 0,(function(){return c(this,(function(n){return[2,zl(t,e,!0)]}))}))},removeModel:function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){return e=jl(t),[2,Ul.getManager(e.scheme).removeModel(e.path)]}))}))}}),Cf=Ze({confusionMatrix_:function(t,e,n){var r=je(t,"labels","confusionMatrix"),o=je(e,"predictions","confusionMatrix");E(null==n||n>0&&Number.isInteger(n),(function(){return"If provided, numClasses must be a positive integer, but got "+n})),E(1===r.rank,(function(){return"Expected the rank of labels to be 1, but got "+r.rank})),E(1===o.rank,(function(){return"Expected the rank of predictions to be 1, but got "+o.rank})),E(r.shape[0]===o.shape[0],(function(){return"Mismatch in the number of examples: "+r.shape[0]+" vs. "+o.shape[0]+". Labels and predictions should have the same number of elements."})),E(n>0&&Number.isInteger(n),(function(){return"numClasses is required to be a positive integer, but got "+n}));var a=Hn(r.asType("int32"),n),i=Hn(o.asType("int32"),n);return a.transpose().matMul(i).asType("int32")}}),_f=(Object.freeze({confusionMatrix:Cf}),Ze({fromPixels_:function(t,e){if(void 0===e&&(e=3),e>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(null==t)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var n=!1,r=!1,o=!1,a=!1,i=!1;if(t.data instanceof Uint8Array)n=!0;else if("undefined"!=typeof ImageData&&t instanceof ImageData)r=!0;else if("undefined"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement)o=!0;else if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement)a=!0;else{if(null==t.getContext)throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was "+t.constructor.name);i=!0}if(o&&o&&t.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the <video> element.");if(null!=d("FromPixels",Ot.backendName))return Ot.runKernel("FromPixels",{pixels:t},{numChannels:e});var s,u,c=o?[t.videoWidth,t.videoHeight]:[t.width,t.height],l=c[0],f=c[1];if(i?s=t.getContext("2d").getImageData(0,0,l,f).data:r||n?s=t.data:(a||o)&&(null==bf&&(bf=document.createElement("canvas").getContext("2d")),bf.canvas.width=l,bf.canvas.height=f,bf.drawImage(t,0,0,l,f),s=bf.getImageData(0,0,l,f).data),4===e)u=new Int32Array(s);else{var h=l*f;u=new Int32Array(h*e);for(var p=0;p<h;p++)for(var v=0;v<e;++v)u[p*e+v]=s[4*p+v]}return cn(u,[f,l,e],"int32")}})),kf=Object.freeze({toPixels:function(t,e){return u(this,void 0,void 0,(function(){var n,r,o,a,i,s,u,l,f,h,p,d,v,m,g,y,b,x,w,E,C,_,k;return c(this,(function(c){switch(c.label){case 0:if(n=je(t,"img","toPixels"),t instanceof dt||(n=n.toInt()),2!==n.rank&&3!==n.rank)throw new Error("toPixels only supports rank 2 or 3 tensors, got rank "+n.rank+".");if(r=n.shape.slice(0,2),o=r[0],a=r[1],(i=2===n.rank?1:n.shape[2])>4||2===i)throw new Error("toPixels only supports depth of size 1, 3 or 4 but got "+i);return[4,n.data()];case 1:return s=c.sent(),u=n.min(),l=n.max(),[4,Promise.all([u.data(),l.data()])];case 2:if(f=c.sent(),h=f[0],p=f[1],d=h[0],v=p[0],u.dispose(),l.dispose(),"float32"===n.dtype){if(d<0||v>1)throw new Error("Tensor values for a float32 Tensor must be in the range [0 - 1] but got range ["+d+" - "+v+"].")}else{if("int32"!==n.dtype)throw new Error("Unsupported type for toPixels: "+n.dtype+". Please use float32 or int32 tensors.");if(d<0||v>255)throw new Error("Tensor values for a int32 Tensor must be in the range [0 - 255] but got range ["+d+" - "+v+"].")}for(m="float32"===n.dtype?255:1,g=new Uint8ClampedArray(a*o*4),y=0;y<o*a;++y)b=void 0,x=void 0,w=void 0,E=void 0,1===i?(b=s[y]*m,x=s[y]*m,w=s[y]*m,E=255):3===i?(b=s[3*y]*m,x=s[3*y+1]*m,w=s[3*y+2]*m,E=255):4===i&&(b=s[4*y]*m,x=s[4*y+1]*m,w=s[4*y+2]*m,E=s[4*y+3]*m),g[0+(C=4*y)]=Math.round(b),g[C+1]=Math.round(x),g[C+2]=Math.round(w),g[C+3]=Math.round(E);return null!=e&&(e.width=a,e.height=o,_=e.getContext("2d"),k=new ImageData(g,a,o),_.putImageData(k,0,0)),n!==t&&n.dispose(),[2,g]}}))}))},fromPixels:_f}),Rf=function(){function t(){}return t.prototype.getClassName=function(){return this.constructor.className},t.fromConfig=function(t,e){return new t(e)},t}(),If=function(){function t(){this.classNameMap={}}return t.getMap=function(){return null==t.instance&&(t.instance=new t),t.instance},t.register=function(e){t.getMap().classNameMap[e.className]=[e,e.fromConfig]},t}();function Sf(t){E(null!=t.className,(function(){return"Class being registered does not have the static className property defined."})),E("string"==typeof t.className,(function(){return"className is required to be a string, but got type "+typeof t.className})),E(t.className.length>0,(function(){return"Class being registered has an empty-string as its className, which is disallowed."})),If.register(t)}Object.freeze({Serializable:Rf,SerializationMap:If,registerClass:Sf});function Af(){return 32===Ot.backend.floatPrecision()?.001:.1}function Of(t,e,n){var r=!0;if((j(t)||j(e))&&(r=!1),j(t)&&j(e)&&(r=!0),r){var o=t.constructor.name,a=e.constructor.name;if(o!==a)throw new Error("Arrays are of different type. Actual: "+o+". Expected: "+a)}if(Array.isArray(t)&&Array.isArray(e)){var i=We(t),s=We(e);if(!I(i,s))throw new Error("Arrays have different shapes. Actual: ["+i+"]. Expected: ["+s+"]")}var u=j(t)?t:k(t),c=j(e)?e:k(e);if(u.length!==c.length)throw new Error("Arrays have different lengths actual: "+u.length+" vs expected: "+c.length+".\nActual: "+u+".\nExpected: "+c+".");for(var l=0;l<c.length;++l){var f=u[l],h=c[l];if(!n(f,h))throw new Error("Arrays differ: actual["+l+"] = "+f+", expected["+l+"] = "+h+".\nActual: "+u+".\nExpected: "+c+".")}}function Tf(t,e,n){return!isFinite(t)&&!isFinite(e)||!(isNaN(t)||isNaN(e)||Math.abs(t-e)>n)}Object.freeze({TEST_EPSILON_FLOAT16:.1,expectArraysClose:function(t,e,n){return null==n&&(n=Af()),Of(t,e,(function(t,e){return Tf(t,e,n)}))},testEpsilon:Af,expectPromiseToFail:function(t,e){t().then((function(){return e.fail()}),(function(){return e()}))},expectArraysEqual:function(t,e){var n="string"==typeof e||"number"==typeof e||"boolean"==typeof e?[e]:e;return G(t)||G(t[0])||G(e)||G(e[0])?Of(t,n,(function(t,e){return t==e})):Of(t,e,(function(t,e){return Tf(t,e,0)}))},expectNumbersClose:function(t,e,n){if(null==n&&(n=Af()),!Tf(t,e,n))throw new Error("Numbers differ: actual === "+t+", expected === "+e)},expectValuesInRange:function(t,e,n){for(var r=0;r<t.length;r++)if(t[r]<e||t[r]>n)throw new Error("Value out of range:"+t[r]+" low: "+e+", high: "+n)},expectArrayBuffersEqual:function(t,e){expect(new Float32Array(t)).toEqual(new Float32Array(e))}}),Object.freeze({gpgpu_util:Oa,webgl_util:Ne,forceHalfFloat:function(){f().set("WEBGL_FORCE_F16_TEXTURES",!0)},MathBackendWebGL:Pi,setWebGLContext:Lt,GPGPUContext:Ta});var Df=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return s(e,t),e.prototype.minimize=function(t,e,n){void 0===e&&(e=!1);var r=this.computeGradients(t,n),o=r.value,a=r.grads;if(null!=n){var i=n.map((function(t){return{name:t.name,tensor:a[t.name]}}));this.applyGradients(i)}else this.applyGradients(a);return Be(a),e?o:(o.dispose(),null)},Object.defineProperty(e.prototype,"iterations",{get:function(){return null==this.iterations_&&(this.iterations_=0),this.iterations_},enumerable:!0,configurable:!0}),e.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},e.prototype.computeGradients=function(t,e){return function(t,e){E(X(t),(function(){return"The f passed in variableGrads(f) must be a function"})),E(null==e||Array.isArray(e)&&e.every((function(t){return t instanceof xt})),(function(){return"The varList passed in variableGrads(f, varList) must be an array of variables"}));var n=null!=e;if(!n)for(var r in e=[],Ot.registeredVariables)e.push(Ot.registeredVariables[r]);var o=n?e.filter((function(t){return!t.trainable})):null,a=e.length;E((e=e.filter((function(t){return t.trainable}))).length>0,(function(){return"variableGrads() expects at least one of the input variables to be trainable, but none of the "+a+" variables is trainable."}));var i=Ot.gradients(t,e,null,!0),s=i.value,u=i.grads;E(u.some((function(t){return null!=t})),(function(){return"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."})),E(0===s.rank,(function(){return"The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+s.rank+" tensor"}));var c={};return e.forEach((function(t,e){null!=u[e]&&(c[t.name]=u[e])})),null!=o&&o.forEach((function(t){return c[t.name]=null})),{value:s,grads:c}}(t,e)},e.prototype.dispose=function(){null!=this.iterations_&&Be(this.iterations_)},e.prototype.saveIterations=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){return null==this.iterations_&&(this.iterations_=0),[2,{name:"iter",tensor:an(this.iterations_,"int32")}]}))}))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){throw new Error("getWeights() is not implemented for this optimizer yet.")}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(t){throw new Error("setWeights() is not implemented for this optimizer class "+this.getClassName())}))}))},e.prototype.extractIterations=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){switch(n.label){case 0:return e=this,[4,t[0].tensor.data()];case 1:return e.iterations_=n.sent()[0],[2,t.slice(1)]}}))}))},e}(Rf);Object.defineProperty(Df,Symbol.hasInstance,{value:function(t){return null!=t.minimize&&null!=t.computeGradients&&null!=t.applyGradients}});var Nf=function(t){function e(e,n,r){void 0===r&&(r=null);var o=t.call(this)||this;return o.learningRate=e,o.rho=n,o.epsilon=r,o.accumulatedGrads=[],o.accumulatedUpdates=[],null==r&&(o.epsilon=Ot.backend.epsilon()),o}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Ot.registeredVariables[n];null==e.accumulatedGrads[r]&&(e.accumulatedGrads[r]={originalName:n+"/accum_grad",variable:Pe((function(){return mn(o).variable(!1)}))}),null==e.accumulatedUpdates[r]&&(e.accumulatedUpdates[r]={originalName:n+"/accum_var",variable:Pe((function(){return mn(o).variable(!1)}))});var a=Array.isArray(t)?t[r].tensor:t[n];if(null!=a){var i=e.accumulatedGrads[r].variable,s=e.accumulatedUpdates[r].variable;Pe((function(){var t=i.mul(e.rho).add(a.square().mul(1-e.rho)),n=s.add(e.epsilon).sqrt().div(i.add(e.epsilon).sqrt()).mul(a),r=s.mul(e.rho).add(n.square().mul(1-e.rho));i.assign(t),s.assign(r);var u=n.mul(-e.learningRate).add(o);o.assign(u)}))}})),this.incrementIterations()},e.prototype.dispose=function(){null!=this.accumulatedUpdates&&(Be(this.accumulatedGrads.map((function(t){return t.variable}))),Be(this.accumulatedUpdates.map((function(t){return t.variable}))))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return t=this.accumulatedGrads.concat(this.accumulatedUpdates),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(t)];case 1:return t=n.sent(),e=t.length/2,this.accumulatedGrads=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedUpdates=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},e.fromConfig=function(t,e){return new t(e.learningRate,e.rho,e.epsilon)},e.className="Adadelta",e}(Df);Sf(Nf);var Ff=function(t){function e(e,n){void 0===n&&(n=.1);var r=t.call(this)||this;return r.learningRate=e,r.initialAccumulatorValue=n,r.accumulatedGrads=[],r}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Ot.registeredVariables[n];null==e.accumulatedGrads[r]&&(e.accumulatedGrads[r]={originalName:n+"/accumulator",variable:Pe((function(){return pn(o.shape,e.initialAccumulatorValue).variable(!1)}))});var a=Array.isArray(t)?t[r].tensor:t[n];if(null!=a){var i=e.accumulatedGrads[r].variable;Pe((function(){var t=i.add(a.square());i.assign(t);var n=a.div(t.add(Ot.backend.epsilon()).sqrt()).mul(-e.learningRate).add(o);o.assign(n)}))}})),this.incrementIterations()},e.prototype.dispose=function(){null!=this.accumulatedGrads&&Be(this.accumulatedGrads.map((function(t){return t.variable})))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(this.accumulatedGrads.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:return t=e.sent(),this.accumulatedGrads=t.map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},e.fromConfig=function(t,e){return new t(e.learningRate,e.initialAccumulatorValue)},e.className="Adagrad",e}(Df);Sf(Ff);var Mf=function(t){function e(e,n,r,o){void 0===o&&(o=null);var a=t.call(this)||this;return a.learningRate=e,a.beta1=n,a.beta2=r,a.epsilon=o,a.accumulatedFirstMoment=[],a.accumulatedSecondMoment=[],Pe((function(){a.accBeta1=an(n).variable(),a.accBeta2=an(r).variable()})),null==o&&(a.epsilon=Ot.backend.epsilon()),a}return s(e,t),e.prototype.applyGradients=function(t){var e=this,n=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t);Pe((function(){var r=ou(1,e.accBeta1),o=ou(1,e.accBeta2);n.forEach((function(n,a){var i=Ot.registeredVariables[n];null==e.accumulatedFirstMoment[a]&&(e.accumulatedFirstMoment[a]={originalName:n+"/m",variable:Pe((function(){return mn(i).variable(!1)}))}),null==e.accumulatedSecondMoment[a]&&(e.accumulatedSecondMoment[a]={originalName:n+"/v",variable:Pe((function(){return mn(i).variable(!1)}))});var s=Array.isArray(t)?t[a].tensor:t[n];if(null!=s){var u=e.accumulatedFirstMoment[a].variable,c=e.accumulatedSecondMoment[a].variable,l=u.mul(e.beta1).add(s.mul(1-e.beta1)),f=c.mul(e.beta2).add(s.square().mul(1-e.beta2)),h=l.div(r),p=f.div(o);u.assign(l),c.assign(f);var d=h.div(p.sqrt().add(e.epsilon)).mul(-e.learningRate).add(i);i.assign(d)}})),e.accBeta1.assign(e.accBeta1.mul(e.beta1)),e.accBeta2.assign(e.accBeta2.mul(e.beta2))})),this.incrementIterations()},e.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&Be(this.accumulatedFirstMoment.map((function(t){return t.variable}))),null!=this.accumulatedSecondMoment&&Be(this.accumulatedSecondMoment.map((function(t){return t.variable})))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return t=this.accumulatedFirstMoment.concat(this.accumulatedSecondMoment),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){var e,n=this;return c(this,(function(r){switch(r.label){case 0:return[4,this.extractIterations(t)];case 1:return t=r.sent(),Pe((function(){n.accBeta1.assign(tu(n.beta1,n.iterations_+1)),n.accBeta2.assign(tu(n.beta2,n.iterations_+1))})),e=t.length/2,this.accumulatedFirstMoment=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedSecondMoment=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},e.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon)},e.className="Adam",e}(Df);Sf(Mf);var Pf=function(t){function e(e,n,r,o,a){void 0===o&&(o=null),void 0===a&&(a=0);var i=t.call(this)||this;return i.learningRate=e,i.beta1=n,i.beta2=r,i.epsilon=o,i.decay=a,i.accumulatedFirstMoment=[],i.accumulatedWeightedInfNorm=[],Pe((function(){i.iteration=an(0).variable(),i.accBeta1=an(n).variable()})),null==o&&(i.epsilon=Ot.backend.epsilon()),i}return s(e,t),e.prototype.applyGradients=function(t){var e=this,n=Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t);Pe((function(){var r=ou(1,e.accBeta1),o=zs(-e.learningRate,e.iteration.mul(e.decay).add(1));n.forEach((function(n,a){var i=Ot.registeredVariables[n];null==e.accumulatedFirstMoment[a]&&(e.accumulatedFirstMoment[a]={originalName:n+"/m",variable:mn(i).variable(!1)}),null==e.accumulatedWeightedInfNorm[a]&&(e.accumulatedWeightedInfNorm[a]={originalName:n+"/v",variable:mn(i).variable(!1)});var s=Array.isArray(t)?t[a].tensor:t[n];if(null!=s){var u=e.accumulatedFirstMoment[a].variable,c=e.accumulatedWeightedInfNorm[a].variable,l=u.mul(e.beta1).add(s.mul(1-e.beta1)),f=c.mul(e.beta2),h=s.abs(),p=f.maximum(h);u.assign(l),c.assign(p);var d=o.div(r).mul(l.div(p.add(e.epsilon))).add(i);i.assign(d)}})),e.iteration.assign(e.iteration.add(1)),e.accBeta1.assign(e.accBeta1.mul(e.beta1))})),this.incrementIterations()},e.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&Be(this.accumulatedFirstMoment.map((function(t){return t.variable}))),null!=this.accumulatedWeightedInfNorm&&Be(this.accumulatedWeightedInfNorm.map((function(t){return t.variable})))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){throw new Error("getWeights() is not implemented for Adamax yet.")}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(t){throw new Error("setWeights() is not implemented for Adamax yet.")}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},e.fromConfig=function(t,e){return new t(e.learningRate,e.beta1,e.beta2,e.epsilon,e.decay)},e.className="Adamax",e}(Df);Sf(Pf);var Bf=function(t){function e(e){var n=t.call(this)||this;return n.learningRate=e,n.setLearningRate(e),n}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Array.isArray(t)?t[r].tensor:t[n];if(null!=o){var a=Ot.registeredVariables[n];Pe((function(){var t=e.c.mul(o).add(a);a.assign(t)}))}})),this.incrementIterations()},e.prototype.setLearningRate=function(t){this.learningRate=t,null!=this.c&&this.c.dispose(),this.c=function(t){return Ot.keep(t)}(an(-t))},e.prototype.dispose=function(){this.c.dispose()},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()]]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:if(0!==(t=e.sent()).length)throw new Error("SGD optimizer does not have settable weights.");return[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate}},e.fromConfig=function(t,e){return new t(e.learningRate)},e.className="SGD",e}(Df);Sf(Bf);var Lf=function(t){function e(e,n,r){void 0===r&&(r=!1);var o=t.call(this,e)||this;return o.learningRate=e,o.momentum=n,o.useNesterov=r,o.accumulations=[],o.m=an(o.momentum),o}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Ot.registeredVariables[n];null==e.accumulations[r]&&(e.accumulations[r]={originalName:n+"/momentum",variable:Pe((function(){return mn(o).variable(!1)}))});var a=e.accumulations[r].variable,i=Array.isArray(t)?t[r].tensor:t[n];null!=i&&Pe((function(){var t,n=e.m.mul(a).add(i);t=e.useNesterov?e.c.mul(i.add(n.mul(e.m))).add(o):e.c.mul(n).add(o),a.assign(n),o.assign(t)}))})),this.incrementIterations()},e.prototype.dispose=function(){this.m.dispose(),null!=this.accumulations&&Be(this.accumulations.map((function(t){return t.variable})))},e.prototype.setMomentum=function(t){this.momentum=t},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(this.accumulations.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){return c(this,(function(e){switch(e.label){case 0:return[4,this.extractIterations(t)];case 1:return t=e.sent(),this.accumulations=t.map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},e.fromConfig=function(t,e){return new t(e.learningRate,e.momentum,e.useNesterov)},e.className="Momentum",e}(Bf);Sf(Lf);var Wf=function(t){function e(e,n,r,o,a){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===o&&(o=null),void 0===a&&(a=!1);var i=t.call(this)||this;return i.learningRate=e,i.decay=n,i.momentum=r,i.epsilon=o,i.accumulatedMeanSquares=[],i.accumulatedMoments=[],i.accumulatedMeanGrads=[],i.centered=a,null==o&&(i.epsilon=Ot.backend.epsilon()),i}return s(e,t),e.prototype.applyGradients=function(t){var e=this;(Array.isArray(t)?t.map((function(t){return t.name})):Object.keys(t)).forEach((function(n,r){var o=Ot.registeredVariables[n];null==e.accumulatedMeanSquares[r]&&(e.accumulatedMeanSquares[r]={originalName:n+"/rms",variable:Pe((function(){return mn(o).variable(!1)}))}),null==e.accumulatedMoments[r]&&(e.accumulatedMoments[r]={originalName:n+"/momentum",variable:Pe((function(){return mn(o).variable(!1)}))}),null==e.accumulatedMeanGrads[r]&&e.centered&&(e.accumulatedMeanGrads[r]={originalName:n+"/mg",variable:Pe((function(){return mn(o).variable(!1)}))});var a=Array.isArray(t)?t[r].tensor:t[n];if(null!=a){var i=e.accumulatedMeanSquares[r].variable,s=e.accumulatedMoments[r].variable;Pe((function(){var t=i.mul(e.decay).add(a.square().mul(1-e.decay));if(e.centered){var n=e.accumulatedMeanGrads[r].variable,u=n.mul(e.decay).add(a.mul(1-e.decay)),c=s.mul(e.momentum).add(a.mul(e.learningRate).div(t.sub(u.square().add(e.epsilon)).sqrt()));i.assign(t),n.assign(u),s.assign(c);var l=o.sub(c);o.assign(l)}else{var f=i.mul(e.decay).add(a.square().mul(1-e.decay));c=s.mul(e.momentum).add(a.mul(e.learningRate).div(f.add(e.epsilon).sqrt())),i.assign(f),s.assign(c),l=o.sub(c),o.assign(l)}}))}})),this.incrementIterations()},e.prototype.dispose=function(){null!=this.accumulatedMeanSquares&&Be(this.accumulatedMeanSquares.map((function(t){return t.variable}))),null!=this.accumulatedMeanGrads&&this.centered&&Be(this.accumulatedMeanGrads.map((function(t){return t.variable}))),null!=this.accumulatedMoments&&Be(this.accumulatedMoments.map((function(t){return t.variable})))},e.prototype.getWeights=function(){return u(this,void 0,void 0,(function(){var t;return c(this,(function(e){switch(e.label){case 0:return t=this.accumulatedMeanSquares.concat(this.accumulatedMoments),this.centered&&t.push.apply(t,this.accumulatedMeanGrads),[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(t.map((function(t){return{name:t.originalName,tensor:t.variable}})))]}}))}))},e.prototype.setWeights=function(t){return u(this,void 0,void 0,(function(){var e;return c(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(t)];case 1:return t=n.sent(),e=this.centered?t.length/3:t.length/2,this.accumulatedMeanSquares=t.slice(0,e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.accumulatedMoments=t.slice(e,2*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}})),this.centered&&(this.accumulatedMeanGrads=t.slice(2*e,3*e).map((function(t){return{originalName:t.name,variable:t.tensor.variable(!1)}}))),[2]}}))}))},e.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},e.fromConfig=function(t,e){return new t(e.learningRate,e.decay,e.momentum,e.epsilon,e.centered)},e.className="RMSProp",e}(Df);Sf(Wf);var Uf=function(){function t(){}return t.sgd=function(t){return new Bf(t)},t.momentum=function(t,e,n){return void 0===n&&(n=!1),new Lf(t,e,n)},t.rmsprop=function(t,e,n,r,o){return void 0===e&&(e=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===o&&(o=!1),new Wf(t,e,n,r,o)},t.adam=function(t,e,n,r){return void 0===t&&(t=.001),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new Mf(t,e,n,r)},t.adadelta=function(t,e,n){return void 0===t&&(t=.001),void 0===e&&(e=.95),void 0===n&&(n=null),new Nf(t,e,n)},t.adamax=function(t,e,n,r,o){return void 0===t&&(t=.002),void 0===e&&(e=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===o&&(o=0),new Pf(t,e,n,r,o)},t.adagrad=function(t,e){return void 0===e&&(e=.1),new Ff(t,e)},t}();Uf.sgd,Uf.momentum,Uf.adadelta,Uf.adagrad,Uf.rmsprop,Uf.adamax,Uf.adam,"undefined"!=typeof requestAnimationFrame&&requestAnimationFrame;ht=xl}).call(this,n(5),n(10),n(61).Buffer,n(65).setImmediate)},function(t,e,n){"use strict";n.d(e,"c",(function(){return o})),n.d(e,"a",(function(){return a})),n.d(e,"b",(function(){return i})),n.d(e,"d",(function(){return s})),n.d(e,"e",(function(){return u}));var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function o(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var a=function(){return(a=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};function i(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(e){a(e)}}function s(t){try{u(r.throw(t))}catch(e){a(e)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,s)}u((r=r.apply(t,e||[])).next())}))}function s(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=e.call(t,i)}catch(s){a=[6,s],r=0}finally{n=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}}function u(){for(var t=0,e=0,n=arguments.length;e<n;e++)t+=arguments[e].length;var r=Array(t),o=0;for(e=0;e<n;e++)for(var a=arguments[e],i=0,s=a.length;i<s;i++,o++)r[o]=a[i];return r}},function(t,e){t.exports=require("react")},function(t,e,n){t.exports=n(59)()},function(t,e,n){var r=n(54),o=n(55),a=n(56),i=n(58);t.exports=function(t,e){return r(t)||o(t,e)||a(t,e)||i()},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){t.exports={container:"tUn9t5uXBW0G4uOuaTOqA",baseCounter:"_3JRt0WWENWRFRoNQBy35fI",activeCounter:"_1fIU1q1Zn5Q8C9xn0Ir-dW",inactiveCounter:"_2mwc0c5WhPOqV9wJk9VkGV",baseIcon:"_2_g_DOxWE8kqzFMzKyK37t",activeIcon:"_3mr2-PKNrqmyEJlyzqUVvx",inactiveIcon:"_1RzxXrRIq2Q9MbP1nZJdM9"}},function(t,e,n){t.exports={container:"_1BAMDen_YLcifIe4T1Qv-_",overlay:"_1e9w5ipw5j_XUcEv_CJUlO",outline:"_2W6OS2MmM9HFQCXWdJ8ASr",portraitCamera:"_2R1kfrIDlFyYzv1nDgZcTN",landscapeCamera:"TwXhRfznW400Ln2BpPUbd"}},function(t,e,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var t=[],e=0;e<arguments.length;e++){var r=arguments[e];if(r){var a=typeof r;if("string"===a||"number"===a)t.push(r);else if(Array.isArray(r)&&r.length){var i=o.apply(null,r);i&&t.push(i)}else if("object"===a)for(var s in r)n.call(r,s)&&r[s]&&t.push(s)}}return t.join(" ")}t.exports?(o.default=o,t.exports=o):void 0===(r=function(){return o}.apply(e,[]))||(t.exports=r)}()},function(t,e,n){"use strict";function r(t){var e="";if(!t)try{t=n(!function(){var t=new Error("Cannot find module 'fs'");throw t.code="MODULE_NOT_FOUND",t}())}catch(r){e=r.toString()}return{readFile:t?function(e){return new Promise((function(n,r){t.readFile(e,(function(t,e){return t?r(t):n(e)}))}))}:function(){throw new Error("readFile - failed to require fs in nodejs environment with error: "+e)}}}n.d(e,"a",(function(){return r}))},function(t,e){var n,r,o=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(t){r=i}}();var u,c=[],l=!1,f=-1;function h(){l&&u&&(l=!1,u.length?c=u.concat(c):f=-1,c.length&&p())}function p(){if(!l){var t=s(h);l=!0;for(var e=c.length;e;){for(u=c,c=[];++f<e;)u&&u[f].run();f=-1,e=c.length}u=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function v(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new d(t,e)),1!==c.length||l||s(p)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=v,o.addListener=v,o.once=v,o.off=v,o.removeListener=v,o.removeAllListeners=v,o.emit=v,o.prependListener=v,o.prependOnceListener=v,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(t,e,n){t.exports={container:"_3UWaUYYyQc5VbvW6HKIRHv",landscape:"_2degJvmXASrj_NvC6CXWqN"}},function(t,e,n){t.exports={button:"_1Tg9slZrrhpko8KnDP7C6X",icon:"_1Fm1wq10kVJMKVxtWwkZex"}},function(t,e,n){"use strict";(function(t){n.d(e,"a",(function(){return a}));var r=n(1),o=n(9);function a(){var e=t.Canvas||t.HTMLCanvasElement,n=t.Image||t.HTMLImageElement,a=t.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},i=Object(o.a)();return Object(r.a)({Canvas:e||function(){},CanvasRenderingContext2D:t.CanvasRenderingContext2D||function(){},Image:n||function(){},ImageData:t.ImageData||function(){},Video:t.HTMLVideoElement||function(){},createCanvasElement:function(){if(e)return new e;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},createImageElement:function(){if(n)return new n;throw new Error("createImageElement - missing Image implementation for nodejs environment")},fetch:a},i)}}).call(this,n(5))},function(t,e,n){"use strict";(function(r,o){function a(){return"object"==typeof r&&void 0!==t&&void 0!==o&&!!o.version}n.d(e,"a",(function(){return a}))}).call(this,n(5),n(10))},function(t,e,n){t.exports={cameraContainer:"_3Ums-OZ0qWebWj0SZbqYjT",moduleContainer:"IOOd58zY5WSnpJo3-6iVV"}},function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}t.exports=function(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){function n(e){return t.exports=n=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},t.exports.default=t.exports,t.exports.__esModule=!0,n(e)}t.exports=n,t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,n){var r=n(73);t.exports=function(t,e){if(null==t)return{};var n,o,a=r(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o<i.length;o++)n=i[o],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(a[n]=t[n])}return a},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,n){t.exports={container:"_309CoDF8kNC59Cacci2i3u"}},function(t,e,n){t.exports={canvas:"vNKPZsVtPwMoITxtjuu9V"}},function(t,e,n){var r;r=function(t){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s="./src/react-webcam.tsx")}({"./src/react-webcam.tsx":function(t,e,n){"use strict";n.r(e);var r,o=n("react"),a=(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),i=function(){return(i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var o in e=arguments[n])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},s=function(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]])}return n};function u(){return!(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)}"undefined"!=typeof window&&(void 0===navigator.mediaDevices&&(navigator.mediaDevices={}),void 0===navigator.mediaDevices.getUserMedia&&(navigator.mediaDevices.getUserMedia=function(t){var e=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;return e?new Promise((function(n,r){e.call(navigator,t,n,r)})):Promise.reject(new Error("getUserMedia is not implemented in this browser"))}));var c=function(t){function e(e){var n=t.call(this,e)||this;return n.canvas=null,n.ctx=null,n.state={hasUserMedia:!1},n}return a(e,t),e.prototype.componentDidMount=function(){var t=this.state,n=this.props;u()?(e.mountedInstances.push(this),t.hasUserMedia||e.userMediaRequested||this.requestUserMedia()):n.onUserMediaError("getUserMedia not supported")},e.prototype.componentDidUpdate=function(t){var e=this.props;if(u()){var n=JSON.stringify(t.audioConstraints)!==JSON.stringify(e.audioConstraints),r=JSON.stringify(t.videoConstraints)!==JSON.stringify(e.videoConstraints),o=t.minScreenshotWidth!==e.minScreenshotWidth,a=t.minScreenshotHeight!==e.minScreenshotHeight;(r||o||a)&&(this.canvas=null,this.ctx=null),(n||r)&&this.requestUserMedia()}else e.onUserMediaError("getUserMedia not supported")},e.prototype.componentWillUnmount=function(){var t=this.state,n=e.mountedInstances.indexOf(this);e.mountedInstances.splice(n,1),e.userMediaRequested=!1,0===e.mountedInstances.length&&t.hasUserMedia&&(this.stream&&(this.stream.getVideoTracks&&this.stream.getAudioTracks?(this.stream.getVideoTracks().map((function(t){return t.stop()})),this.stream.getAudioTracks().map((function(t){return t.stop()}))):this.stream.stop()),t.src&&window.URL.revokeObjectURL(t.src))},e.prototype.getScreenshot=function(){var t=this.state,e=this.props;if(!t.hasUserMedia)return null;var n=this.getCanvas();return n&&n.toDataURL(e.screenshotFormat,e.screenshotQuality)},e.prototype.getCanvas=function(){var t=this.state,e=this.props;if(!this.video)return null;if(!t.hasUserMedia||!this.video.videoHeight)return null;if(!this.ctx){var n=this.video.videoWidth,r=this.video.videoHeight;if(!this.props.forceScreenshotSourceSize){var o=n/r;r=(n=e.minScreenshotWidth||this.video.clientWidth)/o,e.minScreenshotHeight&&r<e.minScreenshotHeight&&(n=(r=e.minScreenshotHeight)*o)}this.canvas=document.createElement("canvas"),this.canvas.width=n,this.canvas.height=r,this.ctx=this.canvas.getContext("2d")}var a=this.ctx,i=this.canvas;return a&&i&&(e.mirrored&&(a.translate(i.width,0),a.scale(-1,1)),a.imageSmoothingEnabled=e.imageSmoothing,a.drawImage(this.video,0,0,i.width,i.height),e.mirrored&&(a.scale(-1,1),a.translate(-i.width,0))),i},e.prototype.requestUserMedia=function(){var t=this.props,n=function(n,r){var o={video:void 0===r||r};t.audio&&(o.audio=void 0===n||n),navigator.mediaDevices.getUserMedia(o).then((function(t){e.mountedInstances.forEach((function(e){return e.handleUserMedia(null,t)}))})).catch((function(t){e.mountedInstances.forEach((function(e){return e.handleUserMedia(t)}))}))};if("mediaDevices"in navigator)n(t.audioConstraints,t.videoConstraints);else{var r=function(t){return{optional:[{sourceId:t}]}},o=function(t){var e=t.deviceId;return"string"==typeof e?e:Array.isArray(e)&&e.length>0?e[0]:"object"==typeof e&&e.ideal?e.ideal:null};MediaStreamTrack.getSources((function(e){var a=null,i=null;e.forEach((function(t){"audio"===t.kind?a=t.id:"video"===t.kind&&(i=t.id)}));var s=o(t.audioConstraints);s&&(a=s);var u=o(t.videoConstraints);u&&(i=u),n(r(a),r(i))}))}e.userMediaRequested=!0},e.prototype.handleUserMedia=function(t,e){var n=this.props;if(t||!e)return this.setState({hasUserMedia:!1}),void n.onUserMediaError(t);this.stream=e;try{this.video&&(this.video.srcObject=e),this.setState({hasUserMedia:!0})}catch(r){this.setState({hasUserMedia:!0,src:window.URL.createObjectURL(e)})}n.onUserMedia()},e.prototype.render=function(){var t=this,e=this.state,n=this.props,r=n.audio,a=(n.forceScreenshotSourceSize,n.onUserMedia,n.onUserMediaError,n.screenshotFormat,n.screenshotQuality,n.minScreenshotWidth,n.minScreenshotHeight,n.audioConstraints,n.videoConstraints,n.imageSmoothing,n.mirrored),u=n.style,c=void 0===u?{}:u,l=s(n,["audio","forceScreenshotSourceSize","onUserMedia","onUserMediaError","screenshotFormat","screenshotQuality","minScreenshotWidth","minScreenshotHeight","audioConstraints","videoConstraints","imageSmoothing","mirrored","style"]),f=a?i(i({},c),{transform:(c.transform||"")+" scaleX(-1)"}):c;return o.createElement("video",i({autoPlay:!0,src:e.src,muted:r,playsInline:!0,ref:function(e){t.video=e},style:f},l))},e.defaultProps={audio:!0,forceScreenshotSourceSize:!1,imageSmoothing:!0,mirrored:!1,onUserMedia:function(){},onUserMediaError:function(){},screenshotFormat:"image/webp",screenshotQuality:.92},e.mountedInstances=[],e.userMediaRequested=!1,e}(o.Component);e.default=c},react:function(e,n){e.exports=t}}).default},t.exports=r(n(2))},function(t,e,n){t.exports={video:"_3GqInLQ5XsRTU_HmqqchW9"}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Preparing camera...","face-scan-loading-feedback-message":"Preparing face scan...","hold-still-feedback-message":"Please hold still","image-too-bright-feedback-message":"Move away from direct light","image-too-dark-feedback-message":"Move to a brighter area","move-back-feedback-message":"Move back","move-center-feedback-message":"Place your face in the frame","move-closer-feedback-message":"Move closer","one-face-only-feedback-message":"Only one face allowed"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Příprava fotoaparátu…","face-scan-loading-feedback-message":"Příprava skenování obličeje…","hold-still-feedback-message":"Stůjte klidně","image-too-bright-feedback-message":"Posuňte se dál z přímého světla","image-too-dark-feedback-message":"Posuňte se na světlejší místo","move-back-feedback-message":"Posuňte se dál","move-center-feedback-message":"Umístěte svůj obličej do rámečku","move-closer-feedback-message":"Posuňte se blíž","one-face-only-feedback-message":"Je povolen pouze jeden obličej"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Forbereder kamera...","face-scan-loading-feedback-message":"Forbereder ansigtsscanning...","hold-still-feedback-message":"Stå stille","image-too-bright-feedback-message":"Flyt væk fra direkte lys","image-too-dark-feedback-message":"Flyt til et lysere område","move-back-feedback-message":"Flyt dig tilbage","move-center-feedback-message":"Hold dit ansigt i rammen","move-closer-feedback-message":"Flyt dig tættere på","one-face-only-feedback-message":"Kun ét ansigt er tilladt"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Kamera lädt...","face-scan-loading-feedback-message":"Gesichtsscan wird vorbereitet","hold-still-feedback-message":"Bitte still halten","image-too-bright-feedback-message":"Vermeiden Sie direkte Lichteinstrahlung","image-too-dark-feedback-message":"Wählen Sie einen helleren Ort","move-back-feedback-message":"Gehen Sie zurück","move-center-feedback-message":"Plazieren Sie Ihr Gesicht in die Mitte","move-closer-feedback-message":"Kommen Sie näher","one-face-only-feedback-message":"Nur ein Gesicht ist erlaubt"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"La cámara se está preparando...","face-scan-loading-feedback-message":"Preparando escaneado facial...","hold-still-feedback-message":"Aguanta un momento","image-too-bright-feedback-message":"Aléjate de la luz directa","image-too-dark-feedback-message":"Muévete a un área más iluminada","move-back-feedback-message":"Retírate","move-center-feedback-message":"Colócate en el centro","move-closer-feedback-message":"Acércate","one-face-only-feedback-message":"Enfócate solo a ti"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"La cámara se está preparando...","face-scan-loading-feedback-message":"Preparando escaneado facial...","hold-still-feedback-message":"Quédate quieto un momento","image-too-bright-feedback-message":"Aléjate de la luz directa","image-too-dark-feedback-message":"Muévete a un área más iluminada","move-back-feedback-message":"Aléjate","move-center-feedback-message":"Colócate en el centro","move-closer-feedback-message":"Acércate","one-face-only-feedback-message":"Enfócate solo a ti"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Valmistellaan kameraa...","face-scan-loading-feedback-message":"Valmistellaan kasvojen skannausta...","hold-still-feedback-message":"Pysy paikallasi","image-too-bright-feedback-message":"Siirry pois suorasta valosta","image-too-dark-feedback-message":"Siirry kirkkaampaan valoon","move-back-feedback-message":"Siirry taaksepäin","move-center-feedback-message":"Aseta kasvot keskelle kehystä","move-closer-feedback-message":"Siirry lähemmäksi","one-face-only-feedback-message":"Vain yhdet kasvot on sallittu"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Préparation de l'appareil...","face-scan-loading-feedback-message":"Préparation du scan...","hold-still-feedback-message":"Veuillez ne pas bouger","image-too-bright-feedback-message":"Éloignez-vous de toute source de lumière directe","image-too-dark-feedback-message":"Déplacez-vous à un endroit plus lumineux","move-back-feedback-message":"Reculez","move-center-feedback-message":"Placez votre visage dans le cadre","move-closer-feedback-message":"Approchez-vous","one-face-only-feedback-message":"Un seul visage permis"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"कैमरे को तैयार किया जा रहा है...","face-scan-loading-feedback-message":"चेहरा स्कैन करने की तैयारी हो रही है…","hold-still-feedback-message":"कृपया हिले डुले नहीं","image-too-bright-feedback-message":"सीधी रोशनी से दूर हटें","image-too-dark-feedback-message":"ज़्यादा रोशनी वाली जगह पर जाएं","move-back-feedback-message":"पीछे जाएं","move-center-feedback-message":"अपने चेहरे को फ़्रेम में लाएं","move-closer-feedback-message":"थोड़ा करीब आएँ","one-face-only-feedback-message":"सिर्फ़ एक चेहरे की अनुमति है"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Caricamento della camera...","face-scan-loading-feedback-message":"Caricamento dello scan facciale...","hold-still-feedback-message":"Rimani fermo","image-too-bright-feedback-message":"Spostati dalla luce diretta","image-too-dark-feedback-message":"Spostati in una zona più illuminata","move-back-feedback-message":"Allontanati","move-center-feedback-message":"Posiziona la tua faccia nel riquadro","move-closer-feedback-message":"Avvicinati","one-face-only-feedback-message":"Solo una faccia è permessa"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"カメラ準備中...","face-scan-loading-feedback-message":"フェイススキャン準備中...","hold-still-feedback-message":"動かないでください","image-too-bright-feedback-message":"直射光を避けてください","image-too-dark-feedback-message":"もっと明るい場所に移動してください","move-back-feedback-message":"離れてください","move-center-feedback-message":"顔を枠内に収めてください","move-closer-feedback-message":"近づいてください","one-face-only-feedback-message":"認識できる顔は1つだけです"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Bezig met camera voorbereiden...","face-scan-loading-feedback-message":"Bezig met gezichtsscan voorbereiden...","hold-still-feedback-message":"Sta stil","image-too-bright-feedback-message":"Niet in direct licht plaatsen","image-too-dark-feedback-message":"Op een lichtere plaats zetten","move-back-feedback-message":"Ga achteruit","move-center-feedback-message":"Plaats je gezicht in het kader","move-closer-feedback-message":"Kom dichter bij","one-face-only-feedback-message":"Slechts één gezicht toegestaan"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Klargjør kameraet ...","face-scan-loading-feedback-message":"Klargjør ansiktsskanning ...","hold-still-feedback-message":"Hold deg i ro","image-too-bright-feedback-message":"Gå vekk fra direkte lys","image-too-dark-feedback-message":"Gå til et lysere område","move-back-feedback-message":"Gå bakover","move-center-feedback-message":"Hold ansiktet ditt i rammen","move-closer-feedback-message":"Beveg deg forover","one-face-only-feedback-message":"Kun ett ansikt tillat"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Przygotowywanie aparatu...","face-scan-loading-feedback-message":"Przygotowywanie skanu twarzy...","hold-still-feedback-message":"Nie ruszaj się","image-too-bright-feedback-message":"Przejdź do lepiej oświetlonego miejsca","image-too-dark-feedback-message":"Odsuń się, aby światło nie padało na Ciebie bezpośrednio","move-back-feedback-message":"Cofnij się","move-center-feedback-message":"Umieść twarz w ramce","move-closer-feedback-message":"Przybliż się","one-face-only-feedback-message":"Dozwolona jest tylko jedna twarz"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Preparando câmera...","face-scan-loading-feedback-message":"Preparando scan do rosto...","hold-still-feedback-message":"Segure firme","image-too-bright-feedback-message":"Afaste-se da iluminação direta.","image-too-dark-feedback-message":"Vá para uma área mais iluminada","move-back-feedback-message":"Afaste-se","move-center-feedback-message":"Coloque seu rosto no quadro","move-closer-feedback-message":"Aproxime-se","one-face-only-feedback-message":"Somente um rosto permitido"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Se pregătește camera...","face-scan-loading-feedback-message":"Se pregătește scanarea feței...","hold-still-feedback-message":"Vă rugăm nu vă mișcați","image-too-bright-feedback-message":"Îndepărtați-vă de lumina directă","image-too-dark-feedback-message":"Duceți-vă într-o zonă mai luminoasă","move-back-feedback-message":"Mergeți mai în spate","move-center-feedback-message":"Poziționați fața în cadru","move-closer-feedback-message":"Veniți mai aproape","one-face-only-feedback-message":"Este permisă doar o singură față"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Подготовка камеры...","face-scan-loading-feedback-message":"Подготовка к сканированию лица...","hold-still-feedback-message":"Не двигайтесь","image-too-bright-feedback-message":"Отодвиньтесь от прямого света","image-too-dark-feedback-message":"Перейдите в более светлое место","move-back-feedback-message":"Отодвиньтесь назад","move-center-feedback-message":"Поместите лицо в рамку","move-closer-feedback-message":"Придвиньтесь ближе","one-face-only-feedback-message":"Допускается только одно лицо"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Förbereder kameran …","face-scan-loading-feedback-message":"Förbereder ansiktsskanning ...","hold-still-feedback-message":"Vänligen håll still","image-too-bright-feedback-message":"Avlägsna dig från direkt ljus","image-too-dark-feedback-message":"Flytta till ett ljusare område","move-back-feedback-message":"Backa","move-center-feedback-message":"Placera ditt ansikte i ramen","move-closer-feedback-message":"Flytta dig närmare","one-face-only-feedback-message":"Endast ett ansikte tillåtet"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"กำลังเตรียมกล้อง...","face-scan-loading-feedback-message":"กำลังเตรียมการสแกนใบหน้า...","hold-still-feedback-message":"โปรดหยุดนิ่ง","image-too-bright-feedback-message":"ขยับออกห่างจากแสงโดยตรง","image-too-dark-feedback-message":"ขยับไปยังพื้นที่ที่สว่างกว่า","move-back-feedback-message":"ถอยหลัง","move-center-feedback-message":"ขยับให้ใบหน้าของคุณอยู่ในเฟรม","move-closer-feedback-message":"ขยับเข้ามาใกล้ขึ้น","one-face-only-feedback-message":"อนุญาตให้มีเพียงใบหน้าเดียวเท่านั้น"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Kamera hazırlanıyor...","face-scan-loading-feedback-message":"Yüz tarama hazırlanıyor...","hold-still-feedback-message":"Lütfen kıpırdamadan bekleyin","image-too-bright-feedback-message":"Direkt ışıktan uzaklaşın","image-too-dark-feedback-message":"Daha aydınlık bir alana geçin","move-back-feedback-message":"Uzaklaşın","move-center-feedback-message":"Yüzünüzü çerçeveye yerleştirin","move-closer-feedback-message":"Yakınlaşın","one-face-only-feedback-message":"Yalnızca bir yüze izin verilir"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Đang chuẩn bị máy ảnh...","face-scan-loading-feedback-message":"Đang chuẩn bị quét khuôn mặt...","hold-still-feedback-message":"Vui lòng giữ yên","image-too-bright-feedback-message":"Di chuyển khỏi chỗ ánh sáng chiếu trực tiếp","image-too-dark-feedback-message":"Di chuyển đến chỗ sáng hơn","move-back-feedback-message":"Lùi lại","move-center-feedback-message":"Giữ khuôn mặt của bạn ở trong khung hình","move-closer-feedback-message":"Di chuyển lại gần hơn","one-face-only-feedback-message":"Chỉ cho phép một khuôn mặt"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Kaamera ettevalmistamine...","face-scan-loading-feedback-message":"Näoskanni ettevalmistamine...","hold-still-feedback-message":"Ärge liigutage","image-too-bright-feedback-message":"Liikuge otsesest valgusest eemale","image-too-dark-feedback-message":"Liikuge paremini valgustatud kohta","move-back-feedback-message":"Liikuge kaugemale","move-center-feedback-message":"Paigutage oma nägu kaadrisse","move-closer-feedback-message":"Liikuge lähemale","one-face-only-feedback-message":"Ainult üks nägu on lubatud"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Підготовка камери...","face-scan-loading-feedback-message":"Підготовка до сканування обличчя...","hold-still-feedback-message":"Не рухайтеся","image-too-bright-feedback-message":"Відійдіть від прямого світла","image-too-dark-feedback-message":"Підійдіть у світліше місце","move-back-feedback-message":"Відійдіть назад","move-center-feedback-message":"Помістіть своє обличчя в рамку","move-closer-feedback-message":"Підійдіть ближче","one-face-only-feedback-message":"Дозволяється лише одне обличчя"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Ruošiamas fotoaparatas...","face-scan-loading-feedback-message":"Ruošiamasi nuskaityti veidą...","hold-still-feedback-message":"Nejudėkite","image-too-bright-feedback-message":"Paeikite toliau nuo tiesioginių saulės spindulių","image-too-dark-feedback-message":"Pereikite į šviesesnę vietą","move-back-feedback-message":"Paeikite atgal","move-center-feedback-message":"Laikykite veidą rėmelyje","move-closer-feedback-message":"Prieikite arčiau","one-face-only-feedback-message":"Gali būti tik vienas veidas"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Menyediakan kamera...","face-scan-loading-feedback-message":"Menyediakan imbasan muka...","hold-still-feedback-message":"Sila jangan bergerak","image-too-bright-feedback-message":"Jauhkan diri daripada cahaya terus","image-too-dark-feedback-message":"Bergerak ke kawasan yang lebih terang","move-back-feedback-message":"Berundur","move-center-feedback-message":"Letakkan muka anda dalam bingkai","move-closer-feedback-message":"Bergerak lebih dekat","one-face-only-feedback-message":"Hanya satu muka dibenarkan"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"Mempersiapkan kamera...","face-scan-loading-feedback-message":"Mempersiapkan pemindaian wajah...","hold-still-feedback-message":"Harap diam","image-too-bright-feedback-message":"Menjauh dari cahaya langsung","image-too-dark-feedback-message":"Pindah ke area yang lebih terang","move-back-feedback-message":"Mundur","move-center-feedback-message":"Tempatkan wajah dalam bingkai","move-closer-feedback-message":"Lebih dekat","one-face-only-feedback-message":"Hanya boleh satu wajah"}}},function(t,e){t.exports={messages:{"camera-loading-feedback-message":"카메라 준비 중...","face-scan-loading-feedback-message":"얼굴 스캔 준비 중...","hold-still-feedback-message":"움직이지 마세요","image-too-bright-feedback-message":"직접광에서 멀리 떨어지세요","image-too-dark-feedback-message":"더 밝은 곳으로 이동하세요","move-back-feedback-message":"뒤로 물러서세요","move-center-feedback-message":"얼굴을 프레임에 맞추세요","move-closer-feedback-message":"더 가까이 오세요","one-face-only-feedback-message":"한 사람의 얼굴만 허용됩니다"}}},function(t,e,n){var r=n(70);t.exports=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&r(t,e)},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,n){var r=n(71).default,o=n(72);t.exports=function(t,e){if(e&&("object"===r(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return o(t)},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t){if(Array.isArray(t))return t},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,a=[],i=!0,s=!1;try{for(n=n.call(t);!(i=(r=n.next()).done)&&(a.push(r.value),!e||a.length!==e);i=!0);}catch(u){s=!0,o=u}finally{try{i||null==n.return||n.return()}finally{if(s)throw o}}return a}},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,n){var r=n(57);t.exports=function(t,e){if(t){if("string"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=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.")},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,n){"use strict";var r=n(60);function o(){}function a(){}a.resetWarningCache=o,t.exports=function(){function t(t,e,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function e(){return t}t.isRequired=t;var n={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(t,e,n){"use strict";(function(t){var r=n(62),o=n(63),a=n(64);function i(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(i()<e)throw new RangeError("Invalid typed array length");return u.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=u.prototype:(null===t&&(t=new u(e)),t.length=e),t}function u(t,e,n){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return new u(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return f(this,t)}return c(this,t,e,n)}function c(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);u.TYPED_ARRAY_SUPPORT?(t=e).__proto__=u.prototype:t=h(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!u.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|d(e,n),o=(t=s(t,r)).write(e,n);o!==r&&(t=t.slice(0,o));return t}(t,e,n):function(t,e){if(u.isBuffer(e)){var n=0|p(e.length);return 0===(t=s(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?s(t,0):h(t,e);if("Buffer"===e.type&&a(e.data))return h(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function f(t,e){if(l(e),t=s(t,e<0?0:0|p(e)),!u.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function h(t,e){var n=e.length<0?0:0|p(e.length);t=s(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function p(t){if(t>=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return U(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return j(t).length;default:if(r)return U(t).length;e=(""+e).toLowerCase(),r=!0}}function v(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return A(this,e,n);case"utf8":case"utf-8":return R(this,e,n);case"ascii":return I(this,e,n);case"latin1":case"binary":return S(this,e,n);case"base64":return k(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function m(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function g(t,e,n,r,o){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(o)return-1;n=t.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof e&&(e=u.from(e,r)),u.isBuffer(e))return 0===e.length?-1:y(t,e,n,r,o);if("number"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):y(t,[e],n,r,o);throw new TypeError("val must be string, number or Buffer")}function y(t,e,n,r,o){var a,i=1,s=t.length,u=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;i=2,s/=2,u/=2,n/=2}function c(t,e){return 1===i?t[e]:t.readUInt16BE(e*i)}if(o){var l=-1;for(a=n;a<s;a++)if(c(t,a)===c(e,-1===l?0:a-l)){if(-1===l&&(l=a),a-l+1===u)return l*i}else-1!==l&&(a-=a-l),l=-1}else for(n+u>s&&(n=s-u),a=n;a>=0;a--){for(var f=!0,h=0;h<u;h++)if(c(t,a+h)!==c(e,h)){f=!1;break}if(f)return a}return-1}function b(t,e,n,r){n=Number(n)||0;var o=t.length-n;r?(r=Number(r))>o&&(r=o):r=o;var a=e.length;if(a%2!=0)throw new TypeError("Invalid hex string");r>a/2&&(r=a/2);for(var i=0;i<r;++i){var s=parseInt(e.substr(2*i,2),16);if(isNaN(s))return i;t[n+i]=s}return i}function x(t,e,n,r){return z(U(e,t.length-n),t,n,r)}function w(t,e,n,r){return z(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function E(t,e,n,r){return w(t,e,n,r)}function C(t,e,n,r){return z(j(e),t,n,r)}function _(t,e,n,r){return z(function(t,e){for(var n,r,o,a=[],i=0;i<t.length&&!((e-=2)<0);++i)n=t.charCodeAt(i),r=n>>8,o=n%256,a.push(o),a.push(r);return a}(e,t.length-n),t,n,r)}function k(t,e,n){return 0===e&&n===t.length?r.fromByteArray(t):r.fromByteArray(t.slice(e,n))}function R(t,e,n){n=Math.min(t.length,n);for(var r=[],o=e;o<n;){var a,i,s,u,c=t[o],l=null,f=c>239?4:c>223?3:c>191?2:1;if(o+f<=n)switch(f){case 1:c<128&&(l=c);break;case 2:128==(192&(a=t[o+1]))&&(u=(31&c)<<6|63&a)>127&&(l=u);break;case 3:a=t[o+1],i=t[o+2],128==(192&a)&&128==(192&i)&&(u=(15&c)<<12|(63&a)<<6|63&i)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:a=t[o+1],i=t[o+2],s=t[o+3],128==(192&a)&&128==(192&i)&&128==(192&s)&&(u=(15&c)<<18|(63&a)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(l=u)}null===l?(l=65533,f=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),o+=f}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=4096));return n}(r)}e.Buffer=u,e.SlowBuffer=function(t){+t!=t&&(t=0);return u.alloc(+t)},e.INSPECT_MAX_BYTES=50,u.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(e){return!1}}(),e.kMaxLength=i(),u.poolSize=8192,u._augment=function(t){return t.__proto__=u.prototype,t},u.from=function(t,e,n){return c(null,t,e,n)},u.TYPED_ARRAY_SUPPORT&&(u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0})),u.alloc=function(t,e,n){return function(t,e,n,r){return l(e),e<=0?s(t,e):void 0!==n?"string"==typeof r?s(t,e).fill(n,r):s(t,e).fill(n):s(t,e)}(null,t,e,n)},u.allocUnsafe=function(t){return f(null,t)},u.allocUnsafeSlow=function(t){return f(null,t)},u.isBuffer=function(t){return!(null==t||!t._isBuffer)},u.compare=function(t,e){if(!u.isBuffer(t)||!u.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,o=0,a=Math.min(n,r);o<a;++o)if(t[o]!==e[o]){n=t[o],r=e[o];break}return n<r?-1:r<n?1:0},u.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},u.concat=function(t,e){if(!a(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return u.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=u.allocUnsafe(e),o=0;for(n=0;n<t.length;++n){var i=t[n];if(!u.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,o),o+=i.length}return r},u.byteLength=d,u.prototype._isBuffer=!0,u.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)m(this,e,e+1);return this},u.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)m(this,e,e+3),m(this,e+1,e+2);return this},u.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)m(this,e,e+7),m(this,e+1,e+6),m(this,e+2,e+5),m(this,e+3,e+4);return this},u.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?R(this,0,t):v.apply(this,arguments)},u.prototype.equals=function(t){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===u.compare(this,t)},u.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},u.prototype.compare=function(t,e,n,r,o){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),e<0||n>t.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&e>=n)return 0;if(r>=o)return-1;if(e>=n)return 1;if(this===t)return 0;for(var a=(o>>>=0)-(r>>>=0),i=(n>>>=0)-(e>>>=0),s=Math.min(a,i),c=this.slice(r,o),l=t.slice(e,n),f=0;f<s;++f)if(c[f]!==l[f]){a=c[f],i=l[f];break}return a<i?-1:i<a?1:0},u.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},u.prototype.indexOf=function(t,e,n){return g(this,t,e,n,!0)},u.prototype.lastIndexOf=function(t,e,n){return g(this,t,e,n,!1)},u.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var o=this.length-e;if((void 0===n||n>o)&&(n=o),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a=!1;;)switch(r){case"hex":return b(this,t,e,n);case"utf8":case"utf-8":return x(this,t,e,n);case"ascii":return w(this,t,e,n);case"latin1":case"binary":return E(this,t,e,n);case"base64":return C(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,e,n);default:if(a)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),a=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function I(t,e,n){var r="";n=Math.min(t.length,n);for(var o=e;o<n;++o)r+=String.fromCharCode(127&t[o]);return r}function S(t,e,n){var r="";n=Math.min(t.length,n);for(var o=e;o<n;++o)r+=String.fromCharCode(t[o]);return r}function A(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var o="",a=e;a<n;++a)o+=W(t[a]);return o}function O(t,e,n){for(var r=t.slice(e,n),o="",a=0;a<r.length;a+=2)o+=String.fromCharCode(r[a]+256*r[a+1]);return o}function T(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function D(t,e,n,r,o,a){if(!u.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>o||e<a)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function N(t,e,n,r){e<0&&(e=65535+e+1);for(var o=0,a=Math.min(t.length-n,2);o<a;++o)t[n+o]=(e&255<<8*(r?o:1-o))>>>8*(r?o:1-o)}function F(t,e,n,r){e<0&&(e=4294967295+e+1);for(var o=0,a=Math.min(t.length-n,4);o<a;++o)t[n+o]=e>>>8*(r?o:3-o)&255}function M(t,e,n,r,o,a){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function P(t,e,n,r,a){return a||M(t,0,n,4),o.write(t,e,n,r,23,4),n+4}function B(t,e,n,r,a){return a||M(t,0,n,8),o.write(t,e,n,r,52,8),n+8}u.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),u.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=u.prototype;else{var o=e-t;n=new u(o,void 0);for(var a=0;a<o;++a)n[a]=this[a+t]}return n},u.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||T(t,e,this.length);for(var r=this[t],o=1,a=0;++a<e&&(o*=256);)r+=this[t+a]*o;return r},u.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||T(t,e,this.length);for(var r=this[t+--e],o=1;e>0&&(o*=256);)r+=this[t+--e]*o;return r},u.prototype.readUInt8=function(t,e){return e||T(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||T(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||T(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||T(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||T(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||T(t,e,this.length);for(var r=this[t],o=1,a=0;++a<e&&(o*=256);)r+=this[t+a]*o;return r>=(o*=128)&&(r-=Math.pow(2,8*e)),r},u.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||T(t,e,this.length);for(var r=e,o=1,a=this[t+--r];r>0&&(o*=256);)a+=this[t+--r]*o;return a>=(o*=128)&&(a-=Math.pow(2,8*e)),a},u.prototype.readInt8=function(t,e){return e||T(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||T(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(t,e){e||T(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(t,e){return e||T(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||T(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||T(t,4,this.length),o.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||T(t,4,this.length),o.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||T(t,8,this.length),o.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||T(t,8,this.length),o.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||D(this,t,e,n,Math.pow(2,8*n)-1,0);var o=1,a=0;for(this[e]=255&t;++a<n&&(o*=256);)this[e+a]=t/o&255;return e+n},u.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||D(this,t,e,n,Math.pow(2,8*n)-1,0);var o=n-1,a=1;for(this[e+o]=255&t;--o>=0&&(a*=256);)this[e+o]=t/a&255;return e+n},u.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):N(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):N(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):F(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):F(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var o=Math.pow(2,8*n-1);D(this,t,e,n,o-1,-o)}var a=0,i=1,s=0;for(this[e]=255&t;++a<n&&(i*=256);)t<0&&0===s&&0!==this[e+a-1]&&(s=1),this[e+a]=(t/i>>0)-s&255;return e+n},u.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var o=Math.pow(2,8*n-1);D(this,t,e,n,o-1,-o)}var a=n-1,i=1,s=0;for(this[e+a]=255&t;--a>=0&&(i*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/i>>0)-s&255;return e+n},u.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):N(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):N(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):F(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||D(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):F(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,n){return P(this,t,e,!0,n)},u.prototype.writeFloatBE=function(t,e,n){return P(this,t,e,!1,n)},u.prototype.writeDoubleLE=function(t,e,n){return B(this,t,e,!0,n)},u.prototype.writeDoubleBE=function(t,e,n){return B(this,t,e,!1,n)},u.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var o,a=r-n;if(this===t&&n<e&&e<r)for(o=a-1;o>=0;--o)t[o+e]=this[o+n];else if(a<1e3||!u.TYPED_ARRAY_SUPPORT)for(o=0;o<a;++o)t[o+e]=this[o+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},u.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var o=t.charCodeAt(0);o<256&&(t=o)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!u.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var a;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var i=u.isBuffer(t)?t:U(new u(t,r).toString()),s=i.length;for(a=0;a<n-e;++a)this[a+e]=i[a%s]}return this};var L=/[^+\/0-9A-Za-z-_]/g;function W(t){return t<16?"0"+t.toString(16):t.toString(16)}function U(t,e){var n;e=e||1/0;for(var r=t.length,o=null,a=[],i=0;i<r;++i){if((n=t.charCodeAt(i))>55295&&n<57344){if(!o){if(n>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(i+1===r){(e-=3)>-1&&a.push(239,191,189);continue}o=n;continue}if(n<56320){(e-=3)>-1&&a.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(e-=3)>-1&&a.push(239,191,189);if(o=null,n<128){if((e-=1)<0)break;a.push(n)}else if(n<2048){if((e-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function j(t){return r.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(L,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function z(t,e,n,r){for(var o=0;o<r&&!(o+n>=e.length||o>=t.length);++o)e[o+n]=t[o];return o}}).call(this,n(5))},function(t,e,n){"use strict";e.byteLength=function(t){var e=c(t),n=e[0],r=e[1];return 3*(n+r)/4-r},e.toByteArray=function(t){var e,n,r=c(t),i=r[0],s=r[1],u=new a(function(t,e,n){return 3*(e+n)/4-n}(0,i,s)),l=0,f=s>0?i-4:i;for(n=0;n<f;n+=4)e=o[t.charCodeAt(n)]<<18|o[t.charCodeAt(n+1)]<<12|o[t.charCodeAt(n+2)]<<6|o[t.charCodeAt(n+3)],u[l++]=e>>16&255,u[l++]=e>>8&255,u[l++]=255&e;2===s&&(e=o[t.charCodeAt(n)]<<2|o[t.charCodeAt(n+1)]>>4,u[l++]=255&e);1===s&&(e=o[t.charCodeAt(n)]<<10|o[t.charCodeAt(n+1)]<<4|o[t.charCodeAt(n+2)]>>2,u[l++]=e>>8&255,u[l++]=255&e);return u},e.fromByteArray=function(t){for(var e,n=t.length,o=n%3,a=[],i=0,s=n-o;i<s;i+=16383)a.push(l(t,i,i+16383>s?s:i+16383));1===o?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===o&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"="));return a.join("")};for(var r=[],o=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,u=i.length;s<u;++s)r[s]=i[s],o[i.charCodeAt(s)]=s;function c(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return-1===n&&(n=e),[n,n===e?0:4-n%4]}function l(t,e,n){for(var o,a,i=[],s=e;s<n;s+=3)o=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),i.push(r[(a=o)>>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return i.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,o){var a,i,s=8*o-r-1,u=(1<<s)-1,c=u>>1,l=-7,f=n?o-1:0,h=n?-1:1,p=t[e+f];for(f+=h,a=p&(1<<-l)-1,p>>=-l,l+=s;l>0;a=256*a+t[e+f],f+=h,l-=8);for(i=a&(1<<-l)-1,a>>=-l,l+=r;l>0;i=256*i+t[e+f],f+=h,l-=8);if(0===a)a=1-c;else{if(a===u)return i?NaN:1/0*(p?-1:1);i+=Math.pow(2,r),a-=c}return(p?-1:1)*i*Math.pow(2,a-r)},e.write=function(t,e,n,r,o,a){var i,s,u,c=8*a-o-1,l=(1<<c)-1,f=l>>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:a-1,d=r?1:-1,v=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,i=l):(i=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-i))<1&&(i--,u*=2),(e+=i+f>=1?h/u:h*Math.pow(2,1-f))*u>=2&&(i++,u/=2),i+f>=l?(s=0,i=l):i+f>=1?(s=(e*u-1)*Math.pow(2,o),i+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,o),i=0));o>=8;t[n+p]=255&s,p+=d,s/=256,o-=8);for(i=i<<o|s,c+=o;c>0;t[n+p]=255&i,p+=d,i/=256,c-=8);t[n+p-d]|=128*v}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function a(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new a(o.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new a(o.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(66),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(5))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,o,a,i,s,u=1,c={},l=!1,f=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){d(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((a=new MessageChannel).port1.onmessage=function(t){d(t.data)},r=function(t){a.port2.postMessage(t)}):f&&"onreadystatechange"in f.createElement("script")?(o=f.documentElement,r=function(t){var e=f.createElement("script");e.onreadystatechange=function(){d(t),e.onreadystatechange=null,o.removeChild(e),e=null},o.appendChild(e)}):r=function(t){setTimeout(d,0,t)}:(i="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(i)&&d(+e.data.slice(i.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(i+e,"*")}),h.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var o={callback:t,args:e};return c[u]=o,r(u),u++},h.clearImmediate=p}function p(t){delete c[t]}function d(t){if(l)setTimeout(d,0,t);else{var e=c[t];if(e){l=!0;try{!function(t){var e=t.callback,n=t.args;switch(n.length){case 0:e();break;case 1:e(n[0]);break;case 2:e(n[0],n[1]);break;case 3:e(n[0],n[1],n[2]);break;default:e.apply(void 0,n)}}(e)}finally{p(t),l=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(5),n(10))},function(t,e){},function(t,e){},function(t,e){},function(t,e){function n(e,r){return t.exports=n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},t.exports.default=t.exports,t.exports.__esModule=!0,n(e,r)}t.exports=n,t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){function n(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(t.exports=n=function(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=n=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),n(e)}t.exports=n,t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||(o[n]=t[n]);return o},t.exports.default=t.exports,t.exports.__esModule=!0},function(t,e,n){"use strict";n.r(e),n.d(e,"ERROR_CODE",(function(){return o})),n.d(e,"LANGUAGE_CODE",(function(){return d})),n.d(e,"CAPTURE_METHOD",(function(){return v})),n.d(e,"IMAGE_TYPE",(function(){return m})),n.d(e,"QUALITY_TYPE",(function(){return g})),n.d(e,"default",(function(){return li}));var r={};n.r(r),n.d(r,"drawContour",(function(){return It})),n.d(r,"drawDetections",(function(){return xe})),n.d(r,"drawFaceExpressions",(function(){return an})),n.d(r,"DrawBoxOptions",(function(){return ye})),n.d(r,"DrawBox",(function(){return be})),n.d(r,"DrawFaceLandmarksOptions",(function(){return cn})),n.d(r,"DrawFaceLandmarks",(function(){return ln})),n.d(r,"drawFaceLandmarks",(function(){return fn})),n.d(r,"AnchorPosition",(function(){return he})),n.d(r,"DrawTextFieldOptions",(function(){return me})),n.d(r,"DrawTextField",(function(){return ge}));const o={NO_CAMERA_PERMISSION:"NO_CAMERA_PERMISSION",NO_CAMERA:"NO_CAMERA",UNSUPPORTED_BROWSER:"UNSUPPORTED_BROWSER",OVERCONSTRAINED:"OVERCONSTRAINED",GENERIC_CAMERA_ERROR:"GENERIC_CAMERA_ERROR",FACE_DETECTION_INIT_ERROR:"FACE_DETECTION_INIT_ERROR",INTERNAL_ERROR:"INTERNAL_ERROR"},a="MOVE_CLOSER",i="MOVE_BACK",s="MOVE_CENTER",u="ONE_FACE_ONLY",c="HOLD_STILL",l="CAMERA_LOADING",f="FACE_SCAN_LOADING",h="IMAGE_TOO_DARK",p="IMAGE_TOO_BRIGHT",d={CS:"cs",DA:"da",DE:"de",EN:"en",ES:"es",ES_419:"es-419",ET:"et",FI:"fi",FR:"fr",HI:"hi",ID:"id",IT:"it",JA:"ja",KO:"ko",LT:"lt",MS:"ms",NB:"nb",NL:"nl",PL:"pl",PT:"pt",RO:"ro",RU:"ru",SV:"sv",TH:"th",TR:"tr",UK:"uk",VI:"vi"},v={MANUAL:"manual",AUTO:"auto"},m={ORIGINAL:"original",CROPPED:"cropped"},g={HIGH:"high",MEDIUM:"medium",LOW:"low"},y={[g.HIGH]:1,[g.MEDIUM]:.96,[g.LOW]:.9};var b=n(2),x=n.n(b);class w extends b.Component{componentDidCatch(){const{onError:t}=this.props;t(o.INTERNAL_ERROR)}render(){const{children:t}=this.props;return t}}var E=w,C=n(4),_=n.n(C),k=n(20),R=n.n(k),I=x.a.createContext(null);function S(){return x.a.useContext(I)}var A=function(t){var e=t.i18n,n=t.defaultComponent,r=t.forceRenderOnLocaleChange,o=void 0===r||r,a=t.children,i=function(){return{i18n:e,defaultComponent:n}},s=function(){return o&&e.locale||"default"},u=x.a.useState(i()),c=_()(u,2),l=c[0],f=c[1],h=x.a.useState(s()),p=_()(h,2),d=p[0],v=p[1];return x.a.useEffect((function(){var t=e.on("change",(function(){f(i()),v(s())}));return"default"===d&&v(s()),function(){return t()}}),[]),o&&"default"===d?null:x.a.createElement(I.Provider,{value:l,key:d},a)};function O(t,e){var n;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return T(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?T(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}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 a,i=!0,s=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return i=t.done,t},e:function(t){s=!0,a=t},f:function(){try{i||null==n.return||n.return()}finally{if(s)throw a}}}}function T(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var D=/<(\d+)>(.*?)<\/\1>|<(\d+)\/>/,N=/(?:\r\n|\r|\n)/g,F={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0};function M(t){if(!t.length)return[];var e=t.slice(0,4),n=_()(e,4),r=n[0],o=n[1],a=n[2],i=n[3];return[[parseInt(r||a),o||"",i]].concat(M(t.slice(4,t.length)))}var P=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return function(){return"".concat(e,"_").concat(t++)}};function B(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function L(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?B(Object(n),!0).forEach((function(e){R()(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):B(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function W(t){var e=S(),n=e.i18n,r=e.defaultComponent,o=t.render,a=t.component,i=t.id,s=t.message,u=t.formats,c=L({},t.values),l=L({},t.components);c&&Object.keys(c).forEach((function(t){var e=c[t];if(x.a.isValidElement(e)){var n=Object.keys(l).length;l[n]=e,c[t]="<".concat(n,"/>")}}));var f=n&&"function"==typeof n._?n._(i,c,{message:s,formats:u}):i,h=f?function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=P(0,"$lingui$"),o=e.replace(N,"").split(D);if(1===o.length)return e;var a=[],i=o.shift();i&&a.push(i);var s,u=O(M(o));try{for(u.s();!(s=u.n()).done;){var c=_()(s.value,3),l=c[0],f=c[1],h=c[2],p=n[l];(!p||F[p.type]&&f)&&(p=x.a.createElement(x.a.Fragment)),a.push(x.a.cloneElement(p,{key:r()},f?t(f,n):p.props.children)),h&&a.push(h)}}catch(d){u.e(d)}finally{u.f()}return a}(f,l):null;if(null===o||null===a)return h;var p=r||x.a.Fragment;if(o&&a);else if(o&&"function"!=typeof o);else if(a&&"function"!=typeof a)return x.a.createElement(p,null,h);if("function"==typeof o)return o({id:i,translation:h,message:s});var d=a||p;return x.a.createElement(d,null,h)}W.defaultProps={values:{},components:{}};var U,j=n(3),z=n.n(j),V=n(8),G=n.n(V),H=n(7),q=n.n(H);function K(){return(K=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var X,$=function(t){return b.createElement("svg",K({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1280 720"},t),U||(U=b.createElement("path",{fill:"#FFF",fillOpacity:.7,fillRule:"evenodd",d:"M1280 0v720H0V0h1280zM658.215 95.79a286.506 286.506 0 00-31.573-.605c-3.545.197-8.59.56-14.622 1.286-6.207.747-16.005 2.002-28.095 5.248a155.94 155.94 0 00-16.938 5.584c-18.993 7.515-37.088 18.327-50.068 33.828-19.713 23.543-29.338 53.4-33.045 83.01-3.922 31.334 1.288 62.583 2.466 93.896.036.933-.066 1.933-1.189 2.205-.489.12-1.01.044-1.49-.105-2.367-.735-3.576-2.94-5.427-4.353-4.138-3.16-10.825-3.19-14.466.709-5.106 5.47-4.03 13.544-2.5 20.126a1882.27 1882.27 0 015.703 25.242l.698 3.203c3.236 14.859 5.256 30.448 14.16 43.384 1.275 1.854 2.705 3.69 4.675 4.858 4.438 2.63 8.543 3.032 11.32 7.741 2.541 4.307 3.22 9.748 4.45 14.478 3.743 14.39 10.884 27.878 17.09 41.39 7.208 15.702 15.101 31.167 24.77 45.629 13.507 20.203 30.719 38.55 52.234 50.83 13.213 7.54 29.09 13.962 44.455 13.237l.01-.002.011.002c15.13.714 30.754-5.501 43.844-12.89l.611-.347c21.515-12.28 38.727-30.627 52.235-50.83 9.668-14.462 17.561-29.927 24.77-45.629 6.205-13.512 13.346-27 17.087-41.39 1.23-4.73 1.911-10.171 4.451-14.478 2.779-4.709 6.883-5.112 11.32-7.74 1.972-1.17 3.401-3.005 4.676-4.86 8.904-12.935 10.925-28.524 14.16-43.383l.698-3.203a1877.285 1877.285 0 015.703-25.242c1.528-6.582 2.606-14.657-2.5-20.126-3.64-3.9-10.327-3.869-14.466-.71-1.851 1.414-3.06 3.619-5.426 4.354-.48.15-1.002.224-1.491.105-1.123-.272-1.225-1.272-1.189-2.205 1.179-31.313 6.388-62.562 2.466-93.896-3.707-29.61-13.332-59.467-33.045-83.01-12.98-15.501-31.075-26.313-50.067-33.828-11.67-4.617-24.272-7.12-27.795-7.833-11.799-2.391-21.042-3.11-28.671-3.68zM642.24 586.523l-.708.05-.699.036-.698-.037c-.236-.015-.472-.03-.708-.049h2.813z"})))};function Y(){return(Y=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var J,Q,Z=function(t){return b.createElement("svg",Y({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 715 715"},t),X||(X=b.createElement("path",{fill:"#D9DEE5",fillOpacity:.7,fillRule:"evenodd",d:"M715 0v715H0V0h715zM368.33 210.97a168.754 168.754 0 00-18.77-.363c-2.107.119-5.107.337-8.692.772-3.69.448-9.515 1.201-16.702 3.149a92.101 92.101 0 00-10.07 3.35c-11.29 4.51-22.047 10.996-29.763 20.297-11.719 14.126-17.44 32.04-19.644 49.806-2.331 18.8.765 37.55 1.466 56.337.021.56-.04 1.16-.707 1.324-.29.071-.6.026-.886-.063-1.407-.441-2.125-1.764-3.226-2.612-2.46-1.896-6.435-1.914-8.6.425-3.035 3.282-2.395 8.127-1.486 12.076 1.16 5.043 2.298 10.08 3.39 15.145.14.64.277 1.281.416 1.922 1.923 8.915 3.124 18.269 8.417 26.03.758 1.113 1.608 2.214 2.78 2.915 2.638 1.578 5.078 1.82 6.728 4.645 1.511 2.584 1.915 5.849 2.647 8.687 2.224 8.634 6.47 16.726 10.158 24.834 4.286 9.42 8.978 18.7 14.725 27.377 8.03 12.122 18.262 23.13 31.052 30.498 7.773 4.477 17.096 8.296 26.14 7.954l.293-.014.294.014c8.856.335 17.98-3.32 25.653-7.675l.487-.28c12.79-7.367 23.022-18.375 31.052-30.497 5.747-8.677 10.44-17.956 14.725-27.377 3.689-8.108 7.934-16.2 10.158-24.834.732-2.838 1.136-6.103 2.646-8.687 1.652-2.826 4.092-3.067 6.73-4.645 1.171-.701 2.021-1.802 2.78-2.915 5.292-7.761 6.493-17.115 8.417-26.03l.415-1.922c1.092-5.065 2.23-10.102 3.39-15.145.909-3.95 1.55-8.794-1.486-12.076-2.164-2.34-6.14-2.32-8.6-.425-1.1.848-1.819 2.17-3.226 2.612-.285.09-.595.134-.886.063-.667-.163-.728-.764-.706-1.324.7-18.787 3.797-37.536 1.465-56.337-2.203-17.766-7.925-35.68-19.644-49.806-7.716-9.3-18.473-15.788-29.763-20.297-6.937-2.77-14.43-4.271-16.524-4.7-7.014-1.434-12.509-1.866-17.044-2.208z"})))};function tt(){return(tt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var et,nt,rt=function(t){return b.createElement("svg",tt({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 386 524"},t),J||(J=b.createElement("defs",null,b.createElement("linearGradient",{id:"face-outline_svg__a",x1:"50.72%",x2:"49.208%",y1:"26.23%",y2:"117.124%"},b.createElement("stop",{offset:"0%",stopColor:"#B6BFCC"}),b.createElement("stop",{offset:"100%",stopColor:"#FFF"})))),Q||(Q=b.createElement("path",{fill:"none",stroke:"url(#face-outline_svg__a)",strokeWidth:5.006,d:"M638.585 600c-.686 0-1.592-.013-2.81-.052a69.953 69.953 0 01-4.575-.296 72.809 72.809 0 01-4.533-.597 79.015 79.015 0 01-4.472-.87 85.112 85.112 0 01-4.362-1.102 91.261 91.261 0 01-4.273-1.312 101.02 101.02 0 01-4.155-1.484 114.88 114.88 0 01-4.056-1.64 125.655 125.655 0 01-7.787-3.652 147.069 147.069 0 01-7.304-3.993c-20.9-12.179-39.54-30.642-55.409-54.88-8.67-13.241-16.471-27.9-25.299-47.536-1.196-2.66-2.43-5.319-3.664-7.985-5.222-11.272-10.624-22.928-13.847-35.587-.338-1.325-.641-2.7-.943-4.093-.625-2.866-1.27-5.83-2.225-7.484-.379-.25-1.374-.71-2.115-1.054-1.373-.635-3.08-1.427-4.939-2.55-3.91-2.368-6.378-5.567-8.277-8.385-8.738-12.96-11.7-27.823-14.313-40.938-.457-2.292-.912-4.578-1.397-6.848l-.685-3.217a1892.951 1892.951 0 00-5.588-25.25c-1.25-5.49-4.567-20.075 5.26-30.824 3.985-4.36 9.824-6.86 16.017-6.86.744 0 1.487.036 2.222.105-.273-3.957-.572-7.901-.865-11.79-1.665-22.04-3.386-44.83-.563-67.858 4.469-36.439 16.293-66.575 35.149-89.569 12.744-15.54 30.924-28.155 54.037-37.494a163.732 163.732 0 0117.99-6.058c13.257-3.633 24.137-4.97 29.366-5.612 5.05-.62 10.155-1.079 15.178-1.363a292.987 292.987 0 0110.846-.205c7.276 0 14.62.278 21.829.828 7.234.551 17.14 1.306 29.746 3.915l.227.047c4.19.865 16.946 3.5 29.19 8.448 23.114 9.339 41.293 21.953 54.037 37.494 18.855 22.995 30.681 53.13 35.149 89.569 2.824 23.028 1.102 45.818-.563 67.859-.293 3.888-.591 7.832-.864 11.79a23.46 23.46 0 012.222-.105c6.193 0 12.032 2.5 16.018 6.86 9.825 10.747 6.507 25.332 5.259 30.822a1923.38 1923.38 0 00-5.588 25.246l-.685 3.22c-.484 2.27-.94 4.555-1.397 6.844-2.613 13.116-5.575 27.983-14.313 40.944-1.899 2.817-4.367 6.017-8.279 8.384-1.858 1.124-3.565 1.916-4.937 2.551-.738.344-1.727.8-2.11 1.05-.976 1.733-1.614 4.658-2.23 7.49a121.69 121.69 0 01-.943 4.09c-3.223 12.657-8.622 24.311-13.844 35.58-1.236 2.67-2.47 5.33-3.667 7.993-8.826 19.633-16.63 34.293-25.3 47.536-15.87 24.238-34.509 42.701-55.4 54.874a149.984 149.984 0 01-7.28 3.982 129.842 129.842 0 01-7.794 3.659 108.88 108.88 0 01-8.229 3.133 93.884 93.884 0 01-4.282 1.313 79.774 79.774 0 01-8.824 1.97 72.51 72.51 0 01-4.558.602 66.17 66.17 0 01-6.885.323l-1.73-.005c-.38.014-.884.027-1.584.027z",transform:"translate(-447 -79)"})))};function ot(){return(ot=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var at=function(t){return b.createElement("svg",ot({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 386 524"},t),et||(et=b.createElement("defs",null,b.createElement("linearGradient",{id:"face-outline-success_svg__a",x1:"50.72%",x2:"49.208%",y1:"26.23%",y2:"117.124%"},b.createElement("stop",{offset:"0%",stopColor:"#2FC58D"}),b.createElement("stop",{offset:"100%",stopColor:"#FFF"})))),nt||(nt=b.createElement("path",{fill:"none",stroke:"url(#face-outline-success_svg__a)",strokeWidth:5.006,d:"M638.585 600c-.686 0-1.592-.013-2.81-.052a69.953 69.953 0 01-4.575-.296 72.809 72.809 0 01-4.533-.597 79.015 79.015 0 01-4.472-.87 85.112 85.112 0 01-4.362-1.102 91.261 91.261 0 01-4.273-1.312 101.02 101.02 0 01-4.155-1.484 114.88 114.88 0 01-4.056-1.64 125.655 125.655 0 01-7.787-3.652 147.069 147.069 0 01-7.304-3.993c-20.9-12.179-39.54-30.642-55.409-54.88-8.67-13.241-16.471-27.9-25.299-47.536-1.196-2.66-2.43-5.319-3.664-7.985-5.222-11.272-10.624-22.928-13.847-35.587-.338-1.325-.641-2.7-.943-4.093-.625-2.866-1.27-5.83-2.225-7.484-.379-.25-1.374-.71-2.115-1.054-1.373-.635-3.08-1.427-4.939-2.55-3.91-2.368-6.378-5.567-8.277-8.385-8.738-12.96-11.7-27.823-14.313-40.938-.457-2.292-.912-4.578-1.397-6.848l-.685-3.217a1892.951 1892.951 0 00-5.588-25.25c-1.25-5.49-4.567-20.075 5.26-30.824 3.985-4.36 9.824-6.86 16.017-6.86.744 0 1.487.036 2.222.105-.273-3.957-.572-7.901-.865-11.79-1.665-22.04-3.386-44.83-.563-67.858 4.469-36.439 16.293-66.575 35.149-89.569 12.744-15.54 30.924-28.155 54.037-37.494a163.732 163.732 0 0117.99-6.058c13.257-3.633 24.137-4.97 29.366-5.612 5.05-.62 10.155-1.079 15.178-1.363a292.987 292.987 0 0110.846-.205c7.276 0 14.62.278 21.829.828 7.234.551 17.14 1.306 29.746 3.915l.227.047c4.19.865 16.946 3.5 29.19 8.448 23.114 9.339 41.293 21.953 54.037 37.494 18.855 22.995 30.681 53.13 35.149 89.569 2.824 23.028 1.102 45.818-.563 67.859-.293 3.888-.591 7.832-.864 11.79a23.46 23.46 0 012.222-.105c6.193 0 12.032 2.5 16.018 6.86 9.825 10.747 6.507 25.332 5.259 30.822a1923.38 1923.38 0 00-5.588 25.246l-.685 3.22c-.484 2.27-.94 4.555-1.397 6.844-2.613 13.116-5.575 27.983-14.313 40.944-1.899 2.817-4.367 6.017-8.279 8.384-1.858 1.124-3.565 1.916-4.937 2.551-.738.344-1.727.8-2.11 1.05-.976 1.733-1.614 4.658-2.23 7.49a121.69 121.69 0 01-.943 4.09c-3.223 12.657-8.622 24.311-13.844 35.58-1.236 2.67-2.47 5.33-3.667 7.993-8.826 19.633-16.63 34.293-25.3 47.536-15.87 24.238-34.509 42.701-55.4 54.874a149.984 149.984 0 01-7.28 3.982 129.842 129.842 0 01-7.794 3.659 108.88 108.88 0 01-8.229 3.133 93.884 93.884 0 01-4.282 1.313 79.774 79.774 0 01-8.824 1.97 72.51 72.51 0 01-4.558.602 66.17 66.17 0 01-6.885.323l-1.73-.005c-.38.014-.884.027-1.584.027z",transform:"translate(-447 -79)"})))};const it=t=>{let{isPortraitCamera:e,isSuccess:n}=t;const r=e?Z:$,o=n?at:rt,a=q.a[e?"portraitCamera":"landscapeCamera"];return x.a.createElement("div",{className:q.a.container},x.a.createElement(r,{className:q.a.overlay}),x.a.createElement(o,{className:G()(q.a.outline,a)}))};it.defaultProps={isSuccess:!1,isPortraitCamera:!1},it.propTypes={isSuccess:z.a.bool,isPortraitCamera:z.a.bool};var st=it,ut=n(11),ct=n.n(ut);const lt=t=>{let{message:e,isPortraitCamera:n}=t;return x.a.createElement("div",{className:G()(ct.a.container,{[ct.a.landscape]:!n})},e)};lt.defaultProps={message:"",isPortraitCamera:!1},lt.propTypes={message:z.a.element,isPortraitCamera:z.a.bool};var ft,ht,pt=lt,dt=n(12),vt=n.n(dt);function mt(){return(mt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var gt=function(t){return b.createElement("svg",mt({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"1em",height:"1em",viewBox:"0 0 28 28"},t),ft||(ft=b.createElement("defs",null,b.createElement("path",{id:"ico-chevron-right_svg__a",d:"M12.28 22.625l-1.56-1.25L16.62 14l-5.9-7.375 1.56-1.25L19.18 14z"}))),ht||(ht=b.createElement("use",{fill:"#F0F",xlinkHref:"#ico-chevron-right_svg__a",fillRule:"evenodd"})))};function yt(){return(yt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}const bt=t=>{let{children:e,...n}=t;return x.a.createElement("button",yt({className:vt.a.button,type:"button"},n),e,x.a.createElement(gt,{className:vt.a.icon}))};bt.propTypes={onClick:z.a.func.isRequired,disabled:z.a.bool,children:z.a.node};var xt=bt,wt=n(21),Et=n.n(wt);const Ct=t=>x.a.createElement("div",{className:Et.a.container},x.a.createElement(xt,t,"Take picture")),_t=t=>{let{CustomButton:e,...n}=t;const r=e||Ct;return x.a.createElement(r,n)};_t.propTypes={CustomButton:z.a.func,onClick:z.a.func.isRequired,disabled:z.a.bool};var kt=_t,Rt=n(0);function It(t,e,n){if(void 0===n&&(n=!1),t.beginPath(),e.slice(1).forEach((function(n,r){var o=n.x,a=n.y,i=e[r];t.moveTo(i.x,i.y),t.lineTo(o,a)})),n){var r=e[e.length-1],o=e[0];if(!r||!o)return;t.moveTo(r.x,r.y),t.lineTo(o.x,o.y)}t.stroke()}var St=n(1),At=function(){function t(t,e){if(!Lt(t)||!Lt(e))throw new Error("Dimensions.constructor - expected width and height to be valid numbers, instead have "+JSON.stringify({width:t,height:e}));this._width=t,this._height=e}return Object.defineProperty(t.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),t.prototype.reverse=function(){return new t(1/this.width,1/this.height)},t}();function Ot(t,e){return t instanceof Rt.a&&t.shape.length===e}function Tt(t){return Ot(t,3)}function Dt(t){return Ot(t,4)}function Nt(t){return t%2==0}function Ft(t,e){void 0===e&&(e=2);var n=Math.pow(10,e);return Math.floor(t*n)/n}function Mt(t){return t&&t.width&&t.height}function Pt(t){return t.reduce((function(t,e){return t.add(e)}),new Ut(0,0)).div(new Ut(t.length,t.length))}function Bt(t,e,n){return Array(t).fill(0).map((function(t,r){return e+r*n}))}function Lt(t){return!!t&&t!==1/0&&t!==-1/0&&!isNaN(t)||0===t}function Wt(t){return Lt(t)&&0<=t&&t<=1}var Ut=function(){function t(t,e){this._x=t,this._y=e}return Object.defineProperty(t.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),t.prototype.add=function(e){return new t(this.x+e.x,this.y+e.y)},t.prototype.sub=function(e){return new t(this.x-e.x,this.y-e.y)},t.prototype.mul=function(e){return new t(this.x*e.x,this.y*e.y)},t.prototype.div=function(e){return new t(this.x/e.x,this.y/e.y)},t.prototype.abs=function(){return new t(Math.abs(this.x),Math.abs(this.y))},t.prototype.magnitude=function(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))},t.prototype.floor=function(){return new t(Math.floor(this.x),Math.floor(this.y))},t}(),jt=function(){function t(e,n){void 0===n&&(n=!0);var r=e||{},o=[r.left,r.top,r.right,r.bottom].every(Lt),a=[r.x,r.y,r.width,r.height].every(Lt);if(!a&&!o)throw new Error("Box.constructor - expected box to be IBoundingBox | IRect, instead have "+JSON.stringify(r));var i=a?[r.x,r.y,r.width,r.height]:[r.left,r.top,r.right-r.left,r.bottom-r.top],s=i[0],u=i[1],c=i[2],l=i[3];t.assertIsValidBox({x:s,y:u,width:c,height:l},"Box.constructor",n),this._x=s,this._y=u,this._width=c,this._height=l}return t.isRect=function(t){return!!t&&[t.x,t.y,t.width,t.height].every(Lt)},t.assertIsValidBox=function(e,n,r){if(void 0===r&&(r=!1),!t.isRect(e))throw new Error(n+" - invalid box: "+JSON.stringify(e)+", expected object with properties x, y, width, height");if(!r&&(e.width<0||e.height<0))throw new Error(n+" - width ("+e.width+") and height ("+e.height+") must be positive numbers")},Object.defineProperty(t.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"left",{get:function(){return this.x},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"top",{get:function(){return this.y},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"right",{get:function(){return this.x+this.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"area",{get:function(){return this.width*this.height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topLeft",{get:function(){return new Ut(this.left,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"topRight",{get:function(){return new Ut(this.right,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bottomLeft",{get:function(){return new Ut(this.left,this.bottom)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"bottomRight",{get:function(){return new Ut(this.right,this.bottom)},enumerable:!0,configurable:!0}),t.prototype.round=function(){var e=[this.x,this.y,this.width,this.height].map((function(t){return Math.round(t)}));return new t({x:e[0],y:e[1],width:e[2],height:e[3]})},t.prototype.floor=function(){var e=[this.x,this.y,this.width,this.height].map((function(t){return Math.floor(t)}));return new t({x:e[0],y:e[1],width:e[2],height:e[3]})},t.prototype.toSquare=function(){var e=this.x,n=this.y,r=this.width,o=this.height,a=Math.abs(r-o);return r<o&&(e-=a/2,r+=a),o<r&&(n-=a/2,o+=a),new t({x:e,y:n,width:r,height:o})},t.prototype.rescale=function(e){var n=Mt(e)?e.width:e,r=Mt(e)?e.height:e;return new t({x:this.x*n,y:this.y*r,width:this.width*n,height:this.height*r})},t.prototype.pad=function(e,n){var r=[this.x-e/2,this.y-n/2,this.width+e,this.height+n];return new t({x:r[0],y:r[1],width:r[2],height:r[3]})},t.prototype.clipAtImageBorders=function(e,n){var r=this.x,o=this.y,a=this.right,i=this.bottom,s=Math.max(r,0),u=Math.max(o,0),c=a-s,l=i-u;return new t({x:s,y:u,width:Math.min(c,e-s),height:Math.min(l,n-u)}).floor()},t.prototype.shift=function(e,n){var r=this.width,o=this.height;return new t({x:this.x+e,y:this.y+n,width:r,height:o})},t.prototype.padAtBorders=function(t,e){var n=this.width+1,r=this.height+1,o=n,a=r,i=this.left,s=this.top,u=this.right,c=this.bottom;return u>e&&(o=-u+e+n,u=e),c>t&&(a=-c+t+r,c=t),i<1&&(a=2-i,i=1),s<1&&(a=2-s,s=1),{dy:1,edy:a,dx:1,edx:o,y:s,ey:c,x:i,ex:u,w:n,h:r}},t.prototype.calibrate=function(e){return new t({left:this.left+e.left*this.width,top:this.top+e.top*this.height,right:this.right+e.right*this.width,bottom:this.bottom+e.bottom*this.height}).toSquare().round()},t}(),zt=function(t){function e(e,n,r,o,a){return void 0===a&&(a=!1),t.call(this,{left:e,top:n,right:r,bottom:o},a)||this}return Object(St.c)(e,t),e}(jt),Vt=function(){function t(t,e,n,r,o){this._imageDims=new At(o.width,o.height),this._score=t,this._classScore=e,this._className=n,this._box=new jt(r).rescale(this._imageDims)}return Object.defineProperty(t.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"className",{get:function(){return this._className},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"box",{get:function(){return this._box},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageDims",{get:function(){return this._imageDims},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageWidth",{get:function(){return this.imageDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageHeight",{get:function(){return this.imageDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"relativeBox",{get:function(){return new jt(this._box).rescale(this.imageDims.reverse())},enumerable:!0,configurable:!0}),t.prototype.forSize=function(e,n){return new t(this.score,this.classScore,this.className,this.relativeBox,{width:e,height:n})},t}(),Gt=function(t){function e(e,n,r){return t.call(this,e,e,"",n,r)||this}return Object(St.c)(e,t),e.prototype.forSize=function(n,r){var o=t.prototype.forSize.call(this,n,r);return new e(o.score,o.relativeBox,o.imageDims)},e}(Vt);function Ht(t,e,n){void 0===n&&(n=!0);var r=Math.max(0,Math.min(t.right,e.right)-Math.max(t.left,e.left))*Math.max(0,Math.min(t.bottom,e.bottom)-Math.max(t.top,e.top));return n?r/(t.area+e.area-r):r/Math.min(t.area,e.area)}function qt(t,e,n,r){void 0===r&&(r=!0);for(var o=e.map((function(t,e){return{score:t,boxIndex:e}})).sort((function(t,e){return t.score-e.score})).map((function(t){return t.boxIndex})),a=[],i=function(){var e=o.pop();a.push(e);for(var i=o,s=[],u=0;u<i.length;u++){var c=i[u],l=t[e],f=t[c];s.push(Ht(l,f,r))}o=o.filter((function(t,e){return s[e]<=n}))};o.length>0;)i();return a}function Kt(t,e){return Rt.L((function(){var n=e[0],r=e[1],o=e[2],a=Rt.n(Object(St.e)(t.shape.slice(0,3),[1]),n),i=Rt.n(Object(St.e)(t.shape.slice(0,3),[1]),r),s=Rt.n(Object(St.e)(t.shape.slice(0,3),[1]),o),u=Rt.h([a,i,s],3);return Rt.F(t,u)}))}function Xt(t){return 1/(1+Math.exp(-t))}var $t=function(t){function e(e,n,r,o,a){return void 0===a&&(a=!1),t.call(this,{x:e,y:n,width:r,height:o},a)||this}return Object(St.c)(e,t),e}(jt),Yt=function(){function t(t,e,n){void 0===n&&(n=new Ut(0,0));var r=e.width,o=e.height;this._imgDims=new At(r,o),this._shift=n,this._positions=t.map((function(t){return t.mul(new Ut(r,o)).add(n)}))}return Object.defineProperty(t.prototype,"shift",{get:function(){return new Ut(this._shift.x,this._shift.y)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageWidth",{get:function(){return this._imgDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"imageHeight",{get:function(){return this._imgDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"positions",{get:function(){return this._positions},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"relativePositions",{get:function(){var t=this;return this._positions.map((function(e){return e.sub(t._shift).div(new Ut(t.imageWidth,t.imageHeight))}))},enumerable:!0,configurable:!0}),t.prototype.forSize=function(t,e){return new this.constructor(this.relativePositions,{width:t,height:e})},t.prototype.shiftBy=function(t,e){return new this.constructor(this.relativePositions,this._imgDims,new Ut(t,e))},t.prototype.shiftByPoint=function(t){return this.shiftBy(t.x,t.y)},t.prototype.align=function(t,e){if(void 0===e&&(e={}),t){var n=t instanceof Gt?t.box.floor():new jt(t);return this.shiftBy(n.x,n.y).align(null,e)}var r=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},e),o=r.useDlibAlignment,a=r.minBoxPadding;return o?this.alignDlib():this.alignMinBbox(a)},t.prototype.alignDlib=function(){var t=this.getRefPointsForAlignment(),e=t[0],n=t[1],r=t[2],o=function(t){return r.sub(t).magnitude()},a=(o(e)+o(n))/2,i=Math.floor(a/.45),s=Pt(t),u=Math.floor(Math.max(0,s.x-.5*i)),c=Math.floor(Math.max(0,s.y-.43*i));return new $t(u,c,Math.min(i,this.imageWidth+u),Math.min(i,this.imageHeight+c))},t.prototype.alignMinBbox=function(t){var e,n,r,o,a,i,s,u=(e=this.positions,n=e.map((function(t){return t.x})),r=e.map((function(t){return t.y})),o=n.reduce((function(t,e){return e<t?e:t}),1/0),a=r.reduce((function(t,e){return e<t?e:t}),1/0),i=n.reduce((function(t,e){return t<e?e:t}),0),s=r.reduce((function(t,e){return t<e?e:t}),0),new zt(o,a,i,s));return u.pad(u.width*t,u.height*t)},t.prototype.getRefPointsForAlignment=function(){throw new Error("getRefPointsForAlignment not implemented by base class")},t}(),Jt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.getRefPointsForAlignment=function(){var t=this.positions;return[t[0],t[1],Pt([t[3],t[4]])]},e}(Yt),Qt=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.getJawOutline=function(){return this.positions.slice(0,17)},e.prototype.getLeftEyeBrow=function(){return this.positions.slice(17,22)},e.prototype.getRightEyeBrow=function(){return this.positions.slice(22,27)},e.prototype.getNose=function(){return this.positions.slice(27,36)},e.prototype.getLeftEye=function(){return this.positions.slice(36,42)},e.prototype.getRightEye=function(){return this.positions.slice(42,48)},e.prototype.getMouth=function(){return this.positions.slice(48,68)},e.prototype.getRefPointsForAlignment=function(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Pt)},e}(Yt),Zt=function(){function t(t,e){this._label=t,this._distance=e}return Object.defineProperty(t.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"distance",{get:function(){return this._distance},enumerable:!0,configurable:!0}),t.prototype.toString=function(t){return void 0===t&&(t=!0),this.label+(t?" ("+Ft(this.distance)+")":"")},t}(),te=function(t){function e(e,n){var r=t.call(this,e)||this;return r._label=n,r}return Object(St.c)(e,t),e.assertIsValidLabeledBox=function(t,e){if(jt.assertIsValidBox(t,e),!Lt(t.label))throw new Error(e+" - expected property label ("+t.label+") to be a number")},Object.defineProperty(e.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),e}(jt),ee=function(){function t(t,e){if("string"!=typeof t)throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(e)||e.some((function(t){return!(t instanceof Float32Array)})))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=t,this._descriptors=e}return Object.defineProperty(t.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"descriptors",{get:function(){return this._descriptors},enumerable:!0,configurable:!0}),t.prototype.toJSON=function(){return{label:this.label,descriptors:this.descriptors.map((function(t){return Array.from(t)}))}},t.fromJSON=function(e){var n=e.descriptors.map((function(t){return new Float32Array(t)}));return new t(e.label,n)},t}();!function(t){function e(e,n,r,o){var a=t.call(this,e,n)||this;return a._score=r,a._classScore=o,a}Object(St.c)(e,t),e.assertIsValidPredictedBox=function(t,e){if(te.assertIsValidLabeledBox(t,e),!Wt(t.score)||!Wt(t.classScore))throw new Error(e+" - expected properties score ("+t.score+") and ("+t.classScore+") to be a number between [0, 1]")},Object.defineProperty(e.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0})}(te);function ne(t){return t.detection instanceof Gt}function re(t,e){var n={detection:e};return Object.assign({},t,n)}function oe(){var t=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D:CanvasRenderingContext2D,Image:HTMLImageElement,ImageData:ImageData,Video:HTMLVideoElement,createCanvasElement:function(){return document.createElement("canvas")},createImageElement:function(){return document.createElement("img")},fetch:t,readFile:function(){throw new Error("readFile - filesystem not available for browser environment")}}}var ae=n(9),ie=n(13);function se(){return"object"==typeof window&&"undefined"!=typeof document&&"undefined"!=typeof HTMLImageElement&&"undefined"!=typeof HTMLCanvasElement&&"undefined"!=typeof HTMLVideoElement&&"undefined"!=typeof ImageData&&"undefined"!=typeof CanvasRenderingContext2D}var ue,ce=n(14);function le(t){ue=t}function fe(){se()&&le(oe()),Object(ce.a)()&&le(Object(ie.a)())}var he,pe={getEnv:function(){if(!ue)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return ue},setEnv:le,initialize:fe,createBrowserEnv:oe,createFileSystem:ae.a,createNodejsEnv:ie.a,monkeyPatch:function(t){if(ue||fe(),!ue)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");var e=t.Canvas,n=void 0===e?ue.Canvas:e,r=t.Image,o=void 0===r?ue.Image:r;ue.Canvas=n,ue.Image=o,ue.createCanvasElement=t.createCanvasElement||function(){return new n},ue.createImageElement=t.createImageElement||function(){return new o},ue.ImageData=t.ImageData||ue.ImageData,ue.Video=t.Video||ue.Video,ue.fetch=t.fetch||ue.fetch,ue.readFile=t.readFile||ue.readFile},isBrowser:se,isNodejs:ce.a};function de(t){return pe.isNodejs()||"string"!=typeof t?t:document.getElementById(t)}function ve(t){var e=pe.getEnv(),n=e.Canvas;if(t instanceof e.CanvasRenderingContext2D)return t;var r=de(t);if(!(r instanceof n))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");var o=r.getContext("2d");if(!o)throw new Error("resolveContext2d - canvas 2d context is null");return o}fe(),function(t){t.TOP_LEFT="TOP_LEFT",t.TOP_RIGHT="TOP_RIGHT",t.BOTTOM_LEFT="BOTTOM_LEFT",t.BOTTOM_RIGHT="BOTTOM_RIGHT"}(he||(he={}));var me=function(t){void 0===t&&(t={});var e=t.anchorPosition,n=t.backgroundColor,r=t.fontColor,o=t.fontSize,a=t.fontStyle,i=t.padding;this.anchorPosition=e||he.TOP_LEFT,this.backgroundColor=n||"rgba(0, 0, 0, 0.5)",this.fontColor=r||"rgba(255, 255, 255, 1)",this.fontSize=o||14,this.fontStyle=a||"Georgia",this.padding=i||4},ge=function(){function t(e,n,r){void 0===r&&(r={}),this.text="string"==typeof e?[e]:e instanceof t?e.text:e,this.anchor=n,this.options=new me(r)}return t.prototype.measureWidth=function(t){var e=this.options.padding;return this.text.map((function(e){return t.measureText(e).width})).reduce((function(t,e){return t<e?e:t}),0)+2*e},t.prototype.measureHeight=function(){var t=this.options,e=t.fontSize,n=t.padding;return this.text.length*e+2*n},t.prototype.getUpperLeft=function(t,e){var n=this.options.anchorPosition,r=n===he.BOTTOM_RIGHT||n===he.TOP_RIGHT,o=n===he.BOTTOM_LEFT||n===he.BOTTOM_RIGHT,a=this.measureWidth(t),i=this.measureHeight(),s=r?this.anchor.x-a:this.anchor.x,u=o?this.anchor.y-i:this.anchor.y;if(e){var c=e.width,l=e.height;return{x:Math.max(Math.min(s,c-a),0),y:Math.max(Math.min(u,l-i),0)}}return{x:s,y:u}},t.prototype.draw=function(t){var e=de(t),n=ve(e),r=this.options,o=r.backgroundColor,a=r.fontColor,i=r.fontSize,s=r.fontStyle,u=r.padding;n.font=i+"px "+s;var c=this.measureWidth(n),l=this.measureHeight();n.fillStyle=o;var f=this.getUpperLeft(n,e);n.fillRect(f.x,f.y,c,l),n.fillStyle=a,this.text.forEach((function(t,e){var r=u+f.x,o=u+f.y+(e+1)*i;n.fillText(t,r,o)}))},t}(),ye=function(t){void 0===t&&(t={});var e=t.boxColor,n=t.lineWidth,r=t.label,o=t.drawLabelOptions;this.boxColor=e||"rgba(0, 0, 255, 1)",this.lineWidth=n||2,this.label=r;var a={anchorPosition:he.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new me(Object.assign({},a,o))},be=function(){function t(t,e){void 0===e&&(e={}),this.box=new jt(t),this.options=new ye(e)}return t.prototype.draw=function(t){var e=ve(t),n=this.options,r=n.boxColor,o=n.lineWidth,a=this.box,i=a.x,s=a.y,u=a.width,c=a.height;e.strokeStyle=r,e.lineWidth=o,e.strokeRect(i,s,u,c);var l=this.options.label;l&&new ge([l],{x:i-o/2,y:s},this.options.drawLabelOptions).draw(t)},t}();function xe(t,e){(Array.isArray(e)?e:[e]).forEach((function(e){var n=e instanceof Gt?e.score:ne(e)?e.detection.score:void 0,r=e instanceof Gt?e.box:ne(e)?e.detection.box:new jt(e),o=n?""+Ft(n):void 0;new be(r,{label:o}).draw(t)}))}function we(t){var e=pe.getEnv(),n=e.Image,r=e.Video;return t instanceof n&&t.complete||t instanceof r&&t.readyState>=3}function Ee(t){var e=pe.getEnv(),n=e.Image,r=e.Video;return t instanceof n?new At(t.naturalWidth,t.naturalHeight):t instanceof r?new At(t.videoWidth,t.videoHeight):new At(t.width,t.height)}function Ce(t){var e=t.width,n=t.height,r=(0,pe.getEnv().createCanvasElement)();return r.width=e,r.height=n,r}function _e(t,e){var n=pe.getEnv().ImageData;if(!(t instanceof n||we(t)))throw new Error("createCanvasFromMedia - media has not finished loading yet");var r=e||Ee(t),o=r.width,a=r.height,i=Ce({width:o,height:a});return t instanceof n?ve(i).putImageData(t,0,0):ve(i).drawImage(t,0,0,o,a),i}function ke(t,e){return Object(St.b)(this,void 0,void 0,(function(){var n,r,o,a,i,s;return Object(St.d)(this,(function(u){switch(u.label){case 0:return n=e||pe.getEnv().createCanvasElement(),r=t.shape.slice(Dt(t)?1:0),o=r[0],a=r[1],i=r[2],s=Rt.L((function(){return t.as3D(o,a,i).toInt()})),[4,Rt.f.toPixels(s,n)];case 1:return u.sent(),s.dispose(),[2,n]}}))}))}function Re(t){var e=pe.getEnv(),n=e.Image,r=e.Canvas,o=e.Video;return t instanceof n||t instanceof r||t instanceof o}var Ie=function(){function t(t,e){var n=this;if(void 0===e&&(e=!1),this._imageTensors=[],this._canvases=[],this._treatAsBatchInput=!1,this._inputDimensions=[],!Array.isArray(t))throw new Error("NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have "+t);this._treatAsBatchInput=e,this._batchSize=t.length,t.forEach((function(t,e){if(Tt(t))return n._imageTensors[e]=t,void(n._inputDimensions[e]=t.shape);if(Dt(t)){var r=t.shape[0];if(1!==r)throw new Error("NetInput - tf.Tensor4D with batchSize "+r+" passed, but not supported in input array");return n._imageTensors[e]=t,void(n._inputDimensions[e]=t.shape.slice(1))}var o=t instanceof pe.getEnv().Canvas?t:_e(t);n._canvases[e]=o,n._inputDimensions[e]=[o.height,o.width,3]}))}return Object.defineProperty(t.prototype,"imageTensors",{get:function(){return this._imageTensors},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"canvases",{get:function(){return this._canvases},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isBatchInput",{get:function(){return this.batchSize>1||this._treatAsBatchInput},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"batchSize",{get:function(){return this._batchSize},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputDimensions",{get:function(){return this._inputDimensions},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"reshapedInputDimensions",{get:function(){var t=this;return Bt(this.batchSize,0,1).map((function(e,n){return t.getReshapedInputDimensions(n)}))},enumerable:!0,configurable:!0}),t.prototype.getInput=function(t){return this.canvases[t]||this.imageTensors[t]},t.prototype.getInputDimensions=function(t){return this._inputDimensions[t]},t.prototype.getInputHeight=function(t){return this._inputDimensions[t][0]},t.prototype.getInputWidth=function(t){return this._inputDimensions[t][1]},t.prototype.getReshapedInputDimensions=function(t){if("number"!=typeof this.inputSize)throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");return function(t,e){var n=t.width,r=t.height,o=e/Math.max(r,n);return new At(Math.round(n*o),Math.round(r*o))}({width:this.getInputWidth(t),height:this.getInputHeight(t)},this.inputSize)},t.prototype.toBatchTensor=function(t,e){var n=this;return void 0===e&&(e=!0),this._inputSize=t,Rt.L((function(){var r=Bt(n.batchSize,0,1).map((function(r){var o=n.getInput(r);if(o instanceof Rt.a){var a=Dt(o)?o:o.expandDims();return(a=function(t,e){return void 0===e&&(e=!1),Rt.L((function(){var n=t.shape.slice(1),r=n[0],o=n[1];if(r===o)return t;var a=Math.abs(r-o),i=Math.round(a*(e?.5:1)),s=r>o?2:1,u=function(e){var n=t.shape.slice();return n[s]=e,Rt.n(n,0)},c=u(i),l=a-c.shape[s],f=[e&&l?u(l):null,t,c].filter((function(t){return!!t})).map((function(t){return t.toFloat()}));return Rt.h(f,s)}))}(a,e)).shape[1]===t&&a.shape[2]===t||(a=Rt.o.resizeBilinear(a,[t,t])),a.as3D(t,t,3)}if(o instanceof pe.getEnv().Canvas)return Rt.f.fromPixels(function(t,e,n){void 0===n&&(n=!1);var r=pe.getEnv(),o=r.Image,a=r.Canvas;if(!(t instanceof o||t instanceof a))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");var i=Ee(t),s=e/Math.max(i.height,i.width),u=s*i.width,c=s*i.height,l=Ce({width:e,height:e}),f=t instanceof a?t:_e(t),h=Math.abs(u-c)/2,p=n&&u<c?h:0,d=n&&c<u?h:0;return ve(l).drawImage(f,p,d,u,c),l}(o,t,e));throw new Error("toBatchTensor - at batchIdx "+r+", expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have "+o)}));return Rt.E(r.map((function(t){return t.toFloat()}))).as4D(n.batchSize,t,t,3)}))},t}();function Se(t){return Object(St.b)(this,void 0,void 0,(function(){var e,n,r;return Object(St.d)(this,(function(o){switch(o.label){case 0:if(t instanceof Ie)return[2,t];if(!(e=Array.isArray(t)?t:[t]).length)throw new Error("toNetInput - empty array passed as input");return n=function(e){return Array.isArray(t)?" at input index "+e+":":""},(r=e.map(de)).forEach((function(t,r){if(!Re(t)&&!Tt(t)&&!Dt(t)){if("string"==typeof e[r])throw new Error("toNetInput -"+n(r)+" string passed, but could not resolve HTMLElement for element id "+e[r]);throw new Error("toNetInput -"+n(r)+" expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id")}if(Dt(t)){var o=t.shape[0];if(1!==o)throw new Error("toNetInput -"+n(r)+" tf.Tensor4D with batchSize "+o+" passed, but not supported in input array")}})),[4,Promise.all(r.map((function(t){return Re(t)&&(e=t,new Promise((function(t,n){if(e instanceof pe.getEnv().Canvas||we(e))return t();function r(e){e.currentTarget&&(e.currentTarget.removeEventListener("load",r),e.currentTarget.removeEventListener("error",o),t(e))}function o(t){t.currentTarget&&(t.currentTarget.removeEventListener("load",r),t.currentTarget.removeEventListener("error",o),n(t))}e.addEventListener("load",r),e.addEventListener("error",o)})));var e})))];case 1:return o.sent(),[2,new Ie(r,Array.isArray(t))]}}))}))}function Ae(t,e){return Object(St.b)(this,void 0,void 0,(function(){var n,r,o,a,i,s;return Object(St.d)(this,(function(u){switch(u.label){case 0:return n=pe.getEnv().Canvas,r=t,t instanceof n?[3,5]:[4,Se(t)];case 1:if((o=u.sent()).batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");return(a=o.getInput(0))instanceof n?(i=a,[3,4]):[3,2];case 2:return[4,ke(a)];case 3:i=u.sent(),u.label=4;case 4:r=i,u.label=5;case 5:return s=ve(r),[2,e.map((function(t){return t instanceof Gt?t.forSize(r.width,r.height).box.floor():t})).map((function(t){return t.clipAtImageBorders(r.width,r.height)})).map((function(t){var e=t.x,n=t.y,r=t.width,o=t.height,a=Ce({width:r,height:o});return ve(a).putImageData(s.getImageData(e,n,r,o),0,0),a}))]}}))}))}function Oe(t,e){return Object(St.b)(this,void 0,void 0,(function(){return Object(St.d)(this,(function(n){if(!Tt(t)&&!Dt(t))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(Dt(t)&&t.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return[2,Rt.L((function(){var n=t.shape.slice(Dt(t)?1:0),r=n[0],o=n[1],a=n[2];return e.map((function(t){return t instanceof Gt?t.forSize(o,r).box:t})).map((function(t){return t.clipAtImageBorders(o,r)})).map((function(e){var n=e.x,i=e.y,s=e.width,u=e.height;return Rt.C(t.as3D(r,o,a),[i,n,0],[u,s,a])}))}))]}))}))}function Te(t,e){return Object(St.b)(this,void 0,void 0,(function(){var n;return Object(St.d)(this,(function(r){switch(r.label){case 0:return[4,(0,pe.getEnv().fetch)(t,e)];case 1:if(!((n=r.sent()).status<400))throw new Error("failed to fetch: ("+n.status+") "+n.statusText+", from url: "+n.url);return[2,n]}}))}))}function De(t){return Object(St.b)(this,void 0,void 0,(function(){return Object(St.d)(this,(function(e){switch(e.label){case 0:return[4,Te(t)];case 1:return[2,e.sent().json()]}}))}))}function Ne(t,e){var n=e+"-weights_manifest.json";if(!t)return{modelBaseUri:"",manifestUri:n};if("/"===t)return{modelBaseUri:"/",manifestUri:"/"+n};var r=t.startsWith("http://")?"http://":t.startsWith("https://")?"https://":"",o=(t=t.replace(r,"")).split("/").filter((function(t){return t})),a=t.endsWith(".json")?o[o.length-1]:n,i=r+(t.endsWith(".json")?o.slice(0,o.length-1):o).join("/");return{modelBaseUri:i=t.startsWith("/")?"/"+i:i,manifestUri:"/"===i?"/"+a:i+"/"+a}}function Fe(t,e){return Object(St.b)(this,void 0,void 0,(function(){var n,r,o,a;return Object(St.d)(this,(function(i){switch(i.label){case 0:return n=Ne(t,e),r=n.manifestUri,o=n.modelBaseUri,[4,De(r)];case 1:return a=i.sent(),[2,Rt.p.loadWeights(a,o)]}}))}))}var Me=function(){function t(t){this._name=t,this._params=void 0,this._paramMappings=[]}return Object.defineProperty(t.prototype,"params",{get:function(){return this._params},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"paramMappings",{get:function(){return this._paramMappings},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isLoaded",{get:function(){return!!this.params},enumerable:!0,configurable:!0}),t.prototype.getParamFromPath=function(t){var e=this.traversePropertyPath(t);return e.obj[e.objProp]},t.prototype.reassignParamFromPath=function(t,e){var n=this.traversePropertyPath(t),r=n.obj,o=n.objProp;r[o].dispose(),r[o]=e},t.prototype.getParamList=function(){var t=this;return this._paramMappings.map((function(e){var n=e.paramPath;return{path:n,tensor:t.getParamFromPath(n)}}))},t.prototype.getTrainableParams=function(){return this.getParamList().filter((function(t){return t.tensor instanceof Rt.b}))},t.prototype.getFrozenParams=function(){return this.getParamList().filter((function(t){return!(t.tensor instanceof Rt.b)}))},t.prototype.variable=function(){var t=this;this.getFrozenParams().forEach((function(e){var n=e.path,r=e.tensor;t.reassignParamFromPath(n,r.variable())}))},t.prototype.freeze=function(){var t=this;this.getTrainableParams().forEach((function(e){var n=e.path,r=e.tensor,o=Rt.G(r.dataSync());r.dispose(),t.reassignParamFromPath(n,o)}))},t.prototype.dispose=function(t){void 0===t&&(t=!0),this.getParamList().forEach((function(e){if(t&&e.tensor.isDisposed)throw new Error("param tensor has already been disposed for path "+e.path);e.tensor.dispose()})),this._params=void 0},t.prototype.serializeParams=function(){return new Float32Array(this.getParamList().map((function(t){var e=t.tensor;return Array.from(e.dataSync())})).reduce((function(t,e){return t.concat(e)})))},t.prototype.load=function(t){return Object(St.b)(this,void 0,void 0,(function(){return Object(St.d)(this,(function(e){switch(e.label){case 0:return t instanceof Float32Array?(this.extractWeights(t),[2]):[4,this.loadFromUri(t)];case 1:return e.sent(),[2]}}))}))},t.prototype.loadFromUri=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:if(t&&"string"!=typeof t)throw new Error(this._name+".loadFromUri - expected model uri");return[4,Fe(t,this.getDefaultModelName())];case 1:return e=n.sent(),this.loadFromWeightMap(e),[2]}}))}))},t.prototype.loadFromDisk=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e,n,r,o,a,i,s,u,c,l;return Object(St.d)(this,(function(f){switch(f.label){case 0:if(t&&"string"!=typeof t)throw new Error(this._name+".loadFromDisk - expected model file path");return e=pe.getEnv().readFile,n=Ne(t,this.getDefaultModelName()),r=n.manifestUri,o=n.modelBaseUri,a=function(t){return Promise.all(t.map((function(t){return e(t).then((function(t){return t.buffer}))})))},i=Rt.p.weightsLoaderFactory(a),c=(u=JSON).parse,[4,e(r)];case 1:return s=c.apply(u,[f.sent().toString()]),[4,i(s,o)];case 2:return l=f.sent(),this.loadFromWeightMap(l),[2]}}))}))},t.prototype.loadFromWeightMap=function(t){var e=this.extractParamsFromWeigthMap(t),n=e.paramMappings,r=e.params;this._paramMappings=n,this._params=r},t.prototype.extractWeights=function(t){var e=this.extractParams(t),n=e.paramMappings,r=e.params;this._paramMappings=n,this._params=r},t.prototype.traversePropertyPath=function(t){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");var e=t.split("/").reduce((function(e,n){if(!e.nextObj.hasOwnProperty(n))throw new Error("traversePropertyPath - object does not have property "+n+", for path "+t);return{obj:e.nextObj,objProp:n,nextObj:e.nextObj[n]}}),{nextObj:this.params}),n=e.obj,r=e.objProp;if(!(n&&r&&n[r]instanceof Rt.a))throw new Error("traversePropertyPath - parameter is not a tensor, for path "+t);return{obj:n,objProp:r}},t}();function Pe(t,e,n){return Rt.L((function(){var r=Rt.z(t,e.depthwise_filter,e.pointwise_filter,n,"same");return r=Rt.c(r,e.bias)}))}function Be(t,e,n){return void 0===n&&(n=!1),Rt.L((function(){var r=Rt.w(n?Rt.c(Rt.i(t,e.conv0.filters,[2,2],"same"),e.conv0.bias):Pe(t,e.conv0,[2,2])),o=Pe(r,e.conv1,[1,1]),a=Pe(Rt.w(Rt.c(r,o)),e.conv2,[1,1]);return Rt.w(Rt.c(r,Rt.c(o,a)))}))}function Le(t,e,n,r){return void 0===n&&(n=!1),void 0===r&&(r=!0),Rt.L((function(){var o=Rt.w(n?Rt.c(Rt.i(t,e.conv0.filters,r?[2,2]:[1,1],"same"),e.conv0.bias):Pe(t,e.conv0,r?[2,2]:[1,1])),a=Pe(o,e.conv1,[1,1]),i=Pe(Rt.w(Rt.c(o,a)),e.conv2,[1,1]),s=Pe(Rt.w(Rt.c(o,Rt.c(a,i))),e.conv3,[1,1]);return Rt.w(Rt.c(o,Rt.c(a,Rt.c(i,s))))}))}function We(t,e,n,r){return void 0===n&&(n="same"),void 0===r&&(r=!1),Rt.L((function(){var o=Rt.c(Rt.i(t,e.filters,[1,1],n),e.bias);return r?Rt.w(o):o}))}function Ue(t,e){Object.keys(t).forEach((function(n){e.some((function(t){return t.originalPath===n}))||t[n].dispose()}))}function je(t,e){return function(n,r,o,a){var i=Rt.K(t(n*r*o*o),[o,o,n,r]),s=Rt.H(t(r));return e.push({paramPath:a+"/filters"},{paramPath:a+"/bias"}),{filters:i,bias:s}}}function ze(t,e){return function(n,r,o){var a=Rt.I(t(n*r),[n,r]),i=Rt.H(t(r));return e.push({paramPath:o+"/weights"},{paramPath:o+"/bias"}),{weights:a,bias:i}}}var Ve=function(t,e,n){this.depthwise_filter=t,this.pointwise_filter=e,this.bias=n};function Ge(t,e){return function(n,r,o){var a=Rt.K(t(9*n),[3,3,n,1]),i=Rt.K(t(n*r),[1,1,n,r]),s=Rt.H(t(r));return e.push({paramPath:o+"/depthwise_filter"},{paramPath:o+"/pointwise_filter"},{paramPath:o+"/bias"}),new Ve(a,i,s)}}function He(t){return function(e){var n=t(e+"/depthwise_filter",4),r=t(e+"/pointwise_filter",4),o=t(e+"/bias",1);return new Ve(n,r,o)}}function qe(t,e){return function(n,r,o){var a=t[n];if(!Ot(a,r))throw new Error("expected weightMap["+n+"] to be a Tensor"+r+"D, instead have "+a);return e.push({originalPath:n,paramPath:o||n}),a}}function Ke(t){var e=t;return{extractWeights:function(t){var n=e.slice(0,t);return e=e.slice(t),n},getRemainingWeights:function(){return e}}}function Xe(t,e){var n=je(t,e),r=Ge(t,e);function o(t,e,o,a){return void 0===a&&(a=!1),{conv0:a?n(t,e,3,o+"/conv0"):r(t,e,o+"/conv0"),conv1:r(e,e,o+"/conv1"),conv2:r(e,e,o+"/conv2")}}return{extractDenseBlock3Params:o,extractDenseBlock4Params:function(t,e,n,a){void 0===a&&(a=!1);var i=o(t,e,n,a);return{conv0:i.conv0,conv1:i.conv1,conv2:i.conv2,conv3:r(e,e,n+"/conv3")}}}}function $e(t){return function(e){return{filters:t(e+"/filters",4),bias:t(e+"/bias",1)}}}function Ye(t,e){var n=qe(t,e),r=$e(n),o=He(n);return{extractDenseBlock3Params:function(t,e){return void 0===e&&(e=!1),{conv0:e?r(t+"/conv0"):o(t+"/conv0"),conv1:o(t+"/conv1"),conv2:o(t+"/conv2")}},extractDenseBlock4Params:function(t,e){return void 0===e&&(e=!1),{conv0:e?r(t+"/conv0"):o(t+"/conv0"),conv1:o(t+"/conv1"),conv2:o(t+"/conv2"),conv3:o(t+"/conv3")}}}}var Je=function(t){function e(){return t.call(this,"FaceFeatureExtractor")||this}return Object(St.c)(e,t),e.prototype.forwardInput=function(t){var e=this.params;if(!e)throw new Error("FaceFeatureExtractor - load model before inference");return Rt.L((function(){var n=Le(Kt(t.toBatchTensor(112,!0),[122.782,117.001,104.298]).div(Rt.y(255)),e.dense0,!0);return n=Le(n,e.dense1),n=Le(n,e.dense2),n=Le(n,e.dense3),n=Rt.d(n,[7,7],[2,2],"valid")}))},e.prototype.forward=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Se(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.getDefaultModelName=function(){return"face_feature_extractor_model"},e.prototype.extractParamsFromWeigthMap=function(t){return function(t){var e=[],n=Ye(t,e).extractDenseBlock4Params,r={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2"),dense3:n("dense3")};return Ue(t,e),{params:r,paramMappings:e}}(t)},e.prototype.extractParams=function(t){return function(t){var e=[],n=Ke(t),r=n.extractWeights,o=n.getRemainingWeights,a=Xe(r,e).extractDenseBlock4Params,i=a(3,32,"dense0",!0),s=a(32,64,"dense1"),u=a(64,128,"dense2"),c=a(128,256,"dense3");if(0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:e,params:{dense0:i,dense1:s,dense2:u,dense3:c}}}(t)},e}(Me);function Qe(t,e){return Rt.L((function(){return Rt.c(Rt.q(t,e.weights),e.bias)}))}function Ze(t){var e={},n={};return Object.keys(t).forEach((function(r){(r.startsWith("fc")?n:e)[r]=t[r]})),{featureExtractorMap:e,classifierMap:n}}var tn=function(t){function e(e,n){var r=t.call(this,e)||this;return r._faceFeatureExtractor=n,r}return Object(St.c)(e,t),Object.defineProperty(e.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),e.prototype.runNet=function(t){var e=this,n=this.params;if(!n)throw new Error(this._name+" - load model before inference");return Rt.L((function(){var r=t instanceof Ie?e.faceFeatureExtractor.forwardInput(t):t;return Qe(r.as2D(r.shape[0],-1),n.fc)}))},e.prototype.dispose=function(e){void 0===e&&(e=!0),this.faceFeatureExtractor.dispose(e),t.prototype.dispose.call(this,e)},e.prototype.loadClassifierParams=function(t){var e=this.extractClassifierParams(t),n=e.params,r=e.paramMappings;this._params=n,this._paramMappings=r},e.prototype.extractClassifierParams=function(t){return function(t,e,n){var r=[],o=Ke(t),a=o.extractWeights,i=o.getRemainingWeights,s=ze(a,r)(e,n,"fc");if(0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:r,params:{fc:s}}}(t,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())},e.prototype.extractParamsFromWeigthMap=function(t){var e=Ze(t),n=e.featureExtractorMap,r=e.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(n),function(t){var e,n=[],r=qe(t,n),o={fc:(e="fc",{weights:r(e+"/weights",2),bias:r(e+"/bias",1)})};return Ue(t,n),{params:o,paramMappings:n}}(r)},e.prototype.extractParams=function(t){var e=this.getClassifierChannelsIn(),n=this.getClassifierChannelsOut(),r=n*e+n,o=t.slice(0,t.length-r),a=t.slice(t.length-r);return this.faceFeatureExtractor.extractWeights(o),this.extractClassifierParams(a)},e}(Me),en=["neutral","happy","sad","angry","fearful","disgusted","surprised"],nn=function(){function t(t){var e=this;if(7!==t.length)throw new Error("FaceExpressions.constructor - expected probabilities.length to be 7, have: "+t.length);en.forEach((function(n,r){e[n]=t[r]}))}return t.prototype.asSortedArray=function(){var t=this;return en.map((function(e){return{expression:e,probability:t[e]}})).sort((function(t,e){return e.probability-t.probability}))},t}(),rn=function(t){function e(e){return void 0===e&&(e=new Je),t.call(this,"FaceExpressionNet",e)||this}return Object(St.c)(e,t),e.prototype.forwardInput=function(t){var e=this;return Rt.L((function(){return Rt.D(e.runNet(t))}))},e.prototype.forward=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Se(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.predictExpressions=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e,n,r,o,a=this;return Object(St.d)(this,(function(i){switch(i.label){case 0:return[4,Se(t)];case 1:return e=i.sent(),[4,this.forwardInput(e)];case 2:return n=i.sent(),[4,Promise.all(Rt.O(n).map((function(t){return Object(St.b)(a,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return[4,t.data()];case 1:return e=n.sent(),t.dispose(),[2,e]}}))}))})))];case 3:return r=i.sent(),n.dispose(),o=r.map((function(t){return new nn(t)})),[2,e.isBatchInput?o:o[0]]}}))}))},e.prototype.getDefaultModelName=function(){return"face_expression_model"},e.prototype.getClassifierChannelsIn=function(){return 256},e.prototype.getClassifierChannelsOut=function(){return 7},e}(tn);function on(t,e){var n={expressions:e};return Object.assign({},t,n)}function an(t,e,n,r){void 0===n&&(n=.1),(Array.isArray(e)?e:[e]).forEach((function(e){var o=e instanceof nn?e:e.expressions instanceof nn?e.expressions:void 0;if(!o)throw new Error("drawFaceExpressions - expected faceExpressions to be FaceExpressions | WithFaceExpressions<{}> or array thereof");var a=o.asSortedArray().filter((function(t){return t.probability>n})),i=ne(e)?e.detection.box.bottomLeft:r||new Ut(0,0);new ge(a.map((function(t){return t.expression+" ("+Ft(t.probability)+")"})),i).draw(t)}))}function sn(t){return ne(t)&&t.landmarks instanceof Yt&&t.unshiftedLandmarks instanceof Yt&&t.alignedRect instanceof Gt}function un(t,e){var n=t.detection.box,r=e.shiftBy(n.x,n.y),o=r.align(),a=t.detection.imageDims,i={landmarks:r,unshiftedLandmarks:e,alignedRect:new Gt(t.detection.score,o.rescale(a.reverse()),a)};return Object.assign({},t,i)}var cn=function(t){void 0===t&&(t={});var e=t.drawLines,n=void 0===e||e,r=t.drawPoints,o=void 0===r||r,a=t.lineWidth,i=t.lineColor,s=t.pointSize,u=t.pointColor;this.drawLines=n,this.drawPoints=o,this.lineWidth=a||1,this.pointSize=s||2,this.lineColor=i||"rgba(0, 255, 255, 1)",this.pointColor=u||"rgba(255, 0, 255, 1)"},ln=function(){function t(t,e){void 0===e&&(e={}),this.faceLandmarks=t,this.options=new cn(e)}return t.prototype.draw=function(t){var e=ve(t),n=this.options,r=n.drawLines,o=n.drawPoints,a=n.lineWidth,i=n.lineColor,s=n.pointSize,u=n.pointColor;if(r&&this.faceLandmarks instanceof Qt&&(e.strokeStyle=i,e.lineWidth=a,It(e,this.faceLandmarks.getJawOutline()),It(e,this.faceLandmarks.getLeftEyeBrow()),It(e,this.faceLandmarks.getRightEyeBrow()),It(e,this.faceLandmarks.getNose()),It(e,this.faceLandmarks.getLeftEye(),!0),It(e,this.faceLandmarks.getRightEye(),!0),It(e,this.faceLandmarks.getMouth(),!0)),o){e.strokeStyle=u,e.fillStyle=u;this.faceLandmarks.positions.forEach((function(t){e.beginPath(),e.arc(t.x,t.y,s,0,2*Math.PI),e.fill()}))}},t}();function fn(t,e){(Array.isArray(e)?e:[e]).forEach((function(e){var n=e instanceof Yt?e:sn(e)?e.landmarks:void 0;if(!n)throw new Error("drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks<WithFaceDetection<{}>> or array thereof");new ln(n).draw(t)}))}function hn(t,e){var n=[],r=Ke(t),o=r.extractWeights,a=r.getRemainingWeights,i=function(t,e){var n=je(t,e),r=Ge(t,e);return{extractConvParams:n,extractSeparableConvParams:r,extractReductionBlockParams:function(t,e,o){return{separable_conv0:r(t,e,o+"/separable_conv0"),separable_conv1:r(e,e,o+"/separable_conv1"),expansion_conv:n(t,e,1,o+"/expansion_conv")}},extractMainBlockParams:function(t,e){return{separable_conv0:r(t,t,e+"/separable_conv0"),separable_conv1:r(t,t,e+"/separable_conv1"),separable_conv2:r(t,t,e+"/separable_conv2")}}}}(o,n),s=i.extractConvParams,u=i.extractSeparableConvParams,c=i.extractReductionBlockParams,l=i.extractMainBlockParams,f={conv_in:s(3,32,3,"entry_flow/conv_in"),reduction_block_0:c(32,64,"entry_flow/reduction_block_0"),reduction_block_1:c(64,128,"entry_flow/reduction_block_1")},h={};Bt(e,0,1).forEach((function(t){h["main_block_"+t]=l(128,"middle_flow/main_block_"+t)}));var p={reduction_block:c(128,256,"exit_flow/reduction_block"),separable_conv:u(256,512,"exit_flow/separable_conv")};if(0!==a().length)throw new Error("weights remaing after extract: "+a().length);return{paramMappings:n,params:{entry_flow:f,middle_flow:h,exit_flow:p}}}function pn(t,e){var n=[],r=function(t,e){var n=qe(t,e),r=$e(n),o=He(n);return{extractConvParams:r,extractSeparableConvParams:o,extractReductionBlockParams:function(t){return{separable_conv0:o(t+"/separable_conv0"),separable_conv1:o(t+"/separable_conv1"),expansion_conv:r(t+"/expansion_conv")}},extractMainBlockParams:function(t){return{separable_conv0:o(t+"/separable_conv0"),separable_conv1:o(t+"/separable_conv1"),separable_conv2:o(t+"/separable_conv2")}}}}(t,n),o=r.extractConvParams,a=r.extractSeparableConvParams,i=r.extractReductionBlockParams,s=r.extractMainBlockParams,u={conv_in:o("entry_flow/conv_in"),reduction_block_0:i("entry_flow/reduction_block_0"),reduction_block_1:i("entry_flow/reduction_block_1")},c={};Bt(e,0,1).forEach((function(t){c["main_block_"+t]=s("middle_flow/main_block_"+t)}));var l={reduction_block:i("exit_flow/reduction_block"),separable_conv:a("exit_flow/separable_conv")};return Ue(t,n),{params:{entry_flow:u,middle_flow:c,exit_flow:l},paramMappings:n}}function dn(t,e,n){return Rt.c(Rt.i(t,e.filters,n,"same"),e.bias)}function vn(t,e,n){void 0===n&&(n=!0);var r=n?Rt.w(t):t;return r=Pe(r,e.separable_conv0,[1,1]),r=Pe(Rt.w(r),e.separable_conv1,[1,1]),r=Rt.s(r,[3,3],[2,2],"same"),r=Rt.c(r,dn(t,e.expansion_conv,[2,2]))}var mn,gn=function(t){function e(e){var n=t.call(this,"TinyXception")||this;return n._numMainBlocks=e,n}return Object(St.c)(e,t),e.prototype.forwardInput=function(t){var e=this,n=this.params;if(!n)throw new Error("TinyXception - load model before inference");return Rt.L((function(){var r=Kt(t.toBatchTensor(112,!0),[122.782,117.001,104.298]).div(Rt.y(256)),o=Rt.w(dn(r,n.entry_flow.conv_in,[2,2]));return o=vn(o,n.entry_flow.reduction_block_0,!1),o=vn(o,n.entry_flow.reduction_block_1),Bt(e._numMainBlocks,0,1).forEach((function(t){o=function(t,e){var n=Pe(Rt.w(t),e.separable_conv0,[1,1]);return n=Pe(Rt.w(n),e.separable_conv1,[1,1]),n=Pe(Rt.w(n),e.separable_conv2,[1,1]),n=Rt.c(n,t)}(o,n.middle_flow["main_block_"+t])})),o=vn(o,n.exit_flow.reduction_block),o=Rt.w(Pe(o,n.exit_flow.separable_conv,[1,1]))}))},e.prototype.forward=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Se(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.getDefaultModelName=function(){return"tiny_xception_model"},e.prototype.extractParamsFromWeigthMap=function(t){return pn(t,this._numMainBlocks)},e.prototype.extractParams=function(t){return hn(t,this._numMainBlocks)},e}(Me);!function(t){t.FEMALE="female",t.MALE="male"}(mn||(mn={}));var yn=function(t){function e(e){void 0===e&&(e=new gn(2));var n=t.call(this,"AgeGenderNet")||this;return n._faceFeatureExtractor=e,n}return Object(St.c)(e,t),Object.defineProperty(e.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),e.prototype.runNet=function(t){var e=this,n=this.params;if(!n)throw new Error(this._name+" - load model before inference");return Rt.L((function(){var r=t instanceof Ie?e.faceFeatureExtractor.forwardInput(t):t,o=Rt.d(r,[7,7],[2,2],"valid").as2D(r.shape[0],-1);return{age:Qe(o,n.fc.age).as1D(),gender:Qe(o,n.fc.gender)}}))},e.prototype.forwardInput=function(t){var e=this;return Rt.L((function(){var n=e.runNet(t),r=n.age,o=n.gender;return{age:r,gender:Rt.D(o)}}))},e.prototype.forward=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Se(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.predictAgeAndGender=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e,n,r,o,a,i,s=this;return Object(St.d)(this,(function(u){switch(u.label){case 0:return[4,Se(t)];case 1:return e=u.sent(),[4,this.forwardInput(e)];case 2:return n=u.sent(),r=Rt.O(n.age),o=Rt.O(n.gender),a=r.map((function(t,e){return{ageTensor:t,genderTensor:o[e]}})),[4,Promise.all(a.map((function(t){var e=t.ageTensor,n=t.genderTensor;return Object(St.b)(s,void 0,void 0,(function(){var t,r,o,a,i;return Object(St.d)(this,(function(s){switch(s.label){case 0:return[4,e.data()];case 1:return t=s.sent()[0],[4,n.data()];case 2:return r=s.sent()[0],a=(o=r>.5)?mn.MALE:mn.FEMALE,i=o?r:1-r,e.dispose(),n.dispose(),[2,{age:t,gender:a,genderProbability:i}]}}))}))})))];case 3:return i=u.sent(),n.age.dispose(),n.gender.dispose(),[2,e.isBatchInput?i:i[0]]}}))}))},e.prototype.getDefaultModelName=function(){return"age_gender_model"},e.prototype.dispose=function(e){void 0===e&&(e=!0),this.faceFeatureExtractor.dispose(e),t.prototype.dispose.call(this,e)},e.prototype.loadClassifierParams=function(t){var e=this.extractClassifierParams(t),n=e.params,r=e.paramMappings;this._params=n,this._paramMappings=r},e.prototype.extractClassifierParams=function(t){return function(t){var e=[],n=Ke(t),r=n.extractWeights,o=n.getRemainingWeights,a=ze(r,e),i=a(512,1,"fc/age"),s=a(512,2,"fc/gender");if(0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:e,params:{fc:{age:i,gender:s}}}}(t)},e.prototype.extractParamsFromWeigthMap=function(t){var e=Ze(t),n=e.featureExtractorMap,r=e.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(n),function(t){var e=[],n=qe(t,e);function r(t){return{weights:n(t+"/weights",2),bias:n(t+"/bias",1)}}var o={fc:{age:r("fc/age"),gender:r("fc/gender")}};return Ue(t,e),{params:o,paramMappings:e}}(r)},e.prototype.extractParams=function(t){var e=t.slice(0,t.length-1539),n=t.slice(t.length-1539);return this.faceFeatureExtractor.extractWeights(e),this.extractClassifierParams(n)},e}(Me),bn=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.postProcess=function(t,e,n){var r=n.map((function(t){var n=t.width,r=t.height,o=e/Math.max(r,n);return{width:n*o,height:r*o}})),o=r.length;return Rt.L((function(){var n=function(t,e){return Rt.E([Rt.n([68],t),Rt.n([68],e)],1).as2D(1,136).as1D()},a=function(t,e){var n=r[t],o=n.width,a=n.height;return e(o,a)?Math.abs(o-a)/2:0};return t.mul(Rt.n([o,136],e)).sub(Rt.E(Array.from(Array(o),(function(t,e){return n(function(t){return a(t,(function(t,e){return t<e}))}(e),function(t){return a(t,(function(t,e){return e<t}))}(e))})))).div(Rt.E(Array.from(Array(o),(function(t,e){return n(r[e].width,r[e].height)}))))}))},e.prototype.forwardInput=function(t){var e=this;return Rt.L((function(){var n=e.runNet(t);return e.postProcess(n,t.inputSize,t.inputDimensions.map((function(t){return{height:t[0],width:t[1]}})))}))},e.prototype.forward=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Se(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.detectLandmarks=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e,n,r,o=this;return Object(St.d)(this,(function(a){switch(a.label){case 0:return[4,Se(t)];case 1:return e=a.sent(),n=Rt.L((function(){return Rt.O(o.forwardInput(e))})),[4,Promise.all(n.map((function(t,n){return Object(St.b)(o,void 0,void 0,(function(){var r,o,a,i,s;return Object(St.d)(this,(function(u){switch(u.label){case 0:return a=(o=Array).from,[4,t.data()];case 1:return r=a.apply(o,[u.sent()]),i=r.filter((function(t,e){return Nt(e)})),s=r.filter((function(t,e){return!Nt(e)})),[2,new Qt(Array(68).fill(0).map((function(t,e){return new Ut(i[e],s[e])})),{height:e.getInputHeight(n),width:e.getInputWidth(n)})]}}))}))})))];case 2:return r=a.sent(),n.forEach((function(t){return t.dispose()})),[2,e.isBatchInput?r:r[0]]}}))}))},e.prototype.getClassifierChannelsOut=function(){return 136},e}(tn),xn=function(t){function e(e){return void 0===e&&(e=new Je),t.call(this,"FaceLandmark68Net",e)||this}return Object(St.c)(e,t),e.prototype.getDefaultModelName=function(){return"face_landmark_68_model"},e.prototype.getClassifierChannelsIn=function(){return 256},e}(bn);var wn=function(t){function e(){return t.call(this,"TinyFaceFeatureExtractor")||this}return Object(St.c)(e,t),e.prototype.forwardInput=function(t){var e=this.params;if(!e)throw new Error("TinyFaceFeatureExtractor - load model before inference");return Rt.L((function(){var n=Be(Kt(t.toBatchTensor(112,!0),[122.782,117.001,104.298]).div(Rt.y(255)),e.dense0,!0);return n=Be(n,e.dense1),n=Be(n,e.dense2),n=Rt.d(n,[14,14],[2,2],"valid")}))},e.prototype.forward=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Se(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.getDefaultModelName=function(){return"face_feature_extractor_tiny_model"},e.prototype.extractParamsFromWeigthMap=function(t){return function(t){var e=[],n=Ye(t,e).extractDenseBlock3Params,r={dense0:n("dense0",!0),dense1:n("dense1"),dense2:n("dense2")};return Ue(t,e),{params:r,paramMappings:e}}(t)},e.prototype.extractParams=function(t){return function(t){var e=[],n=Ke(t),r=n.extractWeights,o=n.getRemainingWeights,a=Xe(r,e).extractDenseBlock3Params,i=a(3,32,"dense0",!0),s=a(32,64,"dense1"),u=a(64,128,"dense2");if(0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:e,params:{dense0:i,dense1:s,dense2:u}}}(t)},e}(Me),En=function(t){function e(e){return void 0===e&&(e=new wn),t.call(this,"FaceLandmark68TinyNet",e)||this}return Object(St.c)(e,t),e.prototype.getDefaultModelName=function(){return"face_landmark_68_tiny_model"},e.prototype.getClassifierChannelsIn=function(){return 128},e}(bn);!function(t){function e(){return null!==t&&t.apply(this,arguments)||this}Object(St.c)(e,t)}(xn);function Cn(t,e,n,r,o){void 0===o&&(o="same");var a=e.conv,i=a.filters,s=a.bias,u=Rt.i(t,i,n,o);return u=function(t,e){return Rt.c(Rt.t(t,e.weights),e.biases)}(u=Rt.c(u,s),e.scale),r?Rt.w(u):u}function _n(t,e){return Cn(t,e,[1,1],!1)}function kn(t,e){return Cn(t,e,[2,2],!0,"valid")}function Rn(t,e){function n(n,r,o,a){var i=function(e,n,r){var o=t(e),a=o.length/(n*r*r);if(a%1!=0)throw new Error("depth has to be an integer: "+a+", weights.length: "+o.length+", numFilters: "+n+", filterSize: "+r);return Rt.L((function(){return Rt.N(Rt.K(o,[n,a,r,r]),[2,3,1,0])}))}(n,r,o),s=Rt.H(t(r));return e.push({paramPath:a+"/filters"},{paramPath:a+"/bias"}),{filters:i,bias:s}}function r(r,o,a,i){return{conv:n(r,o,a,i+"/conv"),scale:function(n,r){var o=Rt.H(t(n)),a=Rt.H(t(n));return e.push({paramPath:r+"/weights"},{paramPath:r+"/biases"}),{weights:o,biases:a}}(o,i+"/scale")}}return{extractConvLayerParams:r,extractResidualLayerParams:function(t,e,n,o,a){return void 0===a&&(a=!1),{conv1:r((a?.5:1)*t,e,n,o+"/conv1"),conv2:r(t,e,n,o+"/conv2")}}}}function In(t,e){var n=qe(t,e);function r(t){return{conv:{filters:n(t+"/conv/filters",4),bias:n(t+"/conv/bias",1)},scale:function(t){return{weights:n(t+"/scale/weights",1),biases:n(t+"/scale/biases",1)}}(t)}}return{extractConvLayerParams:r,extractResidualLayerParams:function(t){return{conv1:r(t+"/conv1"),conv2:r(t+"/conv2")}}}}function Sn(t){var e=[],n=In(t,e),r=n.extractConvLayerParams,o=n.extractResidualLayerParams,a=r("conv32_down"),i=o("conv32_1"),s=o("conv32_2"),u=o("conv32_3"),c=o("conv64_down"),l=o("conv64_1"),f=o("conv64_2"),h=o("conv64_3"),p=o("conv128_down"),d=o("conv128_1"),v=o("conv128_2"),m=o("conv256_down"),g=o("conv256_1"),y=o("conv256_2"),b=o("conv256_down_out"),x=t.fc;if(e.push({originalPath:"fc",paramPath:"fc"}),!Ot(x,2))throw new Error("expected weightMap[fc] to be a Tensor2D, instead have "+x);var w={conv32_down:a,conv32_1:i,conv32_2:s,conv32_3:u,conv64_down:c,conv64_1:l,conv64_2:f,conv64_3:h,conv128_down:p,conv128_1:d,conv128_2:v,conv256_down:m,conv256_1:g,conv256_2:y,conv256_down_out:b,fc:x};return Ue(t,e),{params:w,paramMappings:e}}function An(t,e){var n=function(t,e){return Cn(t,e,[1,1],!0)}(t,e.conv1);return n=_n(n,e.conv2),n=Rt.c(n,t),n=Rt.w(n)}function On(t,e){var n=kn(t,e.conv1);n=_n(n,e.conv2);var r=Rt.d(t,2,2,"valid"),o=Rt.P(r.shape),a=r.shape[3]!==n.shape[3];if(r.shape[1]!==n.shape[1]||r.shape[2]!==n.shape[2]){var i=Object(St.e)(n.shape);i[1]=1;var s=Rt.P(i);n=Rt.h([n,s],1);var u=Object(St.e)(n.shape);u[2]=1;var c=Rt.P(u);n=Rt.h([n,c],2)}return r=a?Rt.h([r,o],3):r,n=Rt.c(r,n),n=Rt.w(n)}var Tn=function(t){function e(){return t.call(this,"FaceRecognitionNet")||this}return Object(St.c)(e,t),e.prototype.forwardInput=function(t){var e=this.params;if(!e)throw new Error("FaceRecognitionNet - load model before inference");return Rt.L((function(){var n=kn(Kt(t.toBatchTensor(150,!0).toFloat(),[122.782,117.001,104.298]).div(Rt.y(256)),e.conv32_down);n=An(n=Rt.s(n,3,2,"valid"),e.conv32_1),n=An(n,e.conv32_2),n=An(n,e.conv32_3),n=An(n=On(n,e.conv64_down),e.conv64_1),n=An(n,e.conv64_2),n=An(n,e.conv64_3),n=An(n=On(n,e.conv128_down),e.conv128_1),n=An(n,e.conv128_2),n=An(n=On(n,e.conv256_down),e.conv256_1);var r=(n=On(n=An(n,e.conv256_2),e.conv256_down_out)).mean([1,2]);return Rt.q(r,e.fc)}))},e.prototype.forward=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Se(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.computeFaceDescriptor=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e,n,r,o=this;return Object(St.d)(this,(function(a){switch(a.label){case 0:return[4,Se(t)];case 1:return e=a.sent(),n=Rt.L((function(){return Rt.O(o.forwardInput(e))})),[4,Promise.all(n.map((function(t){return t.data()})))];case 2:return r=a.sent(),n.forEach((function(t){return t.dispose()})),[2,e.isBatchInput?r:r[0]]}}))}))},e.prototype.getDefaultModelName=function(){return"face_recognition_model"},e.prototype.extractParamsFromWeigthMap=function(t){return Sn(t)},e.prototype.extractParams=function(t){return function(t){var e=Ke(t),n=e.extractWeights,r=e.getRemainingWeights,o=[],a=Rn(n,o),i=a.extractConvLayerParams,s=a.extractResidualLayerParams,u=i(4704,32,7,"conv32_down"),c=s(9216,32,3,"conv32_1"),l=s(9216,32,3,"conv32_2"),f=s(9216,32,3,"conv32_3"),h=s(36864,64,3,"conv64_down",!0),p=s(36864,64,3,"conv64_1"),d=s(36864,64,3,"conv64_2"),v=s(36864,64,3,"conv64_3"),m=s(147456,128,3,"conv128_down",!0),g=s(147456,128,3,"conv128_1"),y=s(147456,128,3,"conv128_2"),b=s(589824,256,3,"conv256_down",!0),x=s(589824,256,3,"conv256_1"),w=s(589824,256,3,"conv256_2"),E=s(589824,256,3,"conv256_down_out"),C=Rt.L((function(){return Rt.N(Rt.I(n(32768),[128,256]),[1,0])}));if(o.push({paramPath:"fc"}),0!==r().length)throw new Error("weights remaing after extract: "+r().length);return{params:{conv32_down:u,conv32_1:c,conv32_2:l,conv32_3:f,conv64_down:h,conv64_1:p,conv64_2:d,conv64_3:v,conv128_down:m,conv128_1:g,conv128_2:y,conv256_down:b,conv256_1:x,conv256_2:w,conv256_down_out:E,fc:C},paramMappings:o}}(t)},e}(Me);function Dn(t,e){var n={descriptor:e};return Object.assign({},t,n)}function Nn(t,e){var n={age:e};return Object.assign({},t,n)}function Fn(t,e,n){var r={gender:e,genderProbability:n};return Object.assign({},t,r)}var Mn=function(){function t(t){var e=void 0===t?{}:t,n=e.minFaceSize,r=e.scaleFactor,o=e.maxNumScales,a=e.scoreThresholds,i=e.scaleSteps;if(this._name="MtcnnOptions",this._minFaceSize=n||20,this._scaleFactor=r||.709,this._maxNumScales=o||10,this._scoreThresholds=a||[.6,.7,.7],this._scaleSteps=i,"number"!=typeof this._minFaceSize||this._minFaceSize<0)throw new Error(this._name+" - expected minFaceSize to be a number > 0");if("number"!=typeof this._scaleFactor||this._scaleFactor<=0||this._scaleFactor>=1)throw new Error(this._name+" - expected scaleFactor to be a number between 0 and 1");if("number"!=typeof this._maxNumScales||this._maxNumScales<0)throw new Error(this._name+" - expected maxNumScales to be a number > 0");if(!Array.isArray(this._scoreThresholds)||3!==this._scoreThresholds.length||this._scoreThresholds.some((function(t){return"number"!=typeof t})))throw new Error(this._name+" - expected scoreThresholds to be an array of numbers of length 3");if(this._scaleSteps&&(!Array.isArray(this._scaleSteps)||this._scaleSteps.some((function(t){return"number"!=typeof t}))))throw new Error(this._name+" - expected scaleSteps to be an array of numbers")}return Object.defineProperty(t.prototype,"minFaceSize",{get:function(){return this._minFaceSize},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scaleFactor",{get:function(){return this._scaleFactor},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxNumScales",{get:function(){return this._maxNumScales},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scoreThresholds",{get:function(){return this._scoreThresholds},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scaleSteps",{get:function(){return this._scaleSteps},enumerable:!0,configurable:!0}),t}();function Pn(t,e){function n(n,r,o,a,i){var s=Rt.K(t(n*r*o*o),[o,o,n,r]),u=Rt.H(t(r));return e.push({paramPath:a+"/filters"},{paramPath:a+"/"+(i?"batch_norm_offset":"bias")}),{filters:s,bias:u}}function r(t,e,r,o){var a=n(t,e,r,o,!0);return{filters:a.filters,batch_norm_offset:a.bias}}function o(n,o,a){return{depthwise_conv:function(n,r){var o=Rt.K(t(9*n),[3,3,n,1]),a=Rt.H(t(n)),i=Rt.H(t(n)),s=Rt.H(t(n)),u=Rt.H(t(n));return e.push({paramPath:r+"/filters"},{paramPath:r+"/batch_norm_scale"},{paramPath:r+"/batch_norm_offset"},{paramPath:r+"/batch_norm_mean"},{paramPath:r+"/batch_norm_variance"}),{filters:o,batch_norm_scale:a,batch_norm_offset:i,batch_norm_mean:s,batch_norm_variance:u}}(n,a+"/depthwise_conv"),pointwise_conv:r(n,o,1,a+"/pointwise_conv")}}return{extractMobilenetV1Params:function(){return{conv_0:r(3,32,3,"mobilenetv1/conv_0"),conv_1:o(32,64,"mobilenetv1/conv_1"),conv_2:o(64,128,"mobilenetv1/conv_2"),conv_3:o(128,128,"mobilenetv1/conv_3"),conv_4:o(128,256,"mobilenetv1/conv_4"),conv_5:o(256,256,"mobilenetv1/conv_5"),conv_6:o(256,512,"mobilenetv1/conv_6"),conv_7:o(512,512,"mobilenetv1/conv_7"),conv_8:o(512,512,"mobilenetv1/conv_8"),conv_9:o(512,512,"mobilenetv1/conv_9"),conv_10:o(512,512,"mobilenetv1/conv_10"),conv_11:o(512,512,"mobilenetv1/conv_11"),conv_12:o(512,1024,"mobilenetv1/conv_12"),conv_13:o(1024,1024,"mobilenetv1/conv_13")}},extractPredictionLayerParams:function(){return{conv_0:r(1024,256,1,"prediction_layer/conv_0"),conv_1:r(256,512,3,"prediction_layer/conv_1"),conv_2:r(512,128,1,"prediction_layer/conv_2"),conv_3:r(128,256,3,"prediction_layer/conv_3"),conv_4:r(256,128,1,"prediction_layer/conv_4"),conv_5:r(128,256,3,"prediction_layer/conv_5"),conv_6:r(256,64,1,"prediction_layer/conv_6"),conv_7:r(64,128,3,"prediction_layer/conv_7"),box_predictor_0:{box_encoding_predictor:n(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),class_predictor:n(512,9,1,"prediction_layer/box_predictor_0/class_predictor")},box_predictor_1:{box_encoding_predictor:n(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),class_predictor:n(1024,18,1,"prediction_layer/box_predictor_1/class_predictor")},box_predictor_2:{box_encoding_predictor:n(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),class_predictor:n(512,18,1,"prediction_layer/box_predictor_2/class_predictor")},box_predictor_3:{box_encoding_predictor:n(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),class_predictor:n(256,18,1,"prediction_layer/box_predictor_3/class_predictor")},box_predictor_4:{box_encoding_predictor:n(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),class_predictor:n(256,18,1,"prediction_layer/box_predictor_4/class_predictor")},box_predictor_5:{box_encoding_predictor:n(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),class_predictor:n(128,18,1,"prediction_layer/box_predictor_5/class_predictor")}}}}}function Bn(t){var e=[],n=function(t,e){var n=qe(t,e);function r(t,e,r){return{filters:n(t+"/Conv2d_"+e+"_pointwise/weights",4,r+"/filters"),batch_norm_offset:n(t+"/Conv2d_"+e+"_pointwise/convolution_bn_offset",1,r+"/batch_norm_offset")}}function o(t){var e="mobilenetv1/conv_"+t,o="MobilenetV1/Conv2d_"+t+"_depthwise",a=e+"/depthwise_conv",i=e+"/pointwise_conv";return{depthwise_conv:{filters:n(o+"/depthwise_weights",4,a+"/filters"),batch_norm_scale:n(o+"/BatchNorm/gamma",1,a+"/batch_norm_scale"),batch_norm_offset:n(o+"/BatchNorm/beta",1,a+"/batch_norm_offset"),batch_norm_mean:n(o+"/BatchNorm/moving_mean",1,a+"/batch_norm_mean"),batch_norm_variance:n(o+"/BatchNorm/moving_variance",1,a+"/batch_norm_variance")},pointwise_conv:r("MobilenetV1",t,i)}}function a(t,e){return{filters:n(t+"/weights",4,e+"/filters"),bias:n(t+"/biases",1,e+"/bias")}}function i(t){return{box_encoding_predictor:a("Prediction/BoxPredictor_"+t+"/BoxEncodingPredictor","prediction_layer/box_predictor_"+t+"/box_encoding_predictor"),class_predictor:a("Prediction/BoxPredictor_"+t+"/ClassPredictor","prediction_layer/box_predictor_"+t+"/class_predictor")}}return{extractMobilenetV1Params:function(){return{conv_0:r("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:o(1),conv_2:o(2),conv_3:o(3),conv_4:o(4),conv_5:o(5),conv_6:o(6),conv_7:o(7),conv_8:o(8),conv_9:o(9),conv_10:o(10),conv_11:o(11),conv_12:o(12),conv_13:o(13)}},extractPredictionLayerParams:function(){return{conv_0:r("Prediction",0,"prediction_layer/conv_0"),conv_1:r("Prediction",1,"prediction_layer/conv_1"),conv_2:r("Prediction",2,"prediction_layer/conv_2"),conv_3:r("Prediction",3,"prediction_layer/conv_3"),conv_4:r("Prediction",4,"prediction_layer/conv_4"),conv_5:r("Prediction",5,"prediction_layer/conv_5"),conv_6:r("Prediction",6,"prediction_layer/conv_6"),conv_7:r("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:i(0),box_predictor_1:i(1),box_predictor_2:i(2),box_predictor_3:i(3),box_predictor_4:i(4),box_predictor_5:i(5)}}}}(t,e),r=n.extractMobilenetV1Params,o=n.extractPredictionLayerParams,a=t["Output/extra_dim"];if(e.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!Tt(a))throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have "+a);var i={mobilenetv1:r(),prediction_layer:o(),output_layer:{extra_dim:a}};return Ue(t,e),{params:i,paramMappings:e}}function Ln(t,e,n){return Rt.L((function(){var r=Rt.i(t,e.filters,n,"same");return r=Rt.c(r,e.batch_norm_offset),Rt.g(r,0,6)}))}function Wn(t,e){return Rt.L((function(){var n=null,r=Ln(t,e.conv_0,[2,2]);if([e.conv_1,e.conv_2,e.conv_3,e.conv_4,e.conv_5,e.conv_6,e.conv_7,e.conv_8,e.conv_9,e.conv_10,e.conv_11,e.conv_12,e.conv_13].forEach((function(t,e){var o=e+1,a=function(t){return[2,4,6,12].some((function(e){return e===t}))?[2,2]:[1,1]}(o);r=Ln(r=function(t,e,n){return Rt.L((function(){var r=Rt.j(t,e.filters,n,"same");return r=Rt.e(r,e.batch_norm_mean,e.batch_norm_variance,e.batch_norm_offset,e.batch_norm_scale,.0010000000474974513),Rt.g(r,0,6)}))}(r,t.depthwise_conv,a),t.pointwise_conv,[1,1]),11===o&&(n=r)})),null===n)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:r,conv11:n}}))}function Un(t,e,n){var r=t.arraySync(),o=Math.min(r[e][0],r[e][2]),a=Math.min(r[e][1],r[e][3]),i=Math.max(r[e][0],r[e][2]),s=Math.max(r[e][1],r[e][3]),u=Math.min(r[n][0],r[n][2]),c=Math.min(r[n][1],r[n][3]),l=Math.max(r[n][0],r[n][2]),f=Math.max(r[n][1],r[n][3]),h=(i-o)*(s-a),p=(l-u)*(f-c);if(h<=0||p<=0)return 0;var d=Math.max(o,u),v=Math.max(a,c),m=Math.min(i,l),g=Math.min(s,f),y=Math.max(m-d,0)*Math.max(g-v,0);return y/(h+p-y)}function jn(t,e){var n=function(t){var e=Rt.O(Rt.N(t,[1,0])),n=[Rt.F(e[2],e[0]),Rt.F(e[3],e[1])];return{sizes:n,centers:[Rt.c(e[0],Rt.k(n[0],Rt.y(2))),Rt.c(e[1],Rt.k(n[1],Rt.y(2)))]}}(t),r=n.sizes,o=n.centers,a=Rt.O(Rt.N(e,[1,0])),i=Rt.k(Rt.t(Rt.l(Rt.k(a[2],Rt.y(5))),r[0]),Rt.y(2)),s=Rt.c(Rt.t(Rt.k(a[0],Rt.y(10)),r[0]),o[0]),u=Rt.k(Rt.t(Rt.l(Rt.k(a[3],Rt.y(5))),r[1]),Rt.y(2)),c=Rt.c(Rt.t(Rt.k(a[1],Rt.y(10)),r[1]),o[1]);return Rt.N(Rt.E([Rt.F(s,i),Rt.F(c,u),Rt.c(s,i),Rt.c(c,u)]),[1,0])}function zn(t,e){return Rt.L((function(){var n=t.shape[0];return{boxPredictionEncoding:Rt.x(We(t,e.box_encoding_predictor),[n,-1,1,4]),classPrediction:Rt.x(We(t,e.class_predictor),[n,-1,3])}}))}var Vn=function(){function t(t){var e=void 0===t?{}:t,n=e.minConfidence,r=e.maxResults;if(this._name="SsdMobilenetv1Options",this._minConfidence=n||.5,this._maxResults=r||100,"number"!=typeof this._minConfidence||this._minConfidence<=0||this._minConfidence>=1)throw new Error(this._name+" - expected minConfidence to be a number between 0 and 1");if("number"!=typeof this._maxResults)throw new Error(this._name+" - expected maxResults to be a number")}return Object.defineProperty(t.prototype,"minConfidence",{get:function(){return this._minConfidence},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"maxResults",{get:function(){return this._maxResults},enumerable:!0,configurable:!0}),t}(),Gn=function(t){function e(){return t.call(this,"SsdMobilenetv1")||this}return Object(St.c)(e,t),e.prototype.forwardInput=function(t){var e=this.params;if(!e)throw new Error("SsdMobilenetv1 - load model before inference");return Rt.L((function(){var n=t.toBatchTensor(512,!1).toFloat(),r=Wn(Rt.F(Rt.t(n,Rt.y(.007843137718737125)),Rt.y(1)),e.mobilenetv1),o=function(t,e,n){return Rt.L((function(){var r=Ln(t,n.conv_0,[1,1]),o=Ln(r,n.conv_1,[2,2]),a=Ln(o,n.conv_2,[1,1]),i=Ln(a,n.conv_3,[2,2]),s=Ln(i,n.conv_4,[1,1]),u=Ln(s,n.conv_5,[2,2]),c=Ln(u,n.conv_6,[1,1]),l=Ln(c,n.conv_7,[2,2]),f=zn(e,n.box_predictor_0),h=zn(t,n.box_predictor_1),p=zn(o,n.box_predictor_2),d=zn(i,n.box_predictor_3),v=zn(u,n.box_predictor_4),m=zn(l,n.box_predictor_5);return{boxPredictions:Rt.h([f.boxPredictionEncoding,h.boxPredictionEncoding,p.boxPredictionEncoding,d.boxPredictionEncoding,v.boxPredictionEncoding,m.boxPredictionEncoding],1),classPredictions:Rt.h([f.classPrediction,h.classPrediction,p.classPrediction,d.classPrediction,v.classPrediction,m.classPrediction],1)}}))}(r.out,r.conv11,e.prediction_layer);return function(t,e,n){return Rt.L((function(){var r=t.shape[0],o=jn(Rt.x(Rt.M(n.extra_dim,[r,1,1]),[-1,4]),Rt.x(t,[-1,4]));o=Rt.x(o,[r,o.shape[0]/r,4]);var a=Rt.A(Rt.B(e,[0,0,1],[-1,-1,-1])),i=Rt.B(a,[0,0,0],[-1,-1,1]);return i=Rt.x(i,[r,i.shape[1]]),{boxes:Rt.O(o),scores:Rt.O(i)}}))}(o.boxPredictions,o.classPredictions,e.output_layer)}))},e.prototype.forward=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return e=this.forwardInput,[4,Se(t)];case 1:return[2,e.apply(this,[n.sent()])]}}))}))},e.prototype.locateFaces=function(t,e){return void 0===e&&(e={}),Object(St.b)(this,void 0,void 0,(function(){var n,r,o,a,i,s,u,c,l,f,h,p,d,v,m,g,y,b,x,w;return Object(St.d)(this,(function(E){switch(E.label){case 0:return n=new Vn(e),r=n.maxResults,o=n.minConfidence,[4,Se(t)];case 1:for(a=E.sent(),i=this.forwardInput(a),s=i.boxes,u=i.scores,c=s[0],l=u[0],f=1;f<s.length;f++)s[f].dispose(),u[f].dispose();return d=(p=Array).from,[4,l.data()];case 2:return h=d.apply(p,[E.sent()]),.5,v=function(t,e,n,r,o){var a=t.shape[0],i=Math.min(n,a),s=e.map((function(t,e){return{score:t,boxIndex:e}})).filter((function(t){return t.score>o})).sort((function(t,e){return e.score-t.score})),u=[];return s.forEach((function(e){if(!(u.length>=i)){for(var n=e.score,a=u.length-1;a>=0;--a){var s=Un(t,e.boxIndex,u[a]);if(0!==s&&(e.score*=s<=r?1:0,e.score<=o))break}n===e.score&&u.push(e.boxIndex)}})),u}(c,h,r,.5,o),m=a.getReshapedInputDimensions(0),g=a.inputSize,y=g/m.width,b=g/m.height,x=c.arraySync(),w=v.map((function(t){var e=[Math.max(0,x[t][0]),Math.min(1,x[t][2])].map((function(t){return t*b})),n=e[0],r=e[1],o=[Math.max(0,x[t][1]),Math.min(1,x[t][3])].map((function(t){return t*y})),i=o[0],s=o[1];return new Gt(h[t],new $t(i,n,s-i,r-n),{height:a.getInputHeight(0),width:a.getInputWidth(0)})})),c.dispose(),l.dispose(),[2,w]}}))}))},e.prototype.getDefaultModelName=function(){return"ssd_mobilenetv1_model"},e.prototype.extractParamsFromWeigthMap=function(t){return Bn(t)},e.prototype.extractParams=function(t){return function(t){var e=[],n=Ke(t),r=n.extractWeights,o=n.getRemainingWeights,a=Pn(r,e),i=a.extractMobilenetV1Params,s=a.extractPredictionLayerParams,u=i(),c=s(),l={extra_dim:Rt.J(r(20472),[1,5118,4])};if(e.push({paramPath:"output_layer/extra_dim"}),0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{params:{mobilenetv1:u,prediction_layer:c,output_layer:l},paramMappings:e}}(t)},e}(Me);!function(t){function e(){return null!==t&&t.apply(this,arguments)||this}Object(St.c)(e,t)}(Gn);var Hn,qn=[new Ut(.738768,.874946),new Ut(2.42204,2.65704),new Ut(4.30971,7.04493),new Ut(10.246,4.59428),new Ut(12.6868,11.8741)],Kn=[new Ut(1.603231,2.094468),new Ut(6.041143,7.080126),new Ut(2.882459,3.518061),new Ut(4.266906,5.178857),new Ut(9.041765,10.66308)],Xn=[117.001,114.697,97.404],$n=function(t){return"number"==typeof t};function Yn(t){return Rt.L((function(){var e=Rt.t(t,Rt.y(.10000000149011612));return Rt.c(Rt.w(Rt.F(t,e)),e)}))}function Jn(t,e){return Rt.L((function(){var n=Rt.v(t,[[0,0],[1,1],[1,1],[0,0]]);return n=Rt.i(n,e.conv.filters,[1,1],"valid"),n=Rt.F(n,e.bn.sub),n=Rt.t(n,e.bn.truediv),Yn(n=Rt.c(n,e.conv.bias))}))}function Qn(t,e){return Rt.L((function(){var n=Rt.v(t,[[0,0],[1,1],[1,1],[0,0]]);return n=Rt.z(n,e.depthwise_filter,e.pointwise_filter,[1,1],"valid"),Yn(n=Rt.c(n,e.bias))}))}function Zn(t,e){var n=je(t,e);var r=Ge(t,e);return{extractConvParams:n,extractConvWithBatchNormParams:function(r,o,a){return{conv:n(r,o,3,a+"/conv"),bn:function(n,r){var o=Rt.H(t(n)),a=Rt.H(t(n));return e.push({paramPath:r+"/sub"},{paramPath:r+"/truediv"}),{sub:o,truediv:a}}(o,a+"/bn")}},extractSeparableConvParams:r}}function tr(t,e){var n=qe(t,e);function r(t){return{filters:n(t+"/filters",4),bias:n(t+"/bias",1)}}return{extractConvParams:r,extractConvWithBatchNormParams:function(t){return{conv:r(t+"/conv"),bn:function(t){return{sub:n(t+"/sub",1),truediv:n(t+"/truediv",1)}}(t+"/bn")}},extractSeparableConvParams:He(n)}}!function(t){t[t.XS=224]="XS",t[t.SM=320]="SM",t[t.MD=416]="MD",t[t.LG=608]="LG"}(Hn||(Hn={}));var er=function(){function t(t){var e=void 0===t?{}:t,n=e.inputSize,r=e.scoreThreshold;if(this._name="TinyYolov2Options",this._inputSize=n||416,this._scoreThreshold=r||.5,"number"!=typeof this._inputSize||this._inputSize%32!=0)throw new Error(this._name+" - expected inputSize to be a number divisible by 32");if("number"!=typeof this._scoreThreshold||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(this._name+" - expected scoreThreshold to be a number between 0 and 1")}return Object.defineProperty(t.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"scoreThreshold",{get:function(){return this._scoreThreshold},enumerable:!0,configurable:!0}),t}(),nr=function(t){function e(e){var n=t.call(this,"TinyYolov2")||this;return function(t){if(!t)throw new Error("invalid config: "+t);if("boolean"!=typeof t.withSeparableConvs)throw new Error("config.withSeparableConvs has to be a boolean, have: "+t.withSeparableConvs);if(!$n(t.iouThreshold)||t.iouThreshold<0||t.iouThreshold>1)throw new Error("config.iouThreshold has to be a number between [0, 1], have: "+t.iouThreshold);if(!Array.isArray(t.classes)||!t.classes.length||!t.classes.every((function(t){return"string"==typeof t})))throw new Error("config.classes has to be an array class names: string[], have: "+JSON.stringify(t.classes));if(!Array.isArray(t.anchors)||!t.anchors.length||!t.anchors.map((function(t){return t||{}})).every((function(t){return $n(t.x)&&$n(t.y)})))throw new Error("config.anchors has to be an array of { x: number, y: number }, have: "+JSON.stringify(t.anchors));if(t.meanRgb&&(!Array.isArray(t.meanRgb)||3!==t.meanRgb.length||!t.meanRgb.every($n)))throw new Error("config.meanRgb has to be an array of shape [number, number, number], have: "+JSON.stringify(t.meanRgb))}(e),n._config=e,n}return Object(St.c)(e,t),Object.defineProperty(e.prototype,"config",{get:function(){return this._config},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"withClassScores",{get:function(){return this.config.withClassScores||this.config.classes.length>1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"boxEncodingSize",{get:function(){return 5+(this.withClassScores?this.config.classes.length:0)},enumerable:!0,configurable:!0}),e.prototype.runTinyYolov2=function(t,e){var n=Jn(t,e.conv0);return n=Jn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv1),n=Jn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv2),n=Jn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv3),n=Jn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv4),n=Jn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv5),n=Jn(n=Rt.s(n,[2,2],[1,1],"same"),e.conv6),We(n=Jn(n,e.conv7),e.conv8,"valid",!1)},e.prototype.runMobilenet=function(t,e){var n=this.config.isFirstLayerConv2d?Yn(We(t,e.conv0,"valid",!1)):Qn(t,e.conv0);return n=Qn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv1),n=Qn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv2),n=Qn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv3),n=Qn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv4),n=Qn(n=Rt.s(n,[2,2],[2,2],"same"),e.conv5),n=Rt.s(n,[2,2],[1,1],"same"),n=e.conv6?Qn(n,e.conv6):n,We(n=e.conv7?Qn(n,e.conv7):n,e.conv8,"valid",!1)},e.prototype.forwardInput=function(t,e){var n=this,r=this.params;if(!r)throw new Error("TinyYolov2 - load model before inference");return Rt.L((function(){var o=t.toBatchTensor(e,!1).toFloat();return o=(o=n.config.meanRgb?Kt(o,n.config.meanRgb):o).div(Rt.y(256)),n.config.withSeparableConvs?n.runMobilenet(o,r):n.runTinyYolov2(o,r)}))},e.prototype.forward=function(t,e){return Object(St.b)(this,void 0,void 0,(function(){var n;return Object(St.d)(this,(function(r){switch(r.label){case 0:return n=this.forwardInput,[4,Se(t)];case 1:return[4,n.apply(this,[r.sent(),e])];case 2:return[2,r.sent()]}}))}))},e.prototype.detect=function(t,e){return void 0===e&&(e={}),Object(St.b)(this,void 0,void 0,(function(){var n,r,o,a,i,s,u,c,l,f,h,p,d,v=this;return Object(St.d)(this,(function(m){switch(m.label){case 0:return n=new er(e),r=n.inputSize,o=n.scoreThreshold,[4,Se(t)];case 1:return a=m.sent(),[4,this.forwardInput(a,r)];case 2:return i=m.sent(),s=Rt.L((function(){return Rt.O(i)[0].expandDims()})),u={width:a.getInputWidth(0),height:a.getInputHeight(0)},[4,this.extractBoxes(s,a.getReshapedInputDimensions(0),o)];case 3:return c=m.sent(),i.dispose(),s.dispose(),l=c.map((function(t){return t.box})),f=c.map((function(t){return t.score})),h=c.map((function(t){return t.classScore})),p=c.map((function(t){return v.config.classes[t.label]})),d=qt(l.map((function(t){return t.rescale(r)})),f,this.config.iouThreshold,!0),[2,d.map((function(t){return new Vt(f[t],h[t],p[t],l[t],u)}))]}}))}))},e.prototype.getDefaultModelName=function(){return""},e.prototype.extractParamsFromWeigthMap=function(t){return function(t,e){var n,r=[],o=tr(t,r),a=o.extractConvParams,i=o.extractConvWithBatchNormParams,s=o.extractSeparableConvParams;if(e.withSeparableConvs){var u=e.filterSizes&&e.filterSizes.length||9;n={conv0:e.isFirstLayerConv2d?a("conv0"):s("conv0"),conv1:s("conv1"),conv2:s("conv2"),conv3:s("conv3"),conv4:s("conv4"),conv5:s("conv5"),conv6:u>7?s("conv6"):void 0,conv7:u>8?s("conv7"):void 0,conv8:a("conv8")}}else n={conv0:i("conv0"),conv1:i("conv1"),conv2:i("conv2"),conv3:i("conv3"),conv4:i("conv4"),conv5:i("conv5"),conv6:i("conv6"),conv7:i("conv7"),conv8:a("conv8")};return Ue(t,r),{params:n,paramMappings:r}}(t,this.config)},e.prototype.extractParams=function(t){var n=this.config.filterSizes||e.DEFAULT_FILTER_SIZES,r=n?n.length:void 0;if(7!==r&&8!==r&&9!==r)throw new Error("TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found "+r+" filterSizes in config");return function(t,e,n,r){var o,a=Ke(t),i=a.extractWeights,s=a.getRemainingWeights,u=[],c=Zn(i,u),l=c.extractConvParams,f=c.extractConvWithBatchNormParams,h=c.extractSeparableConvParams;if(e.withSeparableConvs){var p=r[0],d=r[1],v=r[2],m=r[3],g=r[4],y=r[5],b=r[6],x=r[7],w=r[8];o={conv0:e.isFirstLayerConv2d?l(p,d,3,"conv0"):h(p,d,"conv0"),conv1:h(d,v,"conv1"),conv2:h(v,m,"conv2"),conv3:h(m,g,"conv3"),conv4:h(g,y,"conv4"),conv5:h(y,b,"conv5"),conv6:x?h(b,x,"conv6"):void 0,conv7:w?h(x,w,"conv7"):void 0,conv8:l(w||x||b,5*n,1,"conv8")}}else{p=r[0],d=r[1],v=r[2],m=r[3],g=r[4],y=r[5],b=r[6],x=r[7],w=r[8];o={conv0:f(p,d,"conv0"),conv1:f(d,v,"conv1"),conv2:f(v,m,"conv2"),conv3:f(m,g,"conv3"),conv4:f(g,y,"conv4"),conv5:f(y,b,"conv5"),conv6:f(b,x,"conv6"),conv7:f(x,w,"conv7"),conv8:l(w,5*n,1,"conv8")}}if(0!==s().length)throw new Error("weights remaing after extract: "+s().length);return{params:o,paramMappings:u}}(t,this.config,this.boxEncodingSize,n)},e.prototype.extractBoxes=function(t,e,n){return Object(St.b)(this,void 0,void 0,(function(){var r,o,a,i,s,u,c,l,f,h,p,d,v,m,g,y,b,x,w,E,C,_,k,R,I,S,A,O,T,D=this;return Object(St.d)(this,(function(N){switch(N.label){case 0:return r=e.width,o=e.height,a=Math.max(r,o),i=a/r,s=a/o,u=t.shape[1],c=this.config.anchors.length,l=Rt.L((function(){var e=t.reshape([u,u,c,D.boxEncodingSize]);return[e.slice([0,0,0,0],[u,u,c,4]),e.slice([0,0,0,4],[u,u,c,1]),D.withClassScores?Rt.D(e.slice([0,0,0,5],[u,u,c,D.config.classes.length]),3):Rt.y(0)]})),f=l[0],h=l[1],p=l[2],d=[],[4,h.array()];case 1:return v=N.sent(),[4,f.array()];case 2:m=N.sent(),g=0,N.label=3;case 3:if(!(g<u))return[3,12];y=0,N.label=4;case 4:if(!(y<u))return[3,11];b=0,N.label=5;case 5:return b<c?(x=Xt(v[g][y][b][0]),!n||x>n?(w=(y+Xt(m[g][y][b][0]))/u*i,E=(g+Xt(m[g][y][b][1]))/u*s,C=Math.exp(m[g][y][b][2])*this.config.anchors[b].x/u*i,_=Math.exp(m[g][y][b][3])*this.config.anchors[b].y/u*s,k=w-C/2,R=E-_/2,I={row:g,col:y,anchor:b},this.withClassScores?[4,this.extractPredictedClass(p,I)]:[3,7]):[3,9]):[3,10];case 6:return T=N.sent(),[3,8];case 7:T={classScore:1,label:0},N.label=8;case 8:A=(S=T).classScore,O=S.label,d.push(Object(St.a)({box:new zt(k,R,k+C,R+_),score:x,classScore:x*A,label:O},I)),N.label=9;case 9:return b++,[3,5];case 10:return y++,[3,4];case 11:return g++,[3,3];case 12:return f.dispose(),h.dispose(),p.dispose(),[2,d]}}))}))},e.prototype.extractPredictedClass=function(t,e){return Object(St.b)(this,void 0,void 0,(function(){var n,r,o,a;return Object(St.d)(this,(function(i){switch(i.label){case 0:return n=e.row,r=e.col,o=e.anchor,[4,t.array()];case 1:return a=i.sent(),[2,Array(this.config.classes.length).fill(0).map((function(t,e){return a[n][r][o][e]})).map((function(t,e){return{classScore:t,label:e}})).reduce((function(t,e){return t.classScore>e.classScore?t:e}))]}}))}))},e.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024],e}(Me),rr=function(t){function e(e){void 0===e&&(e=!0);var n=Object.assign({},{withSeparableConvs:e,iouThreshold:.4,classes:["face"]},e?{anchors:Kn,meanRgb:Xn}:{anchors:qn,withClassScores:!0});return t.call(this,n)||this}return Object(St.c)(e,t),Object.defineProperty(e.prototype,"withSeparableConvs",{get:function(){return this.config.withSeparableConvs},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),e.prototype.locateFaces=function(t,e){return Object(St.b)(this,void 0,void 0,(function(){return Object(St.d)(this,(function(n){switch(n.label){case 0:return[4,this.detect(t,e)];case 1:return[2,n.sent().map((function(t){return new Gt(t.score,t.relativeBox,{width:t.imageWidth,height:t.imageHeight})}))]}}))}))},e.prototype.getDefaultModelName=function(){return this.withSeparableConvs?"tiny_yolov2_separable_conv_model":"tiny_yolov2_model"},e.prototype.extractParamsFromWeigthMap=function(e){return t.prototype.extractParamsFromWeigthMap.call(this,e)},e}(nr);var or=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._name="TinyFaceDetectorOptions",e}return Object(St.c)(e,t),e}(er),ar=function(){function t(){}return t.prototype.then=function(t){return Object(St.b)(this,void 0,void 0,(function(){var e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return e=t,[4,this.run()];case 1:return[2,e.apply(void 0,[n.sent()])]}}))}))},t.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){return Object(St.d)(this,(function(t){throw new Error("ComposableTask - run is not implemented")}))}))},t}();function ir(t,e,n,r,o){return void 0===o&&(o=function(t){return t.alignedRect}),Object(St.b)(this,void 0,void 0,(function(){var a,i,s,u,c;return Object(St.d)(this,(function(l){switch(l.label){case 0:return a=t.map((function(t){return sn(t)?o(t):t.detection})),(s=r)?[3,5]:e instanceof Rt.a?[4,Oe(e,a)]:[3,2];case 1:return u=l.sent(),[3,4];case 2:return[4,Ae(e,a)];case 3:u=l.sent(),l.label=4;case 4:s=u,l.label=5;case 5:return[4,n(i=s)];case 6:return c=l.sent(),i.forEach((function(t){return t instanceof Rt.a&&t.dispose()})),[2,c]}}))}))}function sr(t,e,n,r,o){return Object(St.b)(this,void 0,void 0,(function(){var a=this;return Object(St.d)(this,(function(i){return[2,ir([t],e,(function(t){return Object(St.b)(a,void 0,void 0,(function(){return Object(St.d)(this,(function(e){return[2,n(t[0])]}))}))}),r,o)]}))}))}function ur(t){var e=Ke(t),n=e.extractWeights,r=e.getRemainingWeights,o=[],a=function(t,e){var n=je(t,e),r=ze(t,e);function o(n,r){var o=Rt.H(t(n));return e.push({paramPath:r}),o}function a(t,e,r){return void 0===r&&(r=!1),{conv1:n(t[0],t[1],3,e+"/conv1"),prelu1_alpha:o(t[1],e+"/prelu1_alpha"),conv2:n(t[1],t[2],3,e+"/conv2"),prelu2_alpha:o(t[2],e+"/prelu2_alpha"),conv3:n(t[2],t[3],r?2:3,e+"/conv3"),prelu3_alpha:o(t[3],e+"/prelu3_alpha")}}return{extractPNetParams:function(){var t=a([3,10,16,32],"pnet"),e=n(32,2,1,"pnet/conv4_1"),r=n(32,4,1,"pnet/conv4_2");return Object(St.a)(Object(St.a)({},t),{conv4_1:e,conv4_2:r})},extractRNetParams:function(){var t=a([3,28,48,64],"rnet",!0),e=r(576,128,"rnet/fc1"),n=o(128,"rnet/prelu4_alpha"),i=r(128,2,"rnet/fc2_1"),s=r(128,4,"rnet/fc2_2");return Object(St.a)(Object(St.a)({},t),{fc1:e,prelu4_alpha:n,fc2_1:i,fc2_2:s})},extractONetParams:function(){var t=a([3,32,64,64],"onet"),e=n(64,128,2,"onet/conv4"),i=o(128,"onet/prelu4_alpha"),s=r(1152,256,"onet/fc1"),u=o(256,"onet/prelu5_alpha"),c=r(256,2,"onet/fc2_1"),l=r(256,4,"onet/fc2_2"),f=r(256,10,"onet/fc2_3");return Object(St.a)(Object(St.a)({},t),{conv4:e,prelu4_alpha:i,fc1:s,prelu5_alpha:u,fc2_1:c,fc2_2:l,fc2_3:f})}}}(n,o),i=a.extractPNetParams,s=a.extractRNetParams,u=a.extractONetParams,c=i(),l=s(),f=u();if(0!==r().length)throw new Error("weights remaing after extract: "+r().length);return{params:{pnet:c,rnet:l,onet:f},paramMappings:o}}function cr(t){var e=[],n=function(t,e){var n=qe(t,e);function r(t){return{filters:n(t+"/weights",4,t+"/filters"),bias:n(t+"/bias",1)}}function o(t){return{weights:n(t+"/weights",2),bias:n(t+"/bias",1)}}function a(t){return n(t,1)}function i(t){return{conv1:r(t+"/conv1"),prelu1_alpha:a(t+"/prelu1_alpha"),conv2:r(t+"/conv2"),prelu2_alpha:a(t+"/prelu2_alpha"),conv3:r(t+"/conv3"),prelu3_alpha:a(t+"/prelu3_alpha")}}return{extractPNetParams:function(){var t=i("pnet"),e=r("pnet/conv4_1"),n=r("pnet/conv4_2");return Object(St.a)(Object(St.a)({},t),{conv4_1:e,conv4_2:n})},extractRNetParams:function(){var t=i("rnet"),e=o("rnet/fc1"),n=a("rnet/prelu4_alpha"),r=o("rnet/fc2_1"),s=o("rnet/fc2_2");return Object(St.a)(Object(St.a)({},t),{fc1:e,prelu4_alpha:n,fc2_1:r,fc2_2:s})},extractONetParams:function(){var t=i("onet"),e=r("onet/conv4"),n=a("onet/prelu4_alpha"),s=o("onet/fc1"),u=a("onet/prelu5_alpha"),c=o("onet/fc2_1"),l=o("onet/fc2_2"),f=o("onet/fc2_3");return Object(St.a)(Object(St.a)({},t),{conv4:e,prelu4_alpha:n,fc1:s,prelu5_alpha:u,fc2_1:c,fc2_2:l,fc2_3:f})}}}(t,e),r=n.extractPNetParams,o=n.extractRNetParams,a=n.extractONetParams,i=r(),s=o(),u=a();return Ue(t,e),{params:{pnet:i,rnet:s,onet:u},paramMappings:e}}function lr(t,e){var n=e[0],r=e[1];return{height:Math.floor(n*t),width:Math.floor(r*t)}}var fr=function(t){function e(e,n,r,o){return t.call(this,{left:e,top:n,right:r,bottom:o},!0)||this}return Object(St.c)(e,t),e}(jt);function hr(t){return Rt.L((function(){return Rt.t(Rt.F(t,Rt.y(127.5)),Rt.y(.0078125))}))}function pr(t,e){return Rt.L((function(){return Rt.c(Rt.w(t),Rt.t(e,Rt.u(Rt.w(Rt.u(t)))))}))}function dr(t,e,n){return void 0===n&&(n=!1),Rt.L((function(){var r=We(t,e.conv1,"valid");return r=pr(r,e.prelu1_alpha),r=pr(r=We(r=Rt.s(r,n?[2,2]:[3,3],[2,2],"same"),e.conv2,"valid"),e.prelu2_alpha),r=pr(r=We(r=n?r:Rt.s(r,[3,3],[2,2],"valid"),e.conv3,"valid"),e.prelu3_alpha)}))}function vr(t,e,n,r,o){o.stage1=[];var a=e.map((function(e){return Rt.L((function(){var n={scale:e},o=function(t,e){return Rt.L((function(){var n=lr(e,t.shape.slice(1)),r=n.height,o=n.width,a=hr(Rt.o.resizeBilinear(t,[r,o]));return Rt.N(a,[0,2,1,3])}))}(t,e),a=Date.now(),i=function(t,e){return Rt.L((function(){var n=dr(t,e,!0),r=We(n,e.conv4_1,"valid"),o=Rt.m(Rt.r(r,3),3);return{prob:Rt.D(Rt.F(r,o),3),regions:We(n,e.conv4_2,"valid")}}))}(o,r),s=i.prob,u=i.regions;return n.pnet=Date.now()-a,{scoresTensor:Rt.O(Rt.O(s,3)[1])[0],regionsTensor:Rt.O(u)[0],scale:e,statsForScale:n}}))})).map((function(t){var e=t.scoresTensor,r=t.regionsTensor,a=t.scale,i=t.statsForScale,s=function(t,e,n,r){for(var o=[],a=t.arraySync(),i=0;i<t.shape[0];i++)for(var s=0;s<t.shape[1];s++)a[i][s]>=r&&o.push(new Ut(s,i));return o.map((function(t){var r=new zt(Math.round((2*t.y+1)/n),Math.round((2*t.x+1)/n),Math.round((2*t.y+12)/n),Math.round((2*t.x+12)/n)),o=a[t.y][t.x],i=e.arraySync();return{cell:r,score:o,region:new fr(i[t.y][t.x][0],i[t.y][t.x][1],i[t.y][t.x][2],i[t.y][t.x][3])}}))}(e,r,a,n);if(e.dispose(),r.dispose(),!s.length)return o.stage1.push(i),[];var u=Date.now(),c=qt(s.map((function(t){return t.cell})),s.map((function(t){return t.score})),.5);return i.nms=Date.now()-u,i.numBoxes=c.length,o.stage1.push(i),c.map((function(t){return s[t]}))})).reduce((function(t,e){return t.concat(e)}),[]),i=[],s=[];if(a.length>0){var u=Date.now(),c=qt(a.map((function(t){return t.cell})),a.map((function(t){return t.score})),.7);o.stage1_nms=Date.now()-u,s=c.map((function(t){return a[t].score})),i=c.map((function(t){return a[t]})).map((function(t){var e=t.cell,n=t.region;return new zt(e.left+n.left*e.width,e.top+n.top*e.height,e.right+n.right*e.width,e.bottom+n.bottom*e.height).toSquare().round()}))}return{boxes:i,scores:s}}function mr(t,e,n){var r=n.width,o=n.height;return Object(St.b)(this,void 0,void 0,(function(){var n,a,i,s=this;return Object(St.d)(this,(function(u){switch(u.label){case 0:return n=ve(t),[4,Promise.all(e.map((function(e){return Object(St.b)(s,void 0,void 0,(function(){var r,o,a,i,s,u,c,l;return Object(St.d)(this,(function(f){return r=e.padAtBorders(t.height,t.width),o=r.y,a=r.ey,i=r.x,s=r.ex,u=i-1,c=o-1,l=n.getImageData(u,c,s-u,a-c),[2,pe.isNodejs()?_e(l):createImageBitmap(l)]}))}))})))];case 1:return a=u.sent(),i=[],a.forEach((function(t){var e=ve(Ce({width:r,height:o}));e.drawImage(t,0,0,r,o);for(var n=e.getImageData(0,0,r,o).data,a=[],s=0;s<n.length;s+=4)a.push(n[s+2]),a.push(n[s+1]),a.push(n[s]);i.push(a)})),[2,i.map((function(t){return Rt.L((function(){return hr(Rt.N(Rt.K(t,[1,r,o,3]),[0,2,1,3]).toFloat())}))}))]}}))}))}function gr(t,e,n,r,o){return Object(St.b)(this,void 0,void 0,(function(){var a,i,s,u,c,l,f,h,p,d,v,m,g,y;return Object(St.d)(this,(function(b){switch(b.label){case 0:return a=Date.now(),[4,mr(t,e,{width:24,height:24})];case 1:return i=b.sent(),o.stage2_extractImagePatches=Date.now()-a,a=Date.now(),s=i.map((function(t){var e=function(t,e){return Rt.L((function(){var n=dr(t,e),r=pr(Qe(Rt.x(n,[n.shape[0],e.fc1.weights.shape[0]]),e.fc1),e.prelu4_alpha),o=Qe(r,e.fc2_1),a=Rt.m(Rt.r(o,1),1),i=Rt.D(Rt.F(o,a),1),s=Qe(r,e.fc2_2);return{scores:Rt.O(i,1)[1],regions:s}}))}(t,r);return t.dispose(),e})),o.stage2_rnet=Date.now()-a,u=s.length>1?Rt.h(s.map((function(t){return t.scores}))):s[0].scores,f=(l=Array).from,[4,u.data()];case 2:return c=f.apply(l,[b.sent()]),u.dispose(),h=c.map((function(t,e){return{score:t,idx:e}})).filter((function(t){return t.score>n})).map((function(t){return t.idx})),p=h.map((function(t){return e[t]})),d=h.map((function(t){return c[t]})),v=[],m=[],p.length>0&&(a=Date.now(),g=qt(p,d,.7),o.stage2_nms=Date.now()-a,y=g.map((function(t){var e=s[h[t]].regions.arraySync();return new fr(e[0][0],e[0][1],e[0][2],e[0][3])})),m=g.map((function(t){return d[t]})),v=g.map((function(t,e){return p[t].calibrate(y[e])}))),s.forEach((function(t){t.regions.dispose(),t.scores.dispose()})),[2,{boxes:v,scores:m}]}}))}))}function yr(t,e,n,r,o){return Object(St.b)(this,void 0,void 0,(function(){var a,i,s,u,c,l,f,h,p,d,v,m,g,y,b;return Object(St.d)(this,(function(x){switch(x.label){case 0:return a=Date.now(),[4,mr(t,e,{width:48,height:48})];case 1:return i=x.sent(),o.stage3_extractImagePatches=Date.now()-a,a=Date.now(),s=i.map((function(t){var e=function(t,e){return Rt.L((function(){var n=dr(t,e);n=pr(n=We(n=Rt.s(n,[2,2],[2,2],"same"),e.conv4,"valid"),e.prelu4_alpha);var r=pr(Qe(Rt.x(n,[n.shape[0],e.fc1.weights.shape[0]]),e.fc1),e.prelu5_alpha),o=Qe(r,e.fc2_1),a=Rt.m(Rt.r(o,1),1),i=Rt.D(Rt.F(o,a),1),s=Qe(r,e.fc2_2),u=Qe(r,e.fc2_3);return{scores:Rt.O(i,1)[1],regions:s,points:u}}))}(t,r);return t.dispose(),e})),o.stage3_onet=Date.now()-a,u=s.length>1?Rt.h(s.map((function(t){return t.scores}))):s[0].scores,f=(l=Array).from,[4,u.data()];case 2:return c=f.apply(l,[x.sent()]),u.dispose(),h=c.map((function(t,e){return{score:t,idx:e}})).filter((function(t){return t.score>n})).map((function(t){return t.idx})),p=h.map((function(t){var e=s[t].regions.arraySync();return new fr(e[0][0],e[0][1],e[0][2],e[0][3])})),d=h.map((function(t,n){return e[t].calibrate(p[n])})),v=h.map((function(t){return c[t]})),m=[],g=[],y=[],d.length>0&&(a=Date.now(),b=qt(d,v,.7,!1),o.stage3_nms=Date.now()-a,m=b.map((function(t){return d[t]})),g=b.map((function(t){return v[t]})),y=b.map((function(t,e){return Array(5).fill(0).map((function(n,r){var o=s[t].points.arraySync();return new Ut(o[0][r]*(m[e].width+1)+m[e].left,o[0][r+5]*(m[e].height+1)+m[e].top)}))}))),s.forEach((function(t){t.regions.dispose(),t.scores.dispose(),t.points.dispose()})),[2,{boxes:m,scores:g,points:y}]}}))}))}var br=function(t){function e(){return t.call(this,"Mtcnn")||this}return Object(St.c)(e,t),e.prototype.load=function(e){return Object(St.b)(this,void 0,void 0,(function(){return Object(St.d)(this,(function(n){return[2,t.prototype.load.call(this,e)]}))}))},e.prototype.loadFromDisk=function(e){return Object(St.b)(this,void 0,void 0,(function(){return Object(St.d)(this,(function(n){return[2,t.prototype.loadFromDisk.call(this,e)]}))}))},e.prototype.forwardInput=function(t,e){return void 0===e&&(e={}),Object(St.b)(this,void 0,void 0,(function(){var n,r,o,a,i,s,u,c,l,f,h,p,d,v,m,g,y,b,x,w,E;return Object(St.d)(this,(function(C){switch(C.label){case 0:if(!(n=this.params))throw new Error("Mtcnn - load model before inference");if(!(r=t.canvases[0]))throw new Error("Mtcnn - inputCanvas is not defined, note that passing tensors into Mtcnn.forwardInput is not supported yet.");return o={},a=Date.now(),i=Rt.L((function(){return t=Rt.m(Rt.f.fromPixels(r)).toFloat(),Rt.L((function(){return Rt.E(Rt.O(t,3).reverse(),3)}));var t})),s=function(t){return i.dispose(),o.total=Date.now()-a,t},u=i.shape.slice(1),c=u[0],l=u[1],f=new Mn(e),h=f.minFaceSize,p=f.scaleFactor,d=f.maxNumScales,v=f.scoreThresholds,m=f.scaleSteps,g=(m||function(t,e,n){for(var r=n[0],o=n[1],a=12/t,i=[],s=Math.min(r,o)*a,u=0;s>=12;)i.push(a*Math.pow(e,u)),s*=e,u+=1;return i}(h,p,[c,l])).filter((function(t){var e=lr(t,[c,l]);return Math.min(e.width,e.height)>12})).slice(0,d),o.scales=g,o.pyramid=g.map((function(t){return lr(t,[c,l])})),y=Date.now(),[4,vr(i,g,v[0],n.pnet,o)];case 1:return b=C.sent(),o.total_stage1=Date.now()-y,b.boxes.length?(o.stage2_numInputBoxes=b.boxes.length,y=Date.now(),[4,gr(r,b.boxes,v[1],n.rnet,o)]):[2,s({results:[],stats:o})];case 2:return x=C.sent(),o.total_stage2=Date.now()-y,x.boxes.length?(o.stage3_numInputBoxes=x.boxes.length,y=Date.now(),[4,yr(r,x.boxes,v[2],n.onet,o)]):[2,s({results:[],stats:o})];case 3:return w=C.sent(),o.total_stage3=Date.now()-y,E=w.boxes.map((function(t,e){return un(re({},new Gt(w.scores[e],new $t(t.left/l,t.top/c,t.width/l,t.height/c),{height:c,width:l})),new Jt(w.points[e].map((function(e){return e.sub(new Ut(t.left,t.top)).div(new Ut(t.width,t.height))})),{width:t.width,height:t.height}))})),[2,s({results:E,stats:o})]}}))}))},e.prototype.forward=function(t,e){return void 0===e&&(e={}),Object(St.b)(this,void 0,void 0,(function(){var n;return Object(St.d)(this,(function(r){switch(r.label){case 0:return n=this.forwardInput,[4,Se(t)];case 1:return[4,n.apply(this,[r.sent(),e])];case 2:return[2,r.sent().results]}}))}))},e.prototype.forwardWithStats=function(t,e){return void 0===e&&(e={}),Object(St.b)(this,void 0,void 0,(function(){var n;return Object(St.d)(this,(function(r){switch(r.label){case 0:return n=this.forwardInput,[4,Se(t)];case 1:return[2,n.apply(this,[r.sent(),e])]}}))}))},e.prototype.getDefaultModelName=function(){return"mtcnn_model"},e.prototype.extractParamsFromWeigthMap=function(t){return cr(t)},e.prototype.extractParams=function(t){return ur(t)},e}(Me),xr=[new Ut(1.603231,2.094468),new Ut(6.041143,7.080126),new Ut(2.882459,3.518061),new Ut(4.266906,5.178857),new Ut(9.041765,10.66308)],wr=[117.001,114.697,97.404],Er=function(t){function e(){var e={withSeparableConvs:!0,iouThreshold:.4,classes:["face"],anchors:xr,meanRgb:wr,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};return t.call(this,e)||this}return Object(St.c)(e,t),Object.defineProperty(e.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),e.prototype.locateFaces=function(t,e){return Object(St.b)(this,void 0,void 0,(function(){return Object(St.d)(this,(function(n){switch(n.label){case 0:return[4,this.detect(t,e)];case 1:return[2,n.sent().map((function(t){return new Gt(t.score,t.relativeBox,{width:t.imageWidth,height:t.imageHeight})}))]}}))}))},e.prototype.getDefaultModelName=function(){return"tiny_face_detector_model"},e.prototype.extractParamsFromWeigthMap=function(e){return t.prototype.extractParamsFromWeigthMap.call(this,e)},e}(nr),Cr={ssdMobilenetv1:new Gn,tinyFaceDetector:new Er,tinyYolov2:new rr,mtcnn:new br,faceLandmark68Net:new xn,faceLandmark68TinyNet:new En,faceRecognitionNet:new Tn,faceExpressionNet:new rn,ageGenderNet:new yn},_r=function(t){function e(e,n,r){var o=t.call(this)||this;return o.parentTask=e,o.input=n,o.extractedFaces=r,o}return Object(St.c)(e,t),e}(ar),kr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t,e,n=this;return Object(St.d)(this,(function(r){switch(r.label){case 0:return[4,this.parentTask];case 1:return[4,ir(t=r.sent(),this.input,(function(t){return Object(St.b)(n,void 0,void 0,(function(){return Object(St.d)(this,(function(e){switch(e.label){case 0:return[4,Promise.all(t.map((function(t){return Cr.faceExpressionNet.predictExpressions(t)})))];case 1:return[2,e.sent()]}}))}))}),this.extractedFaces)];case 2:return e=r.sent(),[2,t.map((function(t,n){return on(t,e[n])}))]}}))}))},e.prototype.withAgeAndGender=function(){return new Or(this,this.input)},e}(_r),Rr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t,e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return[4,this.parentTask];case 1:return(t=n.sent())?[4,sr(t,this.input,(function(t){return Cr.faceExpressionNet.predictExpressions(t)}),this.extractedFaces)]:[2];case 2:return e=n.sent(),[2,on(t,e)]}}))}))},e.prototype.withAgeAndGender=function(){return new Tr(this,this.input)},e}(_r),Ir=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.withAgeAndGender=function(){return new Dr(this,this.input)},e.prototype.withFaceDescriptors=function(){return new Mr(this,this.input)},e}(kr),Sr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.withAgeAndGender=function(){return new Nr(this,this.input)},e.prototype.withFaceDescriptor=function(){return new Pr(this,this.input)},e}(Rr),Ar=function(t){function e(e,n,r){var o=t.call(this)||this;return o.parentTask=e,o.input=n,o.extractedFaces=r,o}return Object(St.c)(e,t),e}(ar),Or=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t,e,n=this;return Object(St.d)(this,(function(r){switch(r.label){case 0:return[4,this.parentTask];case 1:return[4,ir(t=r.sent(),this.input,(function(t){return Object(St.b)(n,void 0,void 0,(function(){return Object(St.d)(this,(function(e){switch(e.label){case 0:return[4,Promise.all(t.map((function(t){return Cr.ageGenderNet.predictAgeAndGender(t)})))];case 1:return[2,e.sent()]}}))}))}),this.extractedFaces)];case 2:return e=r.sent(),[2,t.map((function(t,n){var r=e[n],o=r.age;return Nn(Fn(t,r.gender,r.genderProbability),o)}))]}}))}))},e.prototype.withFaceExpressions=function(){return new kr(this,this.input)},e}(Ar),Tr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t,e,n,r,o;return Object(St.d)(this,(function(a){switch(a.label){case 0:return[4,this.parentTask];case 1:return(t=a.sent())?[4,sr(t,this.input,(function(t){return Cr.ageGenderNet.predictAgeAndGender(t)}),this.extractedFaces)]:[2];case 2:return e=a.sent(),n=e.age,r=e.gender,o=e.genderProbability,[2,Nn(Fn(t,r,o),n)]}}))}))},e.prototype.withFaceExpressions=function(){return new Rr(this,this.input)},e}(Ar),Dr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.withFaceExpressions=function(){return new Ir(this,this.input)},e.prototype.withFaceDescriptors=function(){return new Mr(this,this.input)},e}(Or),Nr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.withFaceExpressions=function(){return new Sr(this,this.input)},e.prototype.withFaceDescriptor=function(){return new Pr(this,this.input)},e}(Tr),Fr=function(t){function e(e,n){var r=t.call(this)||this;return r.parentTask=e,r.input=n,r}return Object(St.c)(e,t),e}(ar),Mr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t;return Object(St.d)(this,(function(e){switch(e.label){case 0:return[4,this.parentTask];case 1:return[4,ir(t=e.sent(),this.input,(function(t){return Promise.all(t.map((function(t){return Cr.faceRecognitionNet.computeFaceDescriptor(t)})))}),null,(function(t){return t.landmarks.align(null,{useDlibAlignment:!0})}))];case 2:return[2,e.sent().map((function(e,n){return Dn(t[n],e)}))]}}))}))},e.prototype.withFaceExpressions=function(){return new Ir(this,this.input)},e.prototype.withAgeAndGender=function(){return new Dr(this,this.input)},e}(Fr),Pr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t,e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return[4,this.parentTask];case 1:return(t=n.sent())?[4,sr(t,this.input,(function(t){return Cr.faceRecognitionNet.computeFaceDescriptor(t)}),null,(function(t){return t.landmarks.align(null,{useDlibAlignment:!0})}))]:[2];case 2:return e=n.sent(),[2,Dn(t,e)]}}))}))},e.prototype.withFaceExpressions=function(){return new Sr(this,this.input)},e.prototype.withAgeAndGender=function(){return new Nr(this,this.input)},e}(Fr),Br=function(t){function e(e,n,r){var o=t.call(this)||this;return o.parentTask=e,o.input=n,o.useTinyLandmarkNet=r,o}return Object(St.c)(e,t),Object.defineProperty(e.prototype,"landmarkNet",{get:function(){return this.useTinyLandmarkNet?Cr.faceLandmark68TinyNet:Cr.faceLandmark68Net},enumerable:!0,configurable:!0}),e}(ar),Lr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t,e,n,r,o,a=this;return Object(St.d)(this,(function(i){switch(i.label){case 0:return[4,this.parentTask];case 1:return t=i.sent(),e=t.map((function(t){return t.detection})),this.input instanceof Rt.a?[4,Oe(this.input,e)]:[3,3];case 2:return r=i.sent(),[3,5];case 3:return[4,Ae(this.input,e)];case 4:r=i.sent(),i.label=5;case 5:return n=r,[4,Promise.all(n.map((function(t){return a.landmarkNet.detectLandmarks(t)})))];case 6:return o=i.sent(),n.forEach((function(t){return t instanceof Rt.a&&t.dispose()})),[2,t.map((function(t,e){return un(t,o[e])}))]}}))}))},e.prototype.withFaceExpressions=function(){return new Ir(this,this.input)},e.prototype.withAgeAndGender=function(){return new Dr(this,this.input)},e.prototype.withFaceDescriptors=function(){return new Mr(this,this.input)},e}(Br),Wr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t,e,n,r,o;return Object(St.d)(this,(function(a){switch(a.label){case 0:return[4,this.parentTask];case 1:return(t=a.sent())?(e=t.detection,this.input instanceof Rt.a?[4,Oe(this.input,[e])]:[3,3]):[2];case 2:return r=a.sent(),[3,5];case 3:return[4,Ae(this.input,[e])];case 4:r=a.sent(),a.label=5;case 5:return n=r,[4,this.landmarkNet.detectLandmarks(n[0])];case 6:return o=a.sent(),n.forEach((function(t){return t instanceof Rt.a&&t.dispose()})),[2,un(t,o)]}}))}))},e.prototype.withFaceExpressions=function(){return new Sr(this,this.input)},e.prototype.withAgeAndGender=function(){return new Nr(this,this.input)},e.prototype.withFaceDescriptor=function(){return new Pr(this,this.input)},e}(Br),Ur=function(t){function e(e,n){void 0===n&&(n=new Vn);var r=t.call(this)||this;return r.input=e,r.options=n,r}return Object(St.c)(e,t),e}(ar),jr=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t,e,n,r;return Object(St.d)(this,(function(o){switch(o.label){case 0:return e=(t=this).input,(n=t.options)instanceof Mn?[4,Cr.mtcnn.forward(e,n)]:[3,2];case 1:return[2,o.sent().map((function(t){return t.detection}))];case 2:if(!(r=n instanceof or?function(t){return Cr.tinyFaceDetector.locateFaces(t,n)}:n instanceof Vn?function(t){return Cr.ssdMobilenetv1.locateFaces(t,n)}:n instanceof er?function(t){return Cr.tinyYolov2.locateFaces(t,n)}:null))throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return[2,r(e)]}}))}))},e.prototype.runAndExtendWithFaceDetections=function(){var t=this;return new Promise((function(e){return Object(St.b)(t,void 0,void 0,(function(){var t;return Object(St.d)(this,(function(n){switch(n.label){case 0:return[4,this.run()];case 1:return t=n.sent(),[2,e(t.map((function(t){return re({},t)})))]}}))}))}))},e.prototype.withFaceLandmarks=function(t){return void 0===t&&(t=!1),new Lr(this.runAndExtendWithFaceDetections(),this.input,t)},e.prototype.withFaceExpressions=function(){return new kr(this.runAndExtendWithFaceDetections(),this.input)},e.prototype.withAgeAndGender=function(){return new Or(this.runAndExtendWithFaceDetections(),this.input)},e}(Ur);!function(t){function e(){return null!==t&&t.apply(this,arguments)||this}Object(St.c)(e,t),e.prototype.run=function(){return Object(St.b)(this,void 0,void 0,(function(){var t,e;return Object(St.d)(this,(function(n){switch(n.label){case 0:return[4,new jr(this.input,this.options)];case 1:return t=n.sent(),e=t[0],t.forEach((function(t){t.score>e.score&&(e=t)})),[2,e]}}))}))},e.prototype.runAndExtendWithFaceDetection=function(){var t=this;return new Promise((function(e){return Object(St.b)(t,void 0,void 0,(function(){var t;return Object(St.d)(this,(function(n){switch(n.label){case 0:return[4,this.run()];case 1:return t=n.sent(),[2,e(t?re({},t):void 0)]}}))}))}))},e.prototype.withFaceLandmarks=function(t){return void 0===t&&(t=!1),new Wr(this.runAndExtendWithFaceDetection(),this.input,t)},e.prototype.withFaceExpressions=function(){return new Rr(this.runAndExtendWithFaceDetection(),this.input)},e.prototype.withAgeAndGender=function(){return new Tr(this.runAndExtendWithFaceDetection(),this.input)}}(Ur);function zr(t,e){return void 0===e&&(e=new Vn),new jr(t,e)}!function(){function t(t,e){void 0===e&&(e=.6),this._distanceThreshold=e;var n=Array.isArray(t)?t:[t];if(!n.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");var r=1,o=function(){return"person "+r++};this._labeledDescriptors=n.map((function(t){if(t instanceof ee)return t;if(t instanceof Float32Array)return new ee(o(),[t]);if(t.descriptor&&t.descriptor instanceof Float32Array)return new ee(o(),[t.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array | Array<LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array>")}))}Object.defineProperty(t.prototype,"labeledDescriptors",{get:function(){return this._labeledDescriptors},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"distanceThreshold",{get:function(){return this._distanceThreshold},enumerable:!0,configurable:!0}),t.prototype.computeMeanDistance=function(t,e){return e.map((function(e){return function(t,e){if(t.length!==e.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");var n=Array.from(t),r=Array.from(e);return Math.sqrt(n.map((function(t,e){return t-r[e]})).reduce((function(t,e){return t+Math.pow(e,2)}),0))}(e,t)})).reduce((function(t,e){return t+e}),0)/(e.length||1)},t.prototype.matchDescriptor=function(t){var e=this;return this.labeledDescriptors.map((function(n){var r=n.descriptors,o=n.label;return new Zt(o,e.computeMeanDistance(t,r))})).reduce((function(t,e){return t.distance<e.distance?t:e}))},t.prototype.findBestMatch=function(t){var e=this.matchDescriptor(t);return e.distance<this.distanceThreshold?e:new Zt("unknown",e.distance)},t.prototype.toJSON=function(){return{distanceThreshold:this.distanceThreshold,labeledDescriptors:this.labeledDescriptors.map((function(t){return t.toJSON()}))}},t.fromJSON=function(e){return new t(e.labeledDescriptors.map((function(t){return ee.fromJSON(t)})),e.distanceThreshold)}}();const Vr=t=>{const e=.25*t.height,n=t.y-e>=0?t.y-e:0,r=.3*t.width,o=t.width-r,a=t.y-e>=0?t.height+e:t.height+t.y;return{x:t.x+r/2,y:n,width:o,height:a}},Gr=(t,e)=>{const n=document.createElement("canvas");n.width=t.videoWidth,n.height=t.videoHeight;const r=n.getContext("2d");r.drawImage(t,0,0);const o=Vr(e);return r.getImageData(o.x,o.y,o.width,o.height)},Hr=(t,e)=>{let{count:n,mean:r,m2:o}=t;n++;const a=e-r;r+=a/n;return o+=a*(e-r),{count:n,mean:r,m2:o}},qr=t=>{const{data:e}=t;let n={count:0,mean:0,m2:0};for(let r=0;r<e.length;r+=4)n=Hr(n,e[r]),n=Hr(n,e[r+1]),n=Hr(n,e[r+2]);return{mean:n.mean,variance:n.m2/n.count}},Kr=(t,e)=>{const{x:n,y:r,width:o,height:a}=t;return{x:e.width-o-n,y:r,width:o,height:a}},Xr=(t,e)=>{const{width:n,height:o}=t;(function t(e,n){var r=new At(n.width,n.height),o=r.width,a=r.height;if(o<=0||a<=0)throw new Error("resizeResults - invalid dimensions: "+JSON.stringify({width:o,height:a}));if(Array.isArray(e))return e.map((function(e){return t(e,{width:o,height:a})}));if(sn(e)){var i=e.detection.forSize(o,a),s=e.unshiftedLandmarks.forSize(i.box.width,i.box.height);return un(re(e,i),s)}return ne(e)?re(e,e.detection.forSize(o,a)):e instanceof Yt||e instanceof Gt?e.forSize(o,a):e})(e,{width:n,height:o}).forEach(e=>{const a=Vr(e.box),i=Kr(e.box,{width:n,height:o}),s=Kr(a,{width:n,height:o}),u=new r.DrawBox(i),c=new r.DrawBox(s,{boxColor:"yellow"});u.draw(t),c.draw(t)})};var $r=n(22),Yr=n.n($r);const Jr=Object(b.createRef)(),Qr=t=>{let{facesProperties:e,videoElement:n,debugMessages:r}=t;const{clientWidth:o,clientHeight:a}=n;return Object(b.useEffect)(()=>{const t=Jr&&Jr.current;t&&(t.width=o,t.height=a,Xr(t,e),((t,e)=>{const n=t.getContext("2d");n.font="15px Arial",n.fillStyle="purple",e.forEach((t,e)=>{const r=20*(e+1)+30;n.fillText(t,10,r)})})(t,r))}),x.a.createElement("canvas",{className:Yr.a.canvas,ref:Jr})};Qr.defaultProps={videoElement:{}},Qr.propType={facesProperties:z.a.any.isRequired,debugMessages:z.a.array.isRequired,videoElement:z.a.instanceOf(Element).isRequired};var Zr,to,eo=Qr,no=n(6),ro=n.n(no);function oo(){return(oo=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}var ao=function(t){return b.createElement("svg",oo({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",width:"1em",height:"1em",viewBox:"0 0 28 28"},t),Zr||(Zr=b.createElement("defs",null,b.createElement("path",{id:"ico-camera_svg__a",d:"M3.5 8a.5.5 0 00-.5.5V21c0 .552.449 1 1 1h20a1 1 0 001-1V8.5a.5.5 0 00-.5-.5h-8.524l-.126-.855C15.713 6.207 14.918 5.5 14 5.5s-1.713.707-1.85 1.645L12.024 8H3.5zM24 24H4c-1.655 0-3-1.346-3-3V8.5C1 7.122 2.122 6 3.5 6h6.896C10.97 4.529 12.393 3.5 14 3.5s3.03 1.029 3.604 2.5H24.5C25.878 6 27 7.122 27 8.5V21c0 1.654-1.346 3-3 3zM6.5 10h-2a.5.5 0 000 1h2a.5.5 0 000-1zm7.5 1.5c-1.93 0-3.5 1.57-3.5 3.5s1.57 3.5 3.5 3.5 3.5-1.57 3.5-3.5-1.57-3.5-3.5-3.5zm0 9A5.506 5.506 0 018.5 15c0-3.033 2.467-5.5 5.5-5.5 3.032 0 5.5 2.467 5.5 5.5 0 3.032-2.468 5.5-5.5 5.5z"}))),to||(to=b.createElement("use",{fill:"#F0F",xlinkHref:"#ico-camera_svg__a",fillRule:"evenodd"})))};const io={ALWAYS:"always",AUTO:"auto",NEVER:"never"},so=[3,2,1],uo=t=>{let{action:e,countdownMode:n}=t;const r=Object(b.useRef)(),[o,a]=Object(b.useState)(so.length),i=()=>{clearInterval(r.current)},s=()=>{0===o?(i(),e()):a(t=>t-1)},u=()=>{r.current=setInterval(s,1e3)},c=()=>{switch(n){case io.AUTO:window.innerWidth>=628?u():e();break;case io.ALWAYS:u();break;case io.NEVER:default:e()}};Object(b.useEffect)(()=>(c(),i),[n,o]);const l=t=>o===t?ro.a.activeCounter:ro.a.inactiveCounter;return n===io.NEVER?null:x.a.createElement("div",{className:ro.a.container},so.map(t=>x.a.createElement("span",{key:t,className:l(t)},t)),x.a.createElement("span",{className:l(0)},x.a.createElement(ao,{className:0===o?ro.a.activeIcon:ro.a.inactiveIcon})))};uo.defaultProps={countdownMode:"never"},uo.propTypes={action:z.a.func.isRequired,countdownMode:z.a.oneOf(Object.values(io))};var co=uo,lo=n(23),fo=n.n(lo),ho=n(24),po=n.n(ho);function vo(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const mo={PNG:"png",JPEG:"jpeg"};class go extends b.Component{constructor(t){super(t),vo(this,"webcamRef",x.a.createRef()),vo(this,"handleVideoPlaying",()=>{const{onVideoPlaying:t}=this.props;t();const{videoWidth:e,videoHeight:n}=this.webcamRef.current.video;this.setState({videoWidth:e,videoHeight:n})}),vo(this,"handleUserMedia",()=>{this.webcamRef.current.video.addEventListener("playing",this.handleVideoPlaying)}),vo(this,"handleUserMediaError",t=>{const{onError:e}=this.props,{name:n="",message:r=""}=t;[n,r].some(t=>t.toLowerCase().includes("constrain"))?e(o.OVERCONSTRAINED):e("NotAllowedError"!==n?o.GENERIC_CAMERA_ERROR:o.NO_CAMERA_PERMISSION)}),vo(this,"takePhoto",()=>this.webcamRef.current.getScreenshot()),this.state={videoHeight:null,videoWidth:null}}componentWillUnmount(){this.webcamRef.current.video.srcObject=null,this.webcamRef.current.video.removeEventListener("playing",this.handleVideoPlaying)}render(){const{videoWidth:t,videoHeight:e}=this.state,{widthMinConstraint:n,widthIdealConstraint:r,format:o,quality:a}=this.props;return x.a.createElement(fo.a,{ref:this.webcamRef,width:"100%",className:po.a.video,videoConstraints:{facingMode:"user",width:{min:n,ideal:r}},audio:!1,onUserMediaError:this.handleUserMediaError,onUserMedia:this.handleUserMedia,screenshotFormat:"image/"+o,screenshotQuality:a,minScreenshotWidth:t,minScreenshotHeight:e})}}go.defaultProps={widthMinConstraint:1024,widthIdealConstraint:1280,onError:()=>{}},go.propTypes={onVideoPlaying:z.a.func.isRequired,widthMinConstraint:z.a.number,widthIdealConstraint:z.a.number,format:z.a.oneOf(Object.values(mo)),onError:z.a.func,quality:z.a.oneOf(Object.values(y))};var yo=go;navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia;const bo=async()=>navigator.mediaDevices?await new Promise(t=>{navigator.mediaDevices.enumerateDevices().then(e=>{const n=e.filter(t=>"videoinput"===t.kind);t(!!n.length)}).catch(e=>{t(!1)})})?void 0:o.NO_CAMERA:o.UNSUPPORTED_BROWSER,xo={DETECTIONS_COUNT:0},wo="INIT_MODEL_DURATION",Eo="INIT_DETECTION_DURATION",Co="AVERAGE_DETECTION_DURATION",_o="DETECTIONS_COUNT",ko="FACES_COUNT",Ro="FACE_SCORE",Io="BOX_SIZE",So="RELATIVE_BOX",Ao="CENTERING",Oo="IS_STABLE_INDEX",To="BRIGHTNESS_DETECTION_DURATION",Do="BRIGHTNESS_VALUE",No=[ko,Ro,Io,So,Ao,Oo,To,Do],Fo=t=>xo[t],Mo=t=>{let{key:e,value:n}=t;xo[e]=n},Po=async t=>{const e=performance.now();return{result:await t(),duration:performance.now()-e}},Bo=t=>{const e=(t=>{let{previousAverage:e=0,count:n=0,newValue:r}=t;return(e*n+r)/(n+1)})({previousAverage:Fo(Co),count:Fo(_o),newValue:t});Mo({key:Co,value:e}),xo[_o]++},Lo=new or({inputSize:320,scoreThreshold:.6}),Wo=async t=>{try{const{duration:e}=await Po(async()=>Cr.tinyFaceDetector.loadFromUri(t));return(t=>{Mo({key:wo,value:t})})(e),null}catch(e){return e}},Uo=async()=>{try{const{duration:t}=await Po(async()=>zr(document.createElement("canvas"),Lo));return(t=>{Mo({key:Eo,value:t})})(t),null}catch(t){return t}},jo={PORTRAIT:.65,LANDSCAPE:.6},zo=t=>Math.round(100*t)/100,Vo=(t,e)=>t?h:e?p:"";var Go=[t=>{let e="",n=!0;t.length||(e=s,n=!1);return{instructionCode:e,debugMessages:[{key:ko,value:t.length}],canContinueOtherChecks:n}},t=>{let e="";return t.length>1&&(e=u),{instructionCode:e,debugMessages:[]}},function(t){let{videoElement:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="",r=!0;const o=[];if(e){const a=performance.now(),i=Gr(e,t[0].box),s=qr(i),u=performance.now();o.push({key:To,value:u-a}),o.push({key:Do,value:s.mean});const c=s.mean<=50,l=s.mean>=200;n=Vo(c,l),r=""===n}return{instructionCode:n,debugMessages:o,canContinueOtherChecks:r}},t=>{const[{score:e}]=t;return{instructionCode:"",debugMessages:[{key:Ro,value:""+zo(e)}]}},t=>{let e="";const[{imageWidth:n,imageHeight:r,box:o}]=t,a=o.x+o.width/2,i=o.y+o.height/2+-.15*o.height,u=n/2,c=r/2,l=.1*Math.min(n,r);(Math.abs(u-a)>l||Math.abs(c-i)>l)&&(e=s);const f=zo(a/n),h=zo(i/r);return{instructionCode:e,debugMessages:[{key:Ao,value:`x = ${f}; y = ${h}`}]}},t=>{let e="";const[{box:n}]=t;(n.width<200||n.height<200)&&(e=a);return{instructionCode:e,debugMessages:[{key:Io,value:`${zo(n.height)} x ${zo(n.width)}`}]}},function(t){let{isPortraitCamera:e=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="";const[{relativeBox:r}]=t,o=e?"width":"height",s=e?"PORTRAIT":"LANDSCAPE",u=jo[s],c=u+.08,l=u-.08;r[o]>c&&(n=i),r[o]<l&&(n=a);const f=zo(r[o]),h=[{key:So,value:`[${o}]: ${f}`}];return{instructionCode:n,debugMessages:h}}];const Ho=(t,e)=>{const n=Math.max(...t),r=Math.min(...t);return Number((n-r).toFixed(2))>e},qo=t=>[Ho(t.map(t=>t.x),.02),Ho(t.map(t=>t.y),.02),Ho(t.map(t=>t.size),.02)].some(Boolean);let Ko=[];const Xo=(t,e,n)=>{const r=t[0],o=qo(Ko),a=Ko.length===e;(!n||o||a)&&(Ko=[]),r&&(Ko=[...Ko,r])},$o=(t,e,n)=>!!n||!(t||!e),Yo=(t,e)=>{let n="";return t||e||(n=c),n},Jo=t=>t?null:{key:Oo,value:Ko.length},Qo=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{captureMethod:n,numberOfChecks:r,isCurrentFaceValid:o}=e;Xo(t,r,o);const a=qo(Ko),i=Ko.length===r,s=n===v.MANUAL;return{isStable:$o(a,i,s),faceStableMessageCode:Yo(a,i),debugMessage:Jo(s)}},Zo=(t,e)=>{No.forEach(t=>{delete xo[t]});const{isSingleFaceValid:n,singleFaceMessageCode:r}=function(){const t=[];for(let n=0;n<Go.length;n++){const e=Go[n],{instructionCode:r,debugMessages:o,canContinueOtherChecks:a=!0}=e(...arguments);if(r&&t.push(r),o.forEach(t=>{Mo(t)}),!a)break}const e=!t.length;return{isSingleFaceValid:e,singleFaceMessageCode:t.length?t[0]:""}}(t,e),{isStable:o,faceStableMessageCode:a}=function(){const t=Qo(...arguments),{debugMessage:e}=t;return e&&Mo(e),t}(t,{...e,isCurrentFaceValid:n});return{isSingleFaceValid:n,isValid:n&&o,messageCode:r||a}},ta=t=>Object.entries(t).map(t=>{let[e,n]=t;return`${(t=>t.replace(/_/g," ").toLowerCase())(e)}: ${(t=>"number"==typeof t?Math.ceil(t):t)(n)}`});var ea=n(15),na=n.n(ea);const ra={[a]:x.a.createElement(W,{id:"move-closer-feedback-message"}),[i]:x.a.createElement(W,{id:"move-back-feedback-message"}),[s]:x.a.createElement(W,{id:"move-center-feedback-message"}),[u]:x.a.createElement(W,{id:"one-face-only-feedback-message"}),[c]:x.a.createElement(W,{id:"hold-still-feedback-message"}),[l]:x.a.createElement(W,{id:"camera-loading-feedback-message"}),[f]:x.a.createElement(W,{id:"face-scan-loading-feedback-message"}),[p]:x.a.createElement(W,{id:"image-too-bright-feedback-message"}),[h]:x.a.createElement(W,{id:"image-too-dark-feedback-message"})},oa=t=>{let{faceCaptureAssetsRootUrl:e,onSuccess:n,onError:r,showOverlay:a,widthIdealConstraint:i,widthMinConstraint:u,format:c,CustomButton:l,countdownMode:h,captureMethod:p,isDebug:d,imageType:g,qualityType:w}=t;const[E,C]=Object(b.useState)([]),[_,k]=Object(b.useState)([]),[R,I]=Object(b.useState)(!1),[S,A]=Object(b.useState)(!1),[O,T]=Object(b.useState)(!1),[D,N]=Object(b.useState)(ra.CAMERA_LOADING),[F,M]=Object(b.useState)(!1),[P,B]=Object(b.useState)(!1),L=Object(b.useRef)(null),W=Object(b.useRef)(),U=Object(b.useRef)(),j=Object(b.useRef)(S);j.current=S;const z=!P,V=P?v.MANUAL:p,G=V===v.MANUAL&&!R,H=L.current&&L.current.webcamRef.current.video,q=d&&H,K=H&&H.videoHeight>H.videoWidth,X=y[w],$=t=>{N(ra[t])},Y=async()=>{const t=await(async t=>{const{result:e,duration:n}=await Po(async()=>zr(t,Lo));return Bo(n),e})(H),{isSingleFaceValid:e,isValid:n,messageCode:r}=Zo(t,{isPortraitCamera:K,captureMethod:V,numberOfChecks:4,videoElement:H}),o=ta(xo);return k(o),C(t),M(e),{isValid:n,messageCode:r,bbox:Array.isArray(t)&&t.length>0?t[0].box:{}}},J=t=>{const e=L.current.takePhoto();g===m.ORIGINAL?K?($(""),n({image:e})):(async(t,e)=>{const n=document.createElement("canvas"),r=n.getContext("2d"),{relativeEdgeCropping:o,format:a,qualityValue:i}=e;return new Promise(e=>{const s=new Image;s.onload=function(){const t=Math.ceil(o*s.width);n.width=s.width-2*t,n.height=s.height,r.drawImage(s,t,0,n.width,n.height,0,0,n.width,n.height),e({croppedImg:n.toDataURL("image/"+a,i)})},s.src=t})})(e,{relativeEdgeCropping:.12,format:c,qualityValue:X}).then(t=>{let{croppedImg:e}=t;$(""),n({image:e})}).catch(r):(async(t,e)=>{const n=document.createElement("canvas"),r=n.getContext("2d"),{bbox:o,relativeMarginCropping:a,format:i,qualityValue:s,isPortraitCamera:u}=e;return new Promise(e=>{const c=new Image;c.onload=function(){const{topLeftXCoord:t,topLeftYCoord:l,width:f,height:h}=((t,e,n)=>{const r=2*t,o=e.x-t*e.width<0?0:e.x-t*e.width,a=e.y-r*e.height<0?0:e.y-r*e.height;let i=0!==o?e.width+e.width*(2*t):e.width+e.x+e.width*t,s=0!==a?e.height+e.height*(t+r):e.height+e.y+e.height*t;return s=s+a>n.imageHeight?n.imageHeight-a:s,i=i+o>n.imageWidth?n.imageWidth-o:i,{topLeftXCoord:o,topLeftYCoord:a,width:i,height:s}})(a,o||((t,e)=>{const n=e?.45:.7,r=e?.25:.1;return{x:.5*t.width-n*t.height/2,y:r*t.height,height:n*t.height,width:n*t.height}})(c,u),{imageHeight:c.height,imageWidth:c.width});n.width=f,n.height=h,r.drawImage(c,t,l,f,h,0,0,f,h),e({croppedImg:n.toDataURL("image/"+i,s)})},c.src=t})})(e,{bbox:t,relativeMarginCropping:.3,format:c,qualityValue:X,isPortraitCamera:K}).then(t=>{let{croppedImg:e}=t;$(""),n({image:e})}).catch(r)},Q=async()=>{const t=z&&await Wo(e);setTimeout(()=>{j.current||B(!0)},5e3);const n=z&&!t&&await Uo();t||n?r(o.FACE_DETECTION_INIT_ERROR):(A(!0),$(s))};return Object(b.useEffect)(()=>{(async()=>{const t=await bo();t&&r(t)})(),Q()},[]),Object(b.useEffect)(()=>{if(O&&S&&V===v.AUTO){const t=async()=>{const{isValid:e,messageCode:n,bbox:r}=await Y();e?J(r):($(n),W.current=setTimeout(t,200))};U.current=setTimeout(t,1e3)}return()=>(clearTimeout(U.current),void clearTimeout(W.current))},[O,S,V]),x.a.createElement("div",{className:na.a.moduleContainer,"data-qa":"face-capture"},x.a.createElement("div",{className:na.a.cameraContainer},x.a.createElement(yo,{ref:L,widthIdealConstraint:i,widthMinConstraint:u,format:c,quality:X,onVideoPlaying:()=>{T(!0),$(S?s:f)},onError:r}),a&&x.a.createElement(st,{isPortraitCamera:K,isSuccess:F}),D&&x.a.createElement(pt,{isPortraitCamera:K,message:D}),q&&x.a.createElement(eo,{facesProperties:E,debugMessages:_,videoElement:H})),R&&x.a.createElement(co,{action:async()=>{let t;if(I(!1),z){const{isValid:e,messageCode:n,bbox:r}=await Y();if(t=r,!e)return void $(n)}J(t)},countdownMode:h}),G&&x.a.createElement(kt,{CustomButton:l,onClick:()=>I(!0),disabled:!O||!S}))};oa.defaultProps={faceCaptureAssetsRootUrl:"assets/face-capture/",isDebug:!1,captureMethod:v.MANUAL,onError:()=>{},showOverlay:!0,format:mo.JPEG,countdownMode:io.NEVER,imageType:m.ORIGINAL,qualityType:g.HIGH},oa.propTypes={faceCaptureAssetsRootUrl:z.a.string,captureMethod:z.a.oneOf(Object.values(v)),onSuccess:z.a.func.isRequired,onError:z.a.func,showOverlay:z.a.bool,widthIdealConstraint:z.a.number,widthMinConstraint:z.a.number,format:z.a.oneOf(Object.values(mo)),CustomButton:z.a.func,countdownMode:z.a.oneOf(Object.values(io)),isDebug:z.a.bool,imageType:z.a.oneOf(Object.values(m)),qualityType:z.a.oneOf(Object.values(g))};var aa=oa,ia=n(16),sa=n.n(ia),ua=n(17),ca=n.n(ua),la=n(52),fa=n.n(la),ha=n(53),pa=n.n(ha),da=n(18),va=n.n(da),ma=n(19),ga=n.n(ma),ya=function(t){return"string"==typeof t},ba=function(t){return"function"==typeof t},xa=new Map,wa=new Map;function Ea(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return function(r){if(ya(r)&&(r=new Date(r)),n){var o=_a(t,e),a=wa.get(o);if(a)return a.format(r);var i=new Intl.DateTimeFormat(t,e);return wa.set(o,i),i.format(r)}return new Intl.DateTimeFormat(t,e).format(r)}}function Ca(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return function(r){if(n){var o=_a(t,e),a=xa.get(o);if(a)return a.format(r);var i=new Intl.NumberFormat(t,e);return xa.set(o,i),i.format(r)}return new Intl.NumberFormat(t,e).format(r)}}function _a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Array.isArray(t)?t.sort().join("-"):t;return"".concat(n,"-").concat(JSON.stringify(e))}Object.freeze({__proto__:null,date:Ea,number:Ca});var ka=/\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/g;function Ra(t){var e=t.locale,n=t.locales,r=t.values,o=t.formats,a=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{plurals:void 0},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};e=e||t;var o=n.plurals,a=function(t){return ya(t)?r[t]||{style:t}:t},i=function(t,n){return function(r){var o=ba(n)?n(r):n,a=Array.isArray(o)?o:[o],i=Ca(e)(t);return a.map((function(t){return ya(t)?t.replace("#",i):t}))}};return{plural:function(t,e){var n=e.offset,r=void 0===n?0:n,a=ga()(e,["offset"]),s=a[t]||a[null==o?void 0:o(t-r)]||a.other;return i(t-r,s)},selectordinal:function(t,e){var n=e.offset,r=void 0===n?0:n,a=ga()(e,["offset"]),s=a[t]||a[null==o?void 0:o(t-r,!0)]||a.other;return i(t-r,s)},select:function(t,e){return e[t]||e.other},number:function(t,n){return Ca(e,a(n))(t)},date:function(t,n){return Ea(e,a(n))(t)},undefined:function(t){return t}}}(e,n,t.localeData,o);return function t(e,n,o){var i=r[e],s=a[n](i,o),u=ba(s)?s(t):s;return Array.isArray(u)?u.join(""):u}}function Ia(t,e,n,r){return function(o){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=Ra({locale:e,locales:n,localeData:r,formats:a,values:o}),s=function t(e){return Array.isArray(e)?e.reduce((function(e,n){if(ya(n))return e+n;var r=_()(n,3),o=r[0],a=r[1],s=r[2],u={};null==s||ya(s)?u=s:Object.keys(s).forEach((function(e){u[e]=t(s[e])}));var c=i(o,a,u);return null==c?e:e+c}),""):e},u=s(t);return ya(u)&&ka.test(u)?JSON.parse('"'.concat(u.trim(),'"')):ya(u)?u.trim():u}}var Sa=function(t){fa()(o,t);var e,n,r=(e=o,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var t,r=va()(e);if(n){var o=va()(this).constructor;t=Reflect.construct(r,arguments,o)}else t=r.apply(this,arguments);return pa()(this,t)});function o(t){var e;return sa()(this,o),(e=r.call(this))._messages={},e._localeData={},null!=t.missing&&(e._missing=t.missing),null!=t.messages&&e.load(t.messages),null!=t.localeData&&e.loadLocaleData(t.localeData),null==t.locale&&null==t.locales||e.activate(t.locale,t.locales),e}return ca()(o,[{key:"_loadLocaleData",value:function(t,e){null==this._localeData[t]?this._localeData[t]=e:Object.assign(this._localeData[t],e)}},{key:"loadLocaleData",value:function(t,e){var n=this;null!=e?this._loadLocaleData(t,e):Object.keys(t).forEach((function(e){return n._loadLocaleData(e,t[e])})),this.emit("change")}},{key:"_load",value:function(t,e){null==this._messages[t]?this._messages[t]=e:Object.assign(this._messages[t],e)}},{key:"load",value:function(t,e){var n=this;null!=e?this._load(t,e):Object.keys(t).forEach((function(e){return n._load(e,t[e])})),this.emit("change")}},{key:"activate",value:function(t,e){this._locale=t,this._locales=e,this.emit("change")}},{key:"_",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.message,o=n.formats,a=n.context;ya(t)||(e=t.values||e,r=t.message,a=t.context,t=t.id);var i,s=!a&&!this.messages[t],u=a&&!this.messages[a][t],c=u||s,l=this._missing;return l&&c?ba(l)?l(this.locale,t,a):l:(c&&this.emit("missing",{id:t,context:a,locale:this._locale}),i=a&&!u?this.messages[a][t]||r||t:this.messages[t]||r||t,ya(i)&&ka.test(i)?JSON.parse('"'.concat(i,'"')):ya(i)?i:Ia(i,this.locale,this.locales,this.localeData)(e,o))}},{key:"date",value:function(t,e){return Ea(this.locales||this.locale,e)(t)}},{key:"number",value:function(t,e){return Ca(this.locales||this.locale,e)(t)}},{key:"locale",get:function(){return this._locale}},{key:"locales",get:function(){return this._locales}},{key:"messages",get:function(){var t;return null!==(t=this._messages[this._locale])&&void 0!==t?t:{}}},{key:"localeData",get:function(){var t;return null!==(t=this._localeData[this._locale])&&void 0!==t?t:{}}}]),o}(function(){function t(){sa()(this,t),this._events={}}return ca()(t,[{key:"on",value:function(t,e){var n=this;return this._hasEvent(t)||(this._events[t]=[]),this._events[t].push(e),function(){return n.removeListener(t,e)}}},{key:"removeListener",value:function(t,e){if(this._hasEvent(t)){var n=this._events[t].indexOf(e);~n&&this._events[t].splice(n,1)}}},{key:"emit",value:function(t){for(var e=this,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o<n;o++)r[o-1]=arguments[o];this._hasEvent(t)&&this._events[t].map((function(t){return t.apply(e,r)}))}},{key:"_hasEvent",value:function(t){return Array.isArray(this._events[t])}}]),t}());function Aa(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Sa(t)}const Oa=Aa();var Ta=n(25),Da=n(26),Na=n(27),Fa=n(28),Ma=n(29),Pa=n(30),Ba=n(31),La=n(32),Wa=n(33),Ua=n(34),ja=n(35),za=n(36),Va=n(37),Ga=n(38),Ha=n(39),qa=n(40),Ka=n(41),Xa=n(42),$a=n(43),Ya=n(44),Ja=n(45),Qa=n(46),Za=n(47),ti=n(48),ei=n(49),ni=n(50),ri=n(51),oi={[d.CS]:Da.messages,[d.DA]:Na.messages,[d.DE]:Fa.messages,[d.EN]:Ta.messages,[d.ES]:Ma.messages,[d.ES_419]:Pa.messages,[d.ET]:Qa.messages,[d.FI]:Ba.messages,[d.FR]:La.messages,[d.HI]:Wa.messages,[d.ID]:ni.messages,[d.IT]:Ua.messages,[d.JA]:ja.messages,[d.KO]:ri.messages,[d.LT]:ti.messages,[d.MS]:ei.messages,[d.NB]:Va.messages,[d.NL]:za.messages,[d.PL]:Ga.messages,[d.PT]:Ha.messages,[d.RO]:qa.messages,[d.RU]:Ka.messages,[d.SV]:Xa.messages,[d.TH]:$a.messages,[d.TR]:Ya.messages,[d.UK]:Za.messages,[d.VI]:Ja.messages};const ai=d.EN;function ii(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const[e,n=""]=t.split("-");return{language:e,region:n}}function si(t){const{language:e,region:n}=ii(t);return[e.toLowerCase(),n.toUpperCase()].filter(Boolean).join("-")}const ui=t=>{let{language:e,children:n}=t;const r=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";const e=si(t);if(e&&Object.keys(oi).includes(e))return e;const{language:n}=ii(e);if(n&&Object.keys(oi).includes(n))return n;const r=Object.keys(oi).find(t=>ii(t).language===n);return r||ai}(e);return Oa.load(r,(t=>oi[t])(r)),Oa.activate(r),x.a.createElement(A,{i18n:Oa},n)};ui.defaultProps={language:ai},ui.propTypes={language:z.a.oneOf(Object.values(d)),children:z.a.node.isRequired};var ci=ui;var li=t=>{const{language:e}=t;return x.a.createElement(E,{onError:t.onError},x.a.createElement(ci,{language:e},x.a.createElement(aa,t)))}}]);
|