UNPKG

@tensorflow/tfjs-core

Version:

Hardware-accelerated JavaScript library for machine intelligence

17 lines 286 kB
/** * @license * Copyright 2018 Google LLC. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("crypto")):"function"==typeof define&&define.amd?define(["exports","crypto"],e):e(t.tf=t.tf||{},t.crypto)}(this,function(t,e){"use strict";function n(t,e){function n(){this.constructor=t}pr(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function r(t,e,n,r){var o,a=arguments.length,i=a<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(t,e,n,r);else for(var u=t.length-1;u>=0;u--)(o=t[u])&&(i=(a<3?o(i):a>3?o(e,n,i):o(e,n))||i);return a>3&&i&&Object.defineProperty(e,n,i),i}function o(t,e,n,r){return new(n||(n=Promise))(function(o,a){function i(t){try{s(r.next(t))}catch(t){a(t)}}function u(t){try{s(r.throw(t))}catch(t){a(t)}}function s(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(i,u)}s((r=r.apply(t,e||[])).next())})}function a(t,e){function n(t){return function(e){return r([t,e])}}function r(n){if(o)throw new TypeError("Generator is already executing.");for(;s;)try{if(o=1,a&&(i=a[2&n[0]?"return":n[0]?"throw":"next"])&&!(i=i.call(a,n[1])).done)return i;switch(a=0,i&&(n=[0,i.value]),n[0]){case 0:case 1:i=n;break;case 4:return s.label++,{value:n[1],done:!1};case 5:s.label++,a=n[1],n=[0];continue;case 7:n=s.ops.pop(),s.trys.pop();continue;default:if(i=s.trys,!(i=i.length>0&&i[i.length-1])&&(6===n[0]||2===n[0])){s=0;continue}if(3===n[0]&&(!i||n[1]>i[0]&&n[1]<i[3])){s.label=n[1];break}if(6===n[0]&&s.label<i[1]){s.label=i[1],i=n;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(n);break}i[2]&&s.ops.pop(),s.trys.pop();continue}n=e.call(t,s)}catch(t){n=[6,t],a=0}finally{o=i=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}var o,a,i,u,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return u={next:n(0),throw:n(1),return:n(2)},"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u}function i(){var t=navigator.userAgent||navigator.vendor||window.opera;return/(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))}function u(t){return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]}}function s(t,e,n){p(t instanceof uu,"Argument '"+e+"' passed to '"+n+"' must be a Tensor, but got "+typeof t+".")}function l(t,e){for(var n in t)!function(n){var r=t[n];Array.isArray(r)?r.forEach(function(t,r){s(t,n+"["+r+"]",e)}):s(r,n,e)}(n)}function c(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 f(t,e,n){return Math.max(t,Math.min(e,n))}function h(t,e){return Math.random()*(e-t)+t}function p(t,e){if(!t)throw new Error(e)}function d(t,e,n){void 0===n&&(n=""),p(x(t,e),n+" Shapes "+t+" and "+e+" must match")}function m(t,e){p(t.dtype===e.dtype," The dtypes of the first("+t.dtype+") and second("+e.dtype+") input must match")}function v(t,e){if(void 0===e&&(e=[]),Array.isArray(t))for(var n=0;n<t.length;++n)v(t[n],e);else e.push(t);return e}function g(t){if(_(t))return[t.length];if(!Array.isArray(t))return[];for(var e=[];t instanceof Array;)e.push(t.length),t=t[0];return e}function y(t){if(0===t.length)return 1;for(var e=t[0],n=1;n<t.length;n++)e*=t[n];return e}function x(t,e){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 w(t){return t%1==0}function b(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 E(t){for(var e=Math.floor(Math.sqrt(t));e>1;--e)if(t%e==0)return[e,t/e];return[1,t]}function S(t,e){return e<=t.length?t:t+" ".repeat(e-t.length)}function R(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 u=e(++a);null!=n&&a>=n?o():setTimeout(i,u)}};setTimeout(i,0)})}function k(t){var e={};return t.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,function(t){for(var n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return C(e,n[0],n[1]),n.join("=")}),e}function C(t,e,n){t[decodeURIComponent(e)]=decodeURIComponent(n||"")}function T(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(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 A(t,e){for(var n=[],r=[],o=0,a=0;a<t.length;++a){if(null!=e){if(e[o]===a&&t[a]>1)throw new Error("Can't squeeze axis "+a+" since its dim '"+t[a]+"' is not 1");(null==e[o]||e[o]>a)&&1===t[a]&&(n.push(t[a]),r.push(a)),e[o]<=a&&o++}t[a]>1&&(n.push(t[a]),r.push(a))}return{newShape:n,keptDims:r}}function D(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 I(t,e){for(var n=0;n<e.length;n++)if(e[n].id===t.id)return!0;return!1}function M(t,e,n){if("float32"===e)for(var r=0;r<t.length;r++)if(isNaN(t[r]))throw Error("The result of the '"+n+"' has NaNs.")}function N(t,e){return"float32"!==e&&(("int32"!==e||"float32"===t)&&("bool"!==e||"bool"!==t))}function O(t,e){if(null==e||"float32"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e){for(var n=new Uint8Array(t.length),r=0;r<n.length;++r)0!==Math.round(t[r])&&(n[r]=1);return n}throw new Error("Unknown data type "+e)}function _(t){return t instanceof Float32Array||t instanceof Int32Array||t instanceof Uint8Array}function B(t){if("float32"===t||"int32"===t)return 4;if("bool"===t)return 1;throw new Error("Unknown dtype "+t)}function L(t){return!!(t&&t.constructor&&t.call&&t.apply)}function F(t){return P(t)}function P(t){if(null==t)return[];if(t instanceof uu)return[t];var e=[],n=t;if(!U(n))return[];for(var r in n){var o=v(n[r]).filter(function(t){return t instanceof uu});e.push.apply(e,o)}return e}function U(t){return Array.isArray(t)||"object"==typeof t}function z(t,e){var n=t.dataSync(),r=V(t),o=G(n,t.shape,t.strides,r),a=["Tensor"];return e&&(a.push(" dtype: "+t.dtype),a.push(" rank: "+t.rank),a.push(" shape: ["+t.shape+"]"),a.push(" values:")),a.push(o.map(function(t){return" "+t}).join("\n")),a.join("\n")}function V(t){var e=t.dataSync(),n=t.size,r=t.strides[t.strides.length-1],o=new Array(r).fill(0);if(t.rank>1)for(var a=0;a<n/r;a++)for(var i=a*r,u=0;u<r;u++)o[u]=Math.max(o[u],W(e[i+u],0).length);return o}function W(t,e){return S(parseFloat(t.toFixed(gr)).toString(),e)}function G(t,e,n,r,o){void 0===o&&(o=!0);var a=e[0],i=e.length;if(0===i)return[t[0].toString()];if(1===i){if(a>mr){var u=Array.from(t.subarray(0,vr)),s=Array.from(t.subarray(a-vr,a));return["["+u.map(function(t,e){return W(t,r[e])}).join(", ")+", ..., "+s.map(function(t,e){return W(t,r[a-vr+e])}).join(", ")+"]"]}return["["+Array.from(t).map(function(t,e){return W(t,r[e])}).join(", ")+"]"]}var l=e.slice(1),c=n.slice(1),f=n[0],h=[];if(a>mr){for(g=0;g<vr;g++){d=(p=g*f)+f;h.push.apply(h,G(t.subarray(p,d),l,c,r,!1))}h.push("...");for(g=a-vr;g<a;g++){d=(p=g*f)+f;h.push.apply(h,G(t.subarray(p,d),l,c,r,g===a-1))}}else for(g=0;g<a;g++){var p=g*f,d=p+f;h.push.apply(h,G(t.subarray(p,d),l,c,r,g===a-1))}var m=2===i?",":"";h[0]="["+h[0]+m;for(g=1;g<h.length-1;g++)h[g]=" "+h[g]+m;for(var v=",\n",g=2;g<i;g++)v+="\n";return h[h.length-1]=" "+h[h.length-1]+"]"+(o?"":v),h}function q(t,e){for(var n=0;n<t.length;++n)if(t[t.length-n-1]!==e-1-n)return!1;return!0}function H(t,e,n){for(var r=t.length+e.length,o=[],a=0,i=0,u=0;u<r;u++)-1===n.indexOf(u)?o.push(t[a++]):o.push(e[i++]);return o}function j(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 X(t,e){return H(t,e.map(function(t){return 1}),e)}function K(t,e){var n=e.length;return t=null==t?e.map(function(t,e){return e}):[].concat(t),p(t.every(function(t){return t>=-n&&t<n}),"All values in axis param must be in range [-"+n+", "+n+") but got axis "+t),p(t.every(function(t){return w(t)}),"All values in axis param must be integers but got axis "+t),t.map(function(t){return t<0?n+t:t})}function Q(t,e,n){p(q(e,n),t+" supports only inner-most axes for now. Got axes "+e+" and rank-"+n+" input.")}function Y(t,e){if(q(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 J(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 Z(t,e){for(var n=[],r=e-t;r<e;++r)n.push(r);return n}function $(t,e,n){var r=t.length,o=e.length;p(t.length===e.length,"Error in concat"+r+"D: rank of x1 ("+r+") and x2 ("+o+") must be the same."),p(n>=0&&n<r,"Error in concat"+r+"D: axis must be between 0 and "+(r-1)+".");for(var a=0;a<r;a++)p(a===n||t[a]===e[a],"Error in concat"+r+"D: Shape ("+t+") does not match ("+e+") along the non-concatenated axis "+a+".")}function tt(t,e,n){p(t.length===e.length,"x1 and x2 should have the same rank.");var r=t.slice();return r[n]+=e[n],r}function et(t,e){return{aBegin:[0,0],aSize:t,bBegin:[0,t[1]],bSize:e}}function nt(t,e,n){var r=n.value;return n.value=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return fu(e,function(){return r.apply(void 0,t)})},n}function rt(t,e,n){$(t.shape,e.shape,n);var r=tt(t.shape,e.shape,n),o=t.as2D(-1,y(t.shape.slice(n))),a=e.as2D(-1,y(e.shape.slice(n))),i=et(o.shape,a.shape),u=i.aBegin,s=i.aSize,l=i.bBegin,c=i.bSize;return Au.engine.runKernel(function(t){return t.concat(o,a)},{a:o,b:a},function(t){return{a:function(){return t.slice(u,s)},b:function(){return t.slice(l,c)}}}).reshape(r)}function ot(t,e){return e={exports:{}},t(e,e.exports),e.exports}function at(t,e){if(null==e||"float32"===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 $ {dtype}")}function it(t,e){for(var n=at(t,e),r=0;r<n.length;r++)n[r]=1;return n}function ut(t,e){return st(t,e)?t:(Array.isArray(t)&&(t=v(t)),O(t,e))}function st(t,e){return t instanceof Float32Array&&"float32"===e||t instanceof Int32Array&&"int32"===e||t instanceof Uint8Array&&"bool"===e}function lt(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 ct(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 ft(t){for(var e=0;e<t.length;e++)if(t[e]!==e)return!1;return!0}function ht(t,e){for(var n=[],r="Operands could not be broadcast together with shapes "+t+" and "+e+".",o=Math.max(t.length,e.length),a=0;a<o;a++){var i=t[t.length-a-1]||1,u=e[e.length-a-1]||1;if(i>1&&u>1&&i!==u)throw Error(r);n.unshift(Math.max(i,u))}return n}function pt(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 dt(t,e){return Br[t][e]}function mt(t){return dt(t,"int32")}function vt(t,e,n,r,o,a){void 0===a&&(a="channelsLast");var i,u=wt(e),s=u[0],l=u[1];if("channelsLast"===a)i=[s,l,t[3],t[3]];else{if("channelsFirst"!==a)throw new Error("Unknown dataFormat "+a);i=[s,l,t[1],t[1]]}return gt(t,i,n,1,r,o,!1,a)}function gt(t,e,n,r,o,a,i,u){void 0===i&&(i=!1),void 0===u&&(u="channelsLast");var s=[-1,-1,-1,-1],l=s[0],c=s[1],f=s[2],h=s[3];if("channelsLast"===u)l=t[0],c=t[1],f=t[2],h=t[3];else{if("channelsFirst"!==u)throw new Error("Unknown dataFormat "+u);l=t[0],h=t[1],c=t[2],f=t[3]}var p,d=e[0],m=e[1],v=e[3],g=wt(n),y=g[0],x=g[1],w=wt(r),b=w[0],E=w[1],S=Et(o,c,f,y,x,bt(d,b),bt(m,E),a),R=S.padInfo,k=S.outHeight,C=S.outWidth,T=i?v*h:v;return"channelsFirst"===u?p=[l,T,k,C]:"channelsLast"===u&&(p=[l,k,C,T]),{batchSize:l,dataFormat:u,inHeight:c,inWidth:f,inChannels:h,outHeight:k,outWidth:C,outChannels:T,padInfo:R,strideHeight:y,strideWidth:x,filterHeight:d,filterWidth:m,dilationHeight:b,dilationWidth:E,inShape:t,outShape:p,filterShape:e}}function yt(t,e,n,r,o,a){null==o&&(o=xt(t,e,r));var i=t[0],u=t[1],s=St((i-e+2*o)/r+1,a);p(w(s),"The output # of rows ("+s+") must be an integer. Change the stride and/or zero pad parameters");var l=St((u-e+2*o)/r+1,a);return p(w(l),"The output # of columns ("+l+") must be an integer. Change the stride and/or zero pad parameters"),[s,l,n]}function xt(t,e,n,r){void 0===r&&(r=1);var o=bt(e,r);return Math.floor((t[0]*(n-1)-n+o)/2)}function wt(t){return"number"==typeof t?[t,t]:t}function bt(t,e){return e<=1?t:t+(t-1)*(e-1)}function Et(t,e,n,r,o,a,i,u){var s,l,c;if("number"==typeof t){s={top:t,bottom:t,left:t,right:t,type:0===t?"VALID":"NUMBER"};var f=yt([e,n,1],a,1,r,t,u);l=f[0],c=f[1]}else if("same"===t){var h=((l=Math.ceil(e/r))-1)*r+a-e,p=((c=Math.ceil(n/o))-1)*o+i-n,d=Math.floor(h/2),m=h-d,v=Math.floor(p/2);s={top:d,bottom:m,left:v,right:p-v,type:"SAME"}}else{if("valid"!==t)throw Error("Unknown padding parameter: "+t);s={top:0,bottom:0,left:0,right:0,type:"VALID"},l=Math.ceil((e-a+1)/r),c=Math.ceil((n-i+1)/o)}return{padInfo:s,outHeight:l,outWidth:c}}function St(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 Rt(t){return"number"==typeof t?[t,t]:t}function kt(t){var e=Rt(t),n=e[0],r=e[1];return 1===n&&1===r}function Ct(t,e){return kt(t)||kt(e)}function Tt(t,e,n){if(void 0===n&&(n=null),0===t.rank)return t.abs();if(1!==t.rank&&null===n)return Tt(t.reshape([-1]),e,n);if(1===t.rank||"number"==typeof n||n instanceof Array&&1===n.length){if(1===e)return t.abs().sum(n);if(e===1/0)return t.abs().max(n);if(e===-1/0)return t.abs().min(n);if("euclidean"===e||2===e)return t.abs().pow(Li(2,"int32")).sum(n).sqrt();throw new Error("Error in norm: invalid ord value: "+e)}if(n instanceof Array&&2===n.length){if(1===e)return t.abs().sum(n[0]).max(n[1]-1);if(e===1/0)return t.abs().sum(n[1]).max(n[0]);if(e===-1/0)return t.abs().sum(n[1]).min(n[0]);if("fro"===e||"euclidean"===e)return t.square().sum(n).sqrt();throw new Error("Error in norm: invalid ord value: "+e)}throw new Error("Error in norm: invalid axis: "+n)}function At(t,e,n){p(t.rank===e.length,"Error in slice"+t.rank+"D: Length of begin "+e+" must match the rank of the array ("+t.rank+")."),p(t.rank===n.length,"Error in slice"+t.rank+"D: Length of size "+n+" must match the rank of the array ("+t.rank+").");for(var r=0;r<t.rank;++r)p(e[r]+n[r]<=t.shape[r],"Error in slice"+t.rank+"D: begin["+r+"] + size["+r+"] ("+(e[r]+n[r])+") would overflow input.shape["+r+"] ("+t.shape[r]+")")}function Dt(t,e,n,r,o,a){void 0===o&&(o=0),void 0===a&&(a=0);for(var i=[],u=[],s=0;s<t.length;s++)i[s]=It(o,e,r,t,s),u[s]=Mt(a,n,r,t,s);var l=new Array(t.length).fill(0);return l=l.map(function(t,e){for(var n=0,o=i[e];!(r[e]>0?o>=u[e]:o<=u[e]);o+=r[e])n+=1;return n}),[i,l]}function It(t,e,n,r,o){var a=e[o];t&1<<o&&(a=n[o]>0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var i=r[o];return a<0&&(a+=i),a=f(0,a,i-1)}function Mt(t,e,n,r,o){var a=e[o];t&1<<o&&(a=n[o]>0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var i=r[o];return a<0&&(a+=i),a=n[o]>0?f(0,a,i):f(-1,a,i-1)}function Nt(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 Ot(t){if(t.filter(function(t){return null==t}).length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.")}function _t(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++){h=(m=t[a]).inputs;for(var i in h){for(var u=h[i],s=!1,l=0;l<e.length;l++)if(r[u.id]){r[m.output.id]=!0,s=!0,o[m.id]=!0;break}if(s)break}}var c={};c[n.id]=!0;for(var f={},a=t.length-1;a>=0;a--){var h=(m=t[a]).inputs,p=[];p.push(m.output);for(l=0;l<p.length;l++)if(c[p[l].id]){for(var i in h)c[h[i].id]=!0,f[m.id]=!0;break}}for(var d=[],a=0;a<t.length;a++){var m=t[a];if(o[m.id]&&f[m.id]){var v={};for(var i in m.inputs){var g=m.inputs[i];r[g.id]&&(v[i]=g)}var y=Object.assign({},m);y.inputs=v,y.output=m.output,d.push(y)}}return d}function Bt(t,e){for(var n=e.length-1;n>=0;n--){var r=e[n],o=t[r.output.id];if(null==r.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+r.name+".");var a=r.gradient(o);for(var i in r.inputs){if(!(i in a))throw new Error("Cannot backprop through input "+i+". Available gradients found: "+Object.keys(a)+".");var u=a[i](),s=r.inputs[i];if(!x(u.shape,s.shape))throw new Error("Error in gradient for op "+r.name+". The gradient of input '"+i+"' has shape '"+u.shape+"', which does not match the shape of the input '"+s.shape+"'");if(null==t[s.id])t[s.id]=u;else{var l=t[s.id];t[s.id]=l.add(u),l.dispose()}}}}function Lt(t,e){return null!=t.getExtension(e)}function Ft(t){if(0===t)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");var e=document.createElement("canvas");return 1===t?e.getContext("webgl")||e.getContext("experimental-webgl"):e.getContext("webgl2")}function Pt(t){if(null!=t){var e=t.getExtension("WEBGL_lose_context");if(null==e)throw new Error("Extension WEBGL_lose_context not supported on this browser.");e.loseContext()}}function Ut(t){var e=Ft(t);return null!=e&&(Pt(e),!0)}function zt(t){if(0===t)return 0;var e,n=Ft(t);return e=Lt(n,"EXT_disjoint_timer_query_webgl2")&&2===t?2:Lt(n,"EXT_disjoint_timer_query")?1:0,null!=n&&Pt(n),e}function Vt(t){if(0===t)return!1;var e=Ft(t);if(1===t){if(!Lt(e,"OES_texture_float"))return!1}else if(!Lt(e,"EXT_color_buffer_float"))return!1;var n=e.createFramebuffer(),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);var o=2===t?e.RGBA32F:e.RGBA;e.texImage2D(e.TEXTURE_2D,0,o,1,1,0,e.RGBA,e.FLOAT,null),e.bindFramebuffer(e.FRAMEBUFFER,n),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);var a=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;e.readPixels(0,0,1,1,e.RGBA,e.FLOAT,new Float32Array(4));var i=e.getError()===e.NO_ERROR;return Pt(e),a&&i}function Wt(t){if(t>0)return!1;if(2!==t)return!1;var e=Ft(t),n=Lt(e,"WEBGL_get_buffer_sub_data_async");return Pt(e),n}function Gt(){var t={};if("undefined"==typeof window||void 0===window.location)return t;var e=k(window.location.search);if(Tu in e){var n={};e[Tu].split(",").forEach(function(t){var e=t.split(":"),r=e[0],o=e[1];n[r]=o}),ku.forEach(function(e){e.name in n&&(console.log("Setting feature override from URL "+e.name+": "+n[e.name]),e.type===Gr.NUMBER?t[e.name]=+n[e.name]:e.type===Gr.BOOLEAN?t[e.name]="true"===n[e.name]:e.type===Gr.STRING?t[e.name]=n[e.name]:console.warn("Unknown URL param: "+e.name+"."))})}return t}function qt(){var t;if("undefined"!=typeof window)t=window;else{if("undefined"==typeof global)throw new Error("Could not find a global object");t=global}return t}function Ht(t){return t<=Iu?t:jt(t,Math.floor(Math.sqrt(t)))}function jt(t,e){for(var n=e;n<t;++n)if(t%n==0)return n;return t}function Xt(t,e,n){if(!N(t.dtype,e))return uu.make(t.shape,{dataId:t.dataId},e);if("int32"===e)return n.int(t);if("bool"===e)return n.notEqual(t,Ir.scalar(0,t.dtype));throw new Error("Error in Cast: unknown dtype argument ("+e+")")}function Kt(t,e){return uu.make(e,{dataId:t.dataId},t.dtype)}function Qt(t,e){return[e,t]}function Yt(t,e){return t*e}function Jt(t,e){return[4*e,t]}function Zt(t,e){if(t%e!=0)throw new Error("unpackedSize ("+t+") must be a multiple of "+e);return t/e}function $t(t,e,n){var r=Yt(t.length,n);if(e.length<r)throw new Error("unpackedArray length ("+e.length+") must be >= "+r);for(var o=0,a=0;a<t.length;++a)e[o]=t[a],o+=n}function te(t){for(var e=new Uint8Array(4*t.length),n=0;n<e.length;n+=4)!function(n){var r=t[n/4];if(isNaN(r))return e[n]=Hu,e[n+1]=Hu,e[n+2]=Hu,e[n+3]=Hu,"continue";var o=(r-Vu)/Wu,a=qu.map(function(t){return t*o}).map(function(t){return Math.floor(t%1*255)});e[n]=Math.floor(o),e[n+1]=a[0],e[n+2]=a[1],e[n+3]=a[2]}(n);return e}function ee(t){for(var e=new Float32Array(t.length/4),n=0;n<t.length;n+=4)!function(n){if(t[n]===Hu&&t[n+1]===Hu&&t[n+2]===Hu&&t[n+3]===Hu)return e[n/4]=NaN,"continue";var r=0;Gu.forEach(function(e,o){r+=e*t[n+o]});var o=r*Wu+Vu;e[n/4]=o}(n);return e}function ne(t,e,n){var r=Zt(t.length,n);if(e.length<r)throw new Error("matrix length ("+e.length+") must be >= "+r);for(var o=0,a=0;a<t.length;a+=n)e[o++]=t[a]}function re(t,e,n){var r=t.length*n/4;if(e.length<r)throw new Error("matrix length ("+e.length+") must be >= "+r);for(var o=0,a=0;a<t.length;a+=4)for(var i=0;i<n;i++)e[o++]=t[a+i]}function oe(t,e){return[Math.ceil(e/2),Math.ceil(t/2)]}function ae(t,e){var n=oe(t,e);return n[0]*n[1]*4}function ie(t,e,n,r){var o=ae(e,n);if(r.length<o)throw new Error("packedRGBA length ("+r.length+") must be >= "+o);for(var a=oe(e,n),i=a[0],u=a[1],s=n%2==1,l=e%2==1,c=Math.floor(n/2),f=Math.floor(e/2),h=s?4:0,p=n,d=0,m=0;m<f;++m){for(var v=2*m*n,g=0;g<c;++g){y=v+2*g;r[d]=t[y],r[d+1]=t[y+1],r[d+2]=t[y+p],r[d+3]=t[y+p+1],d+=4}d+=h}if(s)for(var y=n-1,d=4*(i-1),x=2*n,h=4*i,m=0;m<f;++m)r[d]=t[y],r[d+2]=t[y+n],y+=x,d+=h;if(l)for(var y=(e-1)*n,d=(u-1)*i*4,g=0;g<c;++g)r[d++]=t[y++],r[d++]=t[y++],d+=2;return s&&l&&(r[r.length-4]=t[t.length-1]),r}function ue(t,e,n,r){var o=e*n;if(o<r.length)throw new Error("matrix length ("+r.length+") must be >= "+o);for(var a=n%2==1,i=e%2==1,u=Math.floor(n/2),s=Math.floor(e/2),l=oe(e,n),c=l[0],f=l[1],h=a?4:0,p=n+(a?1:0),d=0,m=0,v=n,g=0;g<s;++g){for(x=0;x<u;++x)r[m++]=t[d++],r[m++]=t[d++],r[v++]=t[d++],r[v++]=t[d++];d+=h,m+=p,v+=p}if(a)for(var d=4*(c-1),y=n-1,h=4*c,p=2*n,g=0;g<s;++g)r[y]=t[d],r[y+n]=t[d+2],d+=h,y+=p;if(i)for(var d=(f-1)*c*4,y=(e-1)*n,x=0;x<u;++x)r[y++]=t[d++],r[y++]=t[d++],d+=2;return a&&i&&(r[r.length-1]=t[t.length-4]),r}function se(t,e,n,r){var o=le(),a=ce(),i=t.map(function(t){return"uniform sampler2D "+t.name+";"}).join("\n"),u=t.map(function(t){return he(t,e,r)}).join("\n"),s=e.texShape,l=pe(e.logicalShape,s);return[Yu,o,a,i,l,u,n].join("\n")}function le(){return Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")?Ku:ju}function ce(){return Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")?Qu:Xu}function fe(t){var e=t.shapeInfo.logicalShape;switch(e.length){case 0:return ye(t);case 1:return xe(t);case 2:return we(t);case 3:return be(t);case 4:return Ee(t);default:throw new Error(e.length+"-D input sampling is not yet supported")}}function he(t,e,n){var r=Se(t);return r+=fe(t),(n||x(t.shapeInfo.logicalShape,e.logicalShape))&&(r+=ke(t,e,n)),r}function pe(t,e){switch(t.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return de(t,e);case 2:return ge(t,e);case 3:return me(t,e);case 4:return ve(t,e);default:throw new Error(t.length+"-D output sampling is not yet supported")}}function de(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 "}function me(t,e){var n=t[1]*t[2],r=t[2];return"\n ivec3 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 / "+n+";\n index -= r * "+n+";\n int c = index / "+r+";\n int d = index - c * "+r+";\n return ivec3(r, c, d);\n }\n "}function ve(t,e){var n=t[3],r=t[2]*n,o=t[1]*r;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 int r = index / "+o+";\n index -= r * "+o+";\n\n int c = index / "+r+";\n index -= c * "+r+";\n\n int d = index / "+n+";\n int d2 = index - d * "+n+";\n\n return ivec4(r, c, d, d2);\n }\n "}function ge(t,e){return x(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 "}function ye(t){var e=t.name;return"\n float "+("get"+e.charAt(0).toUpperCase()+e.slice(1))+"() {\n return sampleTexture("+e+", halfCR);\n }\n "}function xe(t){var e=t.name,n="get"+e.charAt(0).toUpperCase()+e.slice(1);return"\n float "+n+"(int index) {\n return "+n+"Flat(index);\n }\n "}function we(t){var e=t.shapeInfo.logicalShape,n=t.shapeInfo.texShape,r=t.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=n[0],i=n[1];if(x(e,n))return"\n float "+o+"(int row, int col) {\n vec2 uv = (vec2(col, row) + halfCR) / vec2("+i+".0, "+a+".0);\n return sampleTexture("+r+", uv);\n }\n ";var u=A(e),s=u.newShape,l=u.keptDims,c=s;if(c.length<e.length){var f=["row","col"];return"\n "+fe(Te(t,c))+"\n float "+o+"(int row, int col) {\n return "+o+"("+Ae(f,l)+");\n }\n "}return 1===i?"\n float "+o+"(int row, int col) {\n int index = row * "+e[1]+" + col;\n vec2 uv = vec2(0.5, (float(index) + 0.5) / "+a+".0);\n return sampleTexture("+r+", uv);\n }\n ":1===a?"\n float "+o+"(int row, int col) {\n int index = row * "+e[1]+" + col;\n vec2 uv = vec2((float(index) + 0.5) / "+i+".0, 0.5);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col) {\n vec2 uv = UVfrom2D("+a+", "+i+", "+e[1]+", row, col);\n return sampleTexture("+r+", uv);\n }\n"}function be(t){var e=t.shapeInfo.texShape,n=t.shapeInfo.logicalShape,r=t.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=e[0],i=e[1],u=n[1]*n[2],s=n[2],l=A(n),c=l.newShape,f=l.keptDims,h=c;if(h.length<n.length){var p=["row","col","depth"];return"\n "+fe(Te(t,h))+"\n float "+o+"(int row, int col, int depth) {\n return "+o+"("+Ae(p,f)+");\n }\n "}return i===u?"\n float "+o+"(int row, int col, int depth) {\n int texR = row;\n int texC = col * "+s+" + depth;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+i+".0, "+a+".0);\n return sampleTexture("+r+", uv);\n }\n ":i===s?"\n float "+o+"(int row, int col, int depth) {\n int texR = row * "+n[1]+" + col;\n int texC = depth;\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2("+i+".0, "+a+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth) {\n vec2 uv = UVfrom3D(\n "+a+", "+i+", "+u+", "+s+", row, col, depth);\n return sampleTexture("+r+", uv);\n }\n "}function Ee(t){var e=t.shapeInfo.logicalShape,n=t.shapeInfo.texShape,r=t.name,o="get"+r.charAt(0).toUpperCase()+r.slice(1),a=n[0],i=n[1],u=e[3],s=e[2]*u,l=e[1]*s,c=A(e),f=c.newShape,h=c.keptDims;if(f.length<e.length){var p=["row","col","depth","depth2"];return"\n "+fe(Te(t,f))+"\n float "+o+"(int row, int col, int depth, int depth2) {\n return "+o+"("+Ae(p,h)+");\n }\n "}return i===l?"\n float "+o+"(int row, int col, int depth, int depth2) {\n int texR = row;\n int texC = col * "+s+" + depth * "+u+" + depth2;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+i+".0, "+a+".0);\n return sampleTexture("+r+", uv);\n }\n ":i===u?"\n float "+o+"(int row, int col, int depth, int depth2) {\n int texR = row * "+e[1]*e[2]+" + col * "+e[2]+" + depth;\n int texC = depth2;\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+i+".0, "+a+".0);\n return sampleTexture("+r+", uv);\n }\n ":"\n float "+o+"(int row, int col, int depth, int depth2) {\n vec2 uv = UVfrom4D("+a+", "+i+", "+l+", "+s+",\n "+u+", row, col, depth, depth2);\n return sampleTexture("+r+", uv);\n }\n "}function Se(t){var e=t.name,n=t.shapeInfo.texShape,r="get"+e.charAt(0).toUpperCase()+e.slice(1)+"Flat",o=n[0],a=n[1];return 1===a&&1===o?"\n float "+r+"(int index) {\n return sampleTexture("+e+", halfCR);\n }\n ":1===a?"\n float "+r+"(int index) {\n vec2 uv = vec2(0.5, (float(index) + 0.5) / "+o+".0);\n return sampleTexture("+e+", uv);\n }\n ":1===o?"\n float "+r+"(int index) {\n vec2 uv = vec2((float(index) + 0.5) / "+a+".0, 0.5);\n return sampleTexture("+e+", uv);\n }\n ":"\n float "+r+"(int index) {\n vec2 uv = UVfrom1D("+o+", "+a+", index);\n return sampleTexture("+e+", uv);\n }\n "}function Re(t,e,n,r){var o=t.shapeInfo.logicalShape.length,a=e.logicalShape.length,i="int";2===a?i="ivec2":3===a?i="ivec3":4===a&&(i="ivec4");var u,s=lt(t.shapeInfo.logicalShape,e.logicalShape),l=a-o;u=0===o?"":a<2&&s.length>=1?"coords = 0;":s.map(function(t){return"coords["+(t+l)+"] = 0;"}).join("\n");var c="";return c=a<2&&o>0?"coords":t.shapeInfo.logicalShape.map(function(t,e){return"coords["+(e+l)+"]"}).join(", "),"\n float "+r+"() {\n "+i+" coords = getOutputCoords();\n "+u+"\n return get"+n+"("+c+");\n }\n "}function ke(t,e,n){var r=t.shapeInfo.texShape,o=t.name,a=o.charAt(0).toUpperCase()+o.slice(1),i="get"+a+"AtOutCoords",u=lt(t.shapeInfo.logicalShape,e.logicalShape),s=t.shapeInfo.logicalShape.length,l=e.logicalShape.length,c=n&&(l>s||u.length>0),f=ft(u);if(c&&!f)return Re(t,e,a,i);var h=e.texShape;if(x(r,h))return"\n float "+i+"() {\n return sampleTexture("+o+", resultUV);\n }\n ";var p=y(r),d="";return c&&f&&(d="\n int mainPart = index / "+p+";\n index -= mainPart * "+p+";\n "),"\n float "+i+"() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+h[0]+", "+h[1]+"));\n int index = resTexRC.x * "+h[1]+" + resTexRC.y;\n "+d+"\n int texR = index / "+r[1]+";\n int texC = index - texR * "+r[1]+";\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2("+r[1]+".0, "+r[0]+".0);\n\n return sampleTexture("+o+", uv);\n }\n "}function Ce(t){if(t<=1)return"int";if(2===t)return"ivec2";if(3===t)return"ivec3";if(4===t)return"ivec4";throw Error("GPU for rank "+t+" is not yet supported")}function Te(t,e){var n=JSON.parse(JSON.stringify(t));return n.shapeInfo.logicalShape=e,n}function Ae(t,e){return e.map(function(e){return t[e]}).join(", ")}function De(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")}function Ie(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")}function Me(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()}function Ne(t){var e=document.createElement("canvas");return e.width=1,e.height=1,Oe(e,t)}function Oe(t,e){var n,r=Au.get("WEBGL_VERSION");if(2===r?n=t.getContext("webgl2",e):1===r&&(n=t.getContext("webgl",e)||t.getContext("experimental-webgl",e)),0===r||null==n)throw new Error("This browser does not support WebGL.");return n}function _e(t,e){var n=e();return Le(t),n}function Be(t){es=t}function Le(t){if(es){var e=t.getError();if(e!==t.NO_ERROR)throw new Error("WebGL Error: "+Fe(t,e))}}function Fe(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 Pe(t,e){return sn(t,function(){return t.getExtension(e)},'Extension "'+e+'" not supported on this browser.')}function Ue(t,e){var n=sn(t,function(){return t.createShader(t.VERTEX_SHADER)},"Unable to create vertex WebGLShader.");if(_e(t,function(){return t.shaderSource(n,e)}),_e(t,function(){return t.compileShader(n)}),!1===t.getShaderParameter(n,t.COMPILE_STATUS))throw console.log(t.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function ze(t,e){var n=sn(t,function(){return t.createShader(t.FRAGMENT_SHADER)},"Unable to create fragment WebGLShader.");if(_e(t,function(){return t.shaderSource(n,e)}),_e(t,function(){return t.compileShader(n)}),!1===t.getShaderParameter(n,t.COMPILE_STATUS))throw Ve(e,t.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}function Ve(t,e){var n=ns.exec(e);if(null==n)return console.log("Couldn't parse line number in error: "+e),void console.log(t);for(var r=+n[1],o=t.split("\n"),a=o.length.toString().length+2,i=o.map(function(t,e){return S((e+1).toString(),a)+t}),u=0,s=0;s<i.length;s++)u=Math.max(i[s].length,u);var l=i.slice(0,r-1),c=i.slice(r-1,r),f=i.slice(r);console.log(l.join("\n")),console.log(e.split("\n")[0]),console.log("%c "+S(c[0],u),"border:1px solid red; background-color:#e3d2d2; color:#a61717"),console.log(f.join("\n"))}function We(t){return sn(t,function(){return t.createProgram()},"Unable to create WebGLProgram.")}function Ge(t,e){if(_e(t,function(){return t.linkProgram(e)}),!1===t.getProgramParameter(e,t.LINK_STATUS))throw console.log(t.getProgramInfoLog(e)),new Error("Failed to link vertex and fragment shaders.")}function qe(t,e){if(_e(t,function(){return t.validateProgram(e)}),!1===t.getProgramParameter(e,t.VALIDATE_STATUS))throw console.log(t.getProgramInfoLog(e)),new Error("Shader program validation failed.")}function He(t,e){var n=sn(t,function(){return t.createBuffer()},"Unable to create WebGLBuffer");return _e(t,function(){return t.bindBuffer(t.ARRAY_BUFFER,n)}),_e(t,function(){return t.bufferData(t.ARRAY_BUFFER,e,t.STATIC_DRAW)}),n}function je(t,e){var n=sn(t,function(){return t.createBuffer()},"Unable to create WebGLBuffer");return _e(t,function(){return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n)}),_e(t,function(){return t.bufferData(t.ELEMENT_ARRAY_BUFFER,e,t.STATIC_DRAW)}),n}function Xe(t){return null!=ts?ts:ts=_e(t,function(){return t.getParameter(t.MAX_TEXTURE_SIZE)})}function Ke(){return Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")&&2===Au.get("WEBGL_VERSION")?1:4}function Qe(t){return sn(t,function(){return t.createTexture()},"Unable to create WebGLTexture.")}function Ye(t,e,n){var r=Xe(t);if(e<=0||n<=0){o="["+e+"x"+n+"]";throw new Error("Requested texture size "+o+" is invalid.")}if(e>r||n>r){var o="["+e+"x"+n+"]",a="["+r+"x"+r+"]";throw new Error("Requested texture size "+o+" greater than WebGL maximum on this browser / GPU "+a+".")}}function Je(t){return sn(t,function(){return t.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function Ze(t,e,n,r,o,a,i){var u=t.getAttribLocation(e,n);return-1!==u&&(_e(t,function(){return t.bindBuffer(t.ARRAY_BUFFER,r)}),_e(t,function(){return t.vertexAttribPointer(u,o,t.FLOAT,!1,a,i)}),_e(t,function(){return t.enableVertexAttribArray(u)}),!0)}function $e(t,e,n){ln(t,n),_e(t,function(){return t.activeTexture(t.TEXTURE0+n)}),_e(t,function(){return t.bindTexture(t.TEXTURE_2D,e)})}function tn(t,e,n){return sn(t,function(){return t.getUniformLocation(e,n)},'uniform "'+n+'" not present in program.')}function en(t,e,n){return t.getUniformLocation(e,n)}function nn(t,e,n,r,o){_e(t,function(){return $e(t,n,o)}),_e(t,function(){return t.uniform1i(r,o)})}function rn(t,e,n){_e(t,function(){return t.bindFramebuffer(t.FRAMEBUFFER,n)}),_e(t,function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0)})}function on(t,e){_e(t,function(){return t.bindFramebuffer(t.FRAMEBUFFER,e)}),_e(t,function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,null,0)})}function an(t){var e=t.checkFramebufferStatus(t.FRAMEBUFFER);if(e!==t.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+un(t,e))}function un(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 sn(t,e,n){var r=_e(t,function(){return e()});if(null==r)throw new Error(n);return r}function ln(t,e){var n=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=e+t.TEXTURE0;if(r<t.TEXTURE0||r>n){var o="[gl.TEXTURE0, gl.TEXTURE"+n+"]";throw new Error("textureUnit must be in "+o+".")}}function cn(t,e){2!==e.length&&(e=A(e).newShape);var n=Xe(t),r=y(e);return e.length<=1&&r<=n?[r,1]:2===e.length&&e[0]<=n&&e[1]<=n?e:3===e.length&&e[0]<=n&&e[1]*e[2]<=n?[e[0],e[1]*e[2]]:4===e.length&&e[0]<=n&&e[1]*e[2]*e[3]<=n?[e[0],e[1]*e[2]*e[3]]:E(r)}function fn(){return{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0}}function hn(t){var e,n=fn();return e=null!=t?Oe(t,n):Ne(n),_e(e,function(){return e.disable(e.DEPTH_TEST)}),_e(e,function(){return e.disable(e.STENCIL_TEST)}),_e(e,function(){return e.disable(e.BLEND)}),_e(e,function(){return e.disable(e.DITHER)}),_e(e,function(){return e.disable(e.POLYGON_OFFSET_FILL)}),_e(e,function(){return e.disable(e.SAMPLE_COVERAGE)}),_e(e,function(){return e.enable(e.SCISSOR_TEST)}),_e(e,function(){return e.enable(e.CULL_FACE)}),_e(e,function(){return e.cullFace(e.BACK)}),e}function pn(t){return Ue(t,"\n precision highp float;\n attribute vec3 clipSpacePos;\n attribute vec2 uv;\n varying vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function dn(t){return He(t,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function mn(t){return je(t,new Uint16Array([0,1,2,2,1,3]))}function vn(t,e){return Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")&&2===Au.get("WEBGL_VERSION")?4===e?t.RGBA32F:t.R32F:t.RGBA}function gn(t,e){return Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")&&2===Au.get("WEBGL_VERSION")?4===e?t.RGBA:t.RED:t.RGBA}function yn(t){return Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")?t.FLOAT:t.UNSIGNED_BYTE}function xn(t,e,n,r){Ye(t,e,n);var o=Qe(t),a=t.TEXTURE_2D,i=vn(t,r),u=gn(t,r);return _e(t,function(){return t.bindTexture(a,o)}),_e(t,function(){return t.texParameteri(a,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE)}),_e(t,function(){return t.texParameteri(a,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}),_e(t,function(){return t.texParameteri(a,t.TEXTURE_MIN_FILTER,t.NEAREST)}),_e(t,function(){return t.texParameteri(a,t.TEXTURE_MAG_FILTER,t.NEAREST)}),_e(t,function(){return t.texImage2D(a,0,i,e,n,0,u,yn(t),null)}),_e(t,function(){return t.bindTexture(t.TEXTURE_2D,null)}),o}function wn(t,e,n){var r=Qt(e,n);return xn(t,r[0],r[1],1)}function bn(t,e,n){var r=oe(e,n);return xn(t,r[0],r[1],4)}function En(t,e,n){return _e(t,function(){return t.bindBuffer(t.ARRAY_BUFFER,n)}),Ze(t,e,"clipSpacePos",n,3,20,0)&&Ze(t,e,"uv",n,2,20,12)}function Sn(t,e,n){_e(t,function(){return t.bindTexture(t.TEXTURE_2D,e)}),_e(t,function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,n)}),_e(t,function(){return t.bindTexture(t.TEXTURE_2D,null)})}function Rn(t,e,n,r,o,a){var i=gn(t,a);Ye(t,n,r),_e(t,function(){return t.bindTexture(t.TEXTURE_2D,e)}),_e(t,function(){return t.texSubImage2D(t.TEXTURE_2D,0,0,0,n,r,i,yn(t),o)}),_e(t,function(){return t.bindTexture(t.TEXTURE_2D,null)})}function kn(t,e,n,r,o,a){var i,u=Qt(n,r),s=u[0],l=u[1];if(Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")){var c=1===a?Ke():a;1===c?i=o:$t(o,i=new Float32Array(Yt(o.length,c)),c)}else i=te(o);Rn(t,e,s,l,i,a)}function Cn(t,e,n,r,o){var a=oe(n,r),i=a[0],u=a[1],s=new Float32Array(ae(n,r));ie(o,n,r,s);Rn(t,e,i,u,s,4)}function Tn(t,e,n){return Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")?new Float32Array(Yt(t*e,n)):new Uint8Array(t*e*n)}function An(t,e,n,r){if(Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")){var o=new Float32Array(e*n);return ne(t,o,r),o}return ee(t)}function Dn(t,e,n,r){return o(this,void 0,void 0,function(){var o,i,u,s,l;return a(this,function(a){switch(a.label){case 0:return o=t,i=4,u=Tn(n,r,i),s=u instanceof Float32Array?4*u.length:u,l=t.createBuffer(),_e(t,function(){return t.bindBuffer(o.PIXEL_PACK_BUFFER,l)}),_e(t,function(){return t.bufferData(o.PIXEL_PACK_BUFFER,s,t.STATIC_DRAW)}),_e(t,function(){return o.readPixels(0,0,r,n,t.RGBA,yn(t),0)}),[4,e.getBufferSubDataAsync(o.PIXEL_PACK_BUFFER,0,u)];case 1:return a.sent(),[2,An(u,n,r,i)]}})})}function In(t,e,n){var r=Qt(e,n),o=r[0],a=r[1],i=Tn(e,n,4);return _e(t,function(){return t.readPixels(0,0,o,a,t.RGBA,yn(t),i)}),An(i,e,n,4)}function Mn(t,e,n,r){var o=e*n*4,a=new Uint8Array(o);_e(t,function(){return t.readPixels(0,0,n,e,t.RGBA,t.UNSIGNED_BYTE,a)});for(var i=new Float32Array(o),u=0;u<a.length;u++)i[u]=a[u];var s=new Float32Array(e*n*r);return re(i,s,r),s}function Nn(t,e,n){var r=oe(e,n),o=r[0],a=r[1],i=new Float32Array(ae(e,n));_e(t,function(){return t.readPixels(0,0,o,a,t.RGBA,yn(t),i)});var u=new Float32Array(e*n);return ue(i,e,n,u)}function On(){return!Au.get("WEBGL_FLOAT_TEXTURE_ENABLED")}function _n(t,e,n,r){for(var o=e.userCode,a=n.map(function(t,n){var r={logicalShape:t.tensor.shape,texShape:t.texData.texShape};return{name:e.variableNames[n],shapeInfo:r}}),i=a.map(function(t){return t.shapeInfo}),u={logicalShape:r.tensor.shape,texShape:r.texData.texShape},s=se(a,u,o,!0===e.supportsBroadcasting),l=t.createProgram(s),c={},f=0;f<e.variableNames.length;f++){var h=e.variableNames[f];c[h]=t.getUniformLocation(l,h)}if(On()){c[is]=t.getUniformLocation(l,is,!1)}return{program:e,source:s,webGLProgram:l,uniformLocations:c,gpgpu:t,inShapeInfos:i,outShapeInfo:u}}function Bn(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=t.texShape,a=e[n].tensor.shape,i=e[n].texData.texShape;if(!x(r,a))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+a+" must match");if(!x(o,i))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+o+" and "+i+" must match")})}function Ln(t,e,n,r){Bn(t.inShapeInfos,e),Bn([t.outShapeInfo],[n]);var o=n.texData.texture,a=n.texData.texShape,i=t.gpgpu;i.setOutputMatrixTexture(o,a[0],a[1]),i.setProgram(t.webGLProgram),e.forEach(function(e,n){var r=e.texData.texture,o=t.program.variableNames[n],a=t.uniformLocations[o];i.setInputMatrixTexture(r,a,n)}),On()&&i.gl.uniform1f(t.uniformLocations[is],NaN),null!=r&&r(i,t.webGLProgram),i.executeProgram()}function Fn(t,e,n){var r="";e.concat(n).forEach(function(t){r+=t.tensor.shape+"_"+t.texData.texShape});var o=t.userCode,a=(!0===t.supportsBroadcasting).toString(),i=t.constructor.name;return i+="_"+a+"_"+r+"_"+o}function Pn(t){if(1===t)return"sourceLoc";if(2===t)return"sourceLoc.x, sourceLoc.y";if(3===t)return"sourceLoc.x, sourceLoc.y, sourceLoc.z";if(4===t)return"sourceLoc.x, sourceLoc.y, sourceLoc.z, sourceLoc.w";throw Error("Slicing for rank "+t+" is not yet supported")}function Un(t,e){return t[0]+"_"+t[1]+"_"+e}function zn(t){var e=t.length;if(e>4)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"],r=[],o=0;o<t.length;o++)r.push("imod("+n[o]+", "+t[o]+")");return r.join()}function Vn(t){var e=t.length;if(e>4)throw Error("Transpose for rank "+e+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w"],r=new Array(e),o=0;o<t.length;o++)r[t[o]]=n[o];return r.join()}function Wn(t){return void 0===t&&(t=0),Cs+"\n return x > 0.0 ? 1.0 : float("+t+");\n "}function Gn(t,e){if("float32"===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)}function qn(t,e){return t instanceof Float32Array?t:new Float32Array(t)}function Hn(t){if(null===t)throw new Error("Invalid input value: "+JSON.stringify(t));var e=0;t.forEach(function(t){if(t instanceof Float32Array||t instanceof Int32Array)e+=4*t.length;else{if(!(t instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+t.constructor.name);e+=t.length}});var n=new Uint8Array(e),r=0;return t.forEach(function(t){n.set(new Uint8Array(t.buffer),r),t instanceof Float32Array||t instanceof Int32Array?r+=4*t.length:r+=t.length}),n.buffer}function jn(t){return new Blob([t]).size}function Xn(t){return btoa(String.fromCharCode.apply(null,new Uint8Array(t)))}function Kn(t){for(var e=atob(t),n=new Uint8Array(e.length),r=0;r<e.length;++r)n.set([e.charCodeAt(r)],r);return n.buffer}function Qn(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 Yn(t){for(t=t.trim();t.endsWith("/");)t=t.slice(0,t.length-1);var e=t.split("/");return e[e.length-1]}function Jn(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:jn(JSON.stringify(t.modelTopology)),weightSpecsBytes:null==t.weightSpecs?0:jn(JSON.stringify(t.weightSpecs)),weightDataBytes:null==t.weightData?0:t.weightData.byteLength}}function Zn(t){if(-1===t.indexOf(_s))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+Bs.getSchemes().join(","));return{scheme:t.split(_s)[0],path:t.split(_s)[1]}}function $n(t,e,n){return void 0===n&&(n=!1),o(this,void 0,void 0,function(){var r,o,i,u,s,l,c,f,h;return a(this,function(a){switch(a.label){case 0:return p(t!==e,"Old path and new path are the same: '"+t+"'"),r=Os.getLoadHandlers(t),p(r.length>0,"Copying failed because no load handler is found for source URL "+t+"."),p(r.length<2,"Copying failed because more than one ("+r.length+") load handlers for source URL "+t+"."),o=r[0],i=Os.getSaveHandlers(e),p(i.length>0,"Copying failed because no save handler is found for destination URL "+e+"."),p(i.length<2,"Copying fail