esp-idf-provisioning-web 0.0.2 → 0.0.3
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/dist/ESPDevice.d.ts +7 -7
- package/dist/ESPDevice.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -0
- package/dist/index.es.js +14 -14
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +10 -3
package/dist/ESPDevice.d.ts
CHANGED
|
@@ -35,6 +35,13 @@ export declare class ESPDevice implements ESPDeviceInterface {
|
|
|
35
35
|
* @returns WiFi status
|
|
36
36
|
*/
|
|
37
37
|
fetchWifiStatus(): Promise<ESPWifiStatus>;
|
|
38
|
+
/**
|
|
39
|
+
* Send custom data to device
|
|
40
|
+
* @param path - Data endpoint path
|
|
41
|
+
* @param data - Data to send
|
|
42
|
+
* @returns Response data from device
|
|
43
|
+
*/
|
|
44
|
+
sendData(path: string, data: Uint8Array): Promise<Uint8Array>;
|
|
38
45
|
/**
|
|
39
46
|
* Disconnect from device
|
|
40
47
|
*/
|
|
@@ -55,12 +62,5 @@ export declare class ESPDevice implements ESPDeviceInterface {
|
|
|
55
62
|
* Initialize transport layer based on transport type
|
|
56
63
|
*/
|
|
57
64
|
private initializeTransport;
|
|
58
|
-
/**
|
|
59
|
-
* Send custom data to device
|
|
60
|
-
* @param path - Data endpoint path
|
|
61
|
-
* @param data - Data to send
|
|
62
|
-
* @returns Response data from device
|
|
63
|
-
*/
|
|
64
|
-
private sendData;
|
|
65
65
|
}
|
|
66
66
|
//# sourceMappingURL=ESPDevice.d.ts.map
|
package/dist/ESPDevice.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ESPDevice.d.ts","sourceRoot":"","sources":["../src/ESPDevice.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAwBjB;;GAEG;AACH,qBAAa,SAAU,YAAW,kBAAkB;IAClD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC;;;OAGG;gBACS,MAAM,EAAE,eAAe,GAAG,GAAG;IAIzC;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiC1C;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhE;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC;IAc/C;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,SAAS,IAAI,eAAe,GAAG,GAAG;IAIlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;YACW,gBAAgB;IAkB9B;;OAEG;YACW,mBAAmB;
|
|
1
|
+
{"version":3,"file":"ESPDevice.d.ts","sourceRoot":"","sources":["../src/ESPDevice.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAwBjB;;GAEG;AACH,qBAAa,SAAU,YAAW,kBAAkB;IAClD,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC,OAAO,CAAC,YAAY,CAAC,CAAW;IAEhC;;;OAGG;gBACS,MAAM,EAAE,eAAe,GAAG,GAAG;IAIzC;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1D;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAiC1C;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhE;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC;IAc/C;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBnE;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACH,SAAS,IAAI,eAAe,GAAG,GAAG;IAIlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;YACW,gBAAgB;IAkB9B;;OAEG;YACW,mBAAmB;CAYlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class Transport{}function bytesToHex(i){return Array.from(i).map(n=>n.toString(16).padStart(2,"0")).join("")}function stringToBytes(i){return new TextEncoder().encode(i)}function bytesToString(i){return new TextDecoder().decode(i)}class BLETransport extends Transport{constructor(n,t,e){super(),this.connected=!1,this.device=n,this.serviceUUID=t,this.nuLookup=e}async connect(){var n;if(!this.isConnected())try{if(this.server=await((n=this.device.gatt)==null?void 0:n.connect()),!this.server)throw new Error("Failed to connect to GATT server");try{const e=await this.server.getPrimaryServices(this.serviceUUID);if(e.length>1){const r=e.find(o=>o.uuid===this.serviceUUID);if(!r)throw new Error(`Service with UUID ${this.serviceUUID} not found`);this.service=r}else this.service=e[0]}catch(e){throw new Error(`Failed to get primary services: ${e}`)}const t=await this.service.getCharacteristics();for(const e of t){const r=await e.getDescriptors();for(const o of r){if(o.uuid.slice(4,8)!=="2901")continue;const s=await o.readValue();this.nuLookup.set(bytesToString(new Uint8Array(s.buffer)).toLowerCase(),e.uuid)}}console.debug("BLE discovered characteristics:",this.nuLookup),this.connected=!0}catch(t){throw this.connected=!1,new Error(`BLE connection failed: ${t}`)}}disconnect(){var n;(n=this.server)!=null&&n.connected&&this.server.disconnect(),this.server=void 0,this.service=void 0,this.connected=!1}async sendData(n,t){var c;if(!this.isConnected())throw new Error("Not connected to device");const e=this.nuLookup.get(n.toLowerCase());if(!e)throw new Error(`Characteristic UUID for endpoint ${n} not found`);const r=await((c=this.service)==null?void 0:c.getCharacteristic(e));if(!r)throw new Error(`Characteristic for UUID ${e} not found`);const o=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);await r.writeValueWithResponse(o);const s=await r.readValue();return new Uint8Array(s.buffer)}isConnected(){var n;return this.connected&&((n=this.server)==null?void 0:n.connected)===!0}getDevice(){return this.device}}class SoftAPTransport extends Transport{constructor(n){super(),this.connected=!1,this.baseUrl=n}async connect(){try{const n=await fetch(`${this.baseUrl}/proto-ver`,{method:"GET",mode:"cors"});if(!n.ok)throw new Error(`HTTP ${n.status}`);this.connected=!0}catch(n){throw this.connected=!1,new Error(`SoftAP connection failed. Please ensure you are connected to the device's WiFi network. Error: ${n}`)}}disconnect(){this.connected=!1}async sendData(n,t){if(!this.connected)throw new Error("Not connected to device");try{const e=await fetch(`${this.baseUrl}/${n}`,{method:"POST",headers:{Accept:"text/plain","Content-Type":"application/x-www-form-urlencoded"},body:t.buffer,mode:"cors"});if(!e.ok)throw new Error(`HTTP ${e.status}`);const r=await e.arrayBuffer();return new Uint8Array(r)}catch(e){throw new Error(`SoftAP communication failed: ${e}`)}}isConnected(){return this.connected}setBaseUrl(n){this.baseUrl=n}getBaseUrl(){return this.baseUrl}}class Security{}var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},indexMinimal={},minimal$1={},aspromise=asPromise;function asPromise(i,n){for(var t=new Array(arguments.length-1),e=0,r=2,o=!0;r<arguments.length;)t[e++]=arguments[r++];return new Promise(function(c,u){t[e]=function(a){if(o)if(o=!1,a)u(a);else{for(var f=new Array(arguments.length-1),d=0;d<f.length;)f[d++]=arguments[d];c.apply(null,f)}};try{i.apply(n||null,t)}catch(l){o&&(o=!1,u(l))}})}var base64$1={};(function(i){var n=i;n.length=function(c){var u=c.length;if(!u)return 0;for(var l=0;--u%4>1&&c.charAt(u)==="=";)++l;return Math.ceil(c.length*3)/4-l};for(var t=new Array(64),e=new Array(123),r=0;r<64;)e[t[r]=r<26?r+65:r<52?r+71:r<62?r-4:r-59|43]=r++;n.encode=function(c,u,l){for(var a=null,f=[],d=0,y=0,p;u<l;){var h=c[u++];switch(y){case 0:f[d++]=t[h>>2],p=(h&3)<<4,y=1;break;case 1:f[d++]=t[p|h>>4],p=(h&15)<<2,y=2;break;case 2:f[d++]=t[p|h>>6],f[d++]=t[h&63],y=0;break}d>8191&&((a||(a=[])).push(String.fromCharCode.apply(String,f)),d=0)}return y&&(f[d++]=t[p],f[d++]=61,y===1&&(f[d++]=61)),a?(d&&a.push(String.fromCharCode.apply(String,f.slice(0,d))),a.join("")):String.fromCharCode.apply(String,f.slice(0,d))};var o="invalid encoding";n.decode=function(c,u,l){for(var a=l,f=0,d,y=0;y<c.length;){var p=c.charCodeAt(y++);if(p===61&&f>1)break;if((p=e[p])===void 0)throw Error(o);switch(f){case 0:d=p,f=1;break;case 1:u[l++]=d<<2|(p&48)>>4,d=p,f=2;break;case 2:u[l++]=(d&15)<<4|(p&60)>>2,d=p,f=3;break;case 3:u[l++]=(d&3)<<6|p,f=0;break}}if(f===1)throw Error(o);return l-a},n.test=function(c){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(c)}})(base64$1);var eventemitter=EventEmitter;function EventEmitter(){this._listeners={}}EventEmitter.prototype.on=function(n,t,e){return(this._listeners[n]||(this._listeners[n]=[])).push({fn:t,ctx:e||this}),this};EventEmitter.prototype.off=function(n,t){if(n===void 0)this._listeners={};else if(t===void 0)this._listeners[n]=[];else for(var e=this._listeners[n],r=0;r<e.length;)e[r].fn===t?e.splice(r,1):++r;return this};EventEmitter.prototype.emit=function(n){var t=this._listeners[n];if(t){for(var e=[],r=1;r<arguments.length;)e.push(arguments[r++]);for(r=0;r<t.length;)t[r].fn.apply(t[r++].ctx,e)}return this};var float=factory(factory);function factory(i){return typeof Float32Array<"u"?function(){var n=new Float32Array([-0]),t=new Uint8Array(n.buffer),e=t[3]===128;function r(u,l,a){n[0]=u,l[a]=t[0],l[a+1]=t[1],l[a+2]=t[2],l[a+3]=t[3]}function o(u,l,a){n[0]=u,l[a]=t[3],l[a+1]=t[2],l[a+2]=t[1],l[a+3]=t[0]}i.writeFloatLE=e?r:o,i.writeFloatBE=e?o:r;function s(u,l){return t[0]=u[l],t[1]=u[l+1],t[2]=u[l+2],t[3]=u[l+3],n[0]}function c(u,l){return t[3]=u[l],t[2]=u[l+1],t[1]=u[l+2],t[0]=u[l+3],n[0]}i.readFloatLE=e?s:c,i.readFloatBE=e?c:s}():function(){function n(e,r,o,s){var c=r<0?1:0;if(c&&(r=-r),r===0)e(1/r>0?0:2147483648,o,s);else if(isNaN(r))e(2143289344,o,s);else if(r>34028234663852886e22)e((c<<31|2139095040)>>>0,o,s);else if(r<11754943508222875e-54)e((c<<31|Math.round(r/1401298464324817e-60))>>>0,o,s);else{var u=Math.floor(Math.log(r)/Math.LN2),l=Math.round(r*Math.pow(2,-u)*8388608)&8388607;e((c<<31|u+127<<23|l)>>>0,o,s)}}i.writeFloatLE=n.bind(null,writeUintLE),i.writeFloatBE=n.bind(null,writeUintBE);function t(e,r,o){var s=e(r,o),c=(s>>31)*2+1,u=s>>>23&255,l=s&8388607;return u===255?l?NaN:c*(1/0):u===0?c*1401298464324817e-60*l:c*Math.pow(2,u-150)*(l+8388608)}i.readFloatLE=t.bind(null,readUintLE),i.readFloatBE=t.bind(null,readUintBE)}(),typeof Float64Array<"u"?function(){var n=new Float64Array([-0]),t=new Uint8Array(n.buffer),e=t[7]===128;function r(u,l,a){n[0]=u,l[a]=t[0],l[a+1]=t[1],l[a+2]=t[2],l[a+3]=t[3],l[a+4]=t[4],l[a+5]=t[5],l[a+6]=t[6],l[a+7]=t[7]}function o(u,l,a){n[0]=u,l[a]=t[7],l[a+1]=t[6],l[a+2]=t[5],l[a+3]=t[4],l[a+4]=t[3],l[a+5]=t[2],l[a+6]=t[1],l[a+7]=t[0]}i.writeDoubleLE=e?r:o,i.writeDoubleBE=e?o:r;function s(u,l){return t[0]=u[l],t[1]=u[l+1],t[2]=u[l+2],t[3]=u[l+3],t[4]=u[l+4],t[5]=u[l+5],t[6]=u[l+6],t[7]=u[l+7],n[0]}function c(u,l){return t[7]=u[l],t[6]=u[l+1],t[5]=u[l+2],t[4]=u[l+3],t[3]=u[l+4],t[2]=u[l+5],t[1]=u[l+6],t[0]=u[l+7],n[0]}i.readDoubleLE=e?s:c,i.readDoubleBE=e?c:s}():function(){function n(e,r,o,s,c,u){var l=s<0?1:0;if(l&&(s=-s),s===0)e(0,c,u+r),e(1/s>0?0:2147483648,c,u+o);else if(isNaN(s))e(0,c,u+r),e(2146959360,c,u+o);else if(s>17976931348623157e292)e(0,c,u+r),e((l<<31|2146435072)>>>0,c,u+o);else{var a;if(s<22250738585072014e-324)a=s/5e-324,e(a>>>0,c,u+r),e((l<<31|a/4294967296)>>>0,c,u+o);else{var f=Math.floor(Math.log(s)/Math.LN2);f===1024&&(f=1023),a=s*Math.pow(2,-f),e(a*4503599627370496>>>0,c,u+r),e((l<<31|f+1023<<20|a*1048576&1048575)>>>0,c,u+o)}}}i.writeDoubleLE=n.bind(null,writeUintLE,0,4),i.writeDoubleBE=n.bind(null,writeUintBE,4,0);function t(e,r,o,s,c){var u=e(s,c+r),l=e(s,c+o),a=(l>>31)*2+1,f=l>>>20&2047,d=4294967296*(l&1048575)+u;return f===2047?d?NaN:a*(1/0):f===0?a*5e-324*d:a*Math.pow(2,f-1075)*(d+4503599627370496)}i.readDoubleLE=t.bind(null,readUintLE,0,4),i.readDoubleBE=t.bind(null,readUintBE,4,0)}(),i}function writeUintLE(i,n,t){n[t]=i&255,n[t+1]=i>>>8&255,n[t+2]=i>>>16&255,n[t+3]=i>>>24}function writeUintBE(i,n,t){n[t]=i>>>24,n[t+1]=i>>>16&255,n[t+2]=i>>>8&255,n[t+3]=i&255}function readUintLE(i,n){return(i[n]|i[n+1]<<8|i[n+2]<<16|i[n+3]<<24)>>>0}function readUintBE(i,n){return(i[n]<<24|i[n+1]<<16|i[n+2]<<8|i[n+3])>>>0}var inquire_1=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(i){}return null}var utf8$2={};(function(i){var n=i;n.length=function(e){for(var r=0,o=0,s=0;s<e.length;++s)o=e.charCodeAt(s),o<128?r+=1:o<2048?r+=2:(o&64512)===55296&&(e.charCodeAt(s+1)&64512)===56320?(++s,r+=4):r+=3;return r},n.read=function(e,r,o){var s=o-r;if(s<1)return"";for(var c=null,u=[],l=0,a;r<o;)a=e[r++],a<128?u[l++]=a:a>191&&a<224?u[l++]=(a&31)<<6|e[r++]&63:a>239&&a<365?(a=((a&7)<<18|(e[r++]&63)<<12|(e[r++]&63)<<6|e[r++]&63)-65536,u[l++]=55296+(a>>10),u[l++]=56320+(a&1023)):u[l++]=(a&15)<<12|(e[r++]&63)<<6|e[r++]&63,l>8191&&((c||(c=[])).push(String.fromCharCode.apply(String,u)),l=0);return c?(l&&c.push(String.fromCharCode.apply(String,u.slice(0,l))),c.join("")):String.fromCharCode.apply(String,u.slice(0,l))},n.write=function(e,r,o){for(var s=o,c,u,l=0;l<e.length;++l)c=e.charCodeAt(l),c<128?r[o++]=c:c<2048?(r[o++]=c>>6|192,r[o++]=c&63|128):(c&64512)===55296&&((u=e.charCodeAt(l+1))&64512)===56320?(c=65536+((c&1023)<<10)+(u&1023),++l,r[o++]=c>>18|240,r[o++]=c>>12&63|128,r[o++]=c>>6&63|128,r[o++]=c&63|128):(r[o++]=c>>12|224,r[o++]=c>>6&63|128,r[o++]=c&63|128);return o-s}})(utf8$2);var pool_1=pool;function pool(i,n,t){var e=t||8192,r=e>>>1,o=null,s=e;return function(u){if(u<1||u>r)return i(u);s+u>e&&(o=i(e),s=0);var l=n.call(o,s,s+=u);return s&7&&(s=(s|7)+1),l}}var longbits,hasRequiredLongbits;function requireLongbits(){if(hasRequiredLongbits)return longbits;hasRequiredLongbits=1,longbits=n;var i=requireMinimal();function n(o,s){this.lo=o>>>0,this.hi=s>>>0}var t=n.zero=new n(0,0);t.toNumber=function(){return 0},t.zzEncode=t.zzDecode=function(){return this},t.length=function(){return 1};var e=n.zeroHash="\0\0\0\0\0\0\0\0";n.fromNumber=function(s){if(s===0)return t;var c=s<0;c&&(s=-s);var u=s>>>0,l=(s-u)/4294967296>>>0;return c&&(l=~l>>>0,u=~u>>>0,++u>4294967295&&(u=0,++l>4294967295&&(l=0))),new n(u,l)},n.from=function(s){if(typeof s=="number")return n.fromNumber(s);if(i.isString(s))if(i.Long)s=i.Long.fromString(s);else return n.fromNumber(parseInt(s,10));return s.low||s.high?new n(s.low>>>0,s.high>>>0):t},n.prototype.toNumber=function(s){if(!s&&this.hi>>>31){var c=~this.lo+1>>>0,u=~this.hi>>>0;return c||(u=u+1>>>0),-(c+u*4294967296)}return this.lo+this.hi*4294967296},n.prototype.toLong=function(s){return i.Long?new i.Long(this.lo|0,this.hi|0,!!s):{low:this.lo|0,high:this.hi|0,unsigned:!!s}};var r=String.prototype.charCodeAt;return n.fromHash=function(s){return s===e?t:new n((r.call(s,0)|r.call(s,1)<<8|r.call(s,2)<<16|r.call(s,3)<<24)>>>0,(r.call(s,4)|r.call(s,5)<<8|r.call(s,6)<<16|r.call(s,7)<<24)>>>0)},n.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},n.prototype.zzEncode=function(){var s=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^s)>>>0,this.lo=(this.lo<<1^s)>>>0,this},n.prototype.zzDecode=function(){var s=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^s)>>>0,this.hi=(this.hi>>>1^s)>>>0,this},n.prototype.length=function(){var s=this.lo,c=(this.lo>>>28|this.hi<<4)>>>0,u=this.hi>>>24;return u===0?c===0?s<16384?s<128?1:2:s<2097152?3:4:c<16384?c<128?5:6:c<2097152?7:8:u<128?9:10},longbits}var hasRequiredMinimal;function requireMinimal(){return hasRequiredMinimal||(hasRequiredMinimal=1,function(i){var n=i;n.asPromise=aspromise,n.base64=base64$1,n.EventEmitter=eventemitter,n.float=float,n.inquire=inquire_1,n.utf8=utf8$2,n.pool=pool_1,n.LongBits=requireLongbits(),n.isNode=!!(typeof commonjsGlobal<"u"&&commonjsGlobal&&commonjsGlobal.process&&commonjsGlobal.process.versions&&commonjsGlobal.process.versions.node),n.global=n.isNode&&commonjsGlobal||typeof window<"u"&&window||typeof self<"u"&&self||commonjsGlobal,n.emptyArray=Object.freeze?Object.freeze([]):[],n.emptyObject=Object.freeze?Object.freeze({}):{},n.isInteger=Number.isInteger||function(o){return typeof o=="number"&&isFinite(o)&&Math.floor(o)===o},n.isString=function(o){return typeof o=="string"||o instanceof String},n.isObject=function(o){return o&&typeof o=="object"},n.isset=n.isSet=function(o,s){var c=o[s];return c!=null&&o.hasOwnProperty(s)?typeof c!="object"||(Array.isArray(c)?c.length:Object.keys(c).length)>0:!1},n.Buffer=function(){try{var r=n.inquire("buffer").Buffer;return r.prototype.utf8Write?r:null}catch{return null}}(),n._Buffer_from=null,n._Buffer_allocUnsafe=null,n.newBuffer=function(o){return typeof o=="number"?n.Buffer?n._Buffer_allocUnsafe(o):new n.Array(o):n.Buffer?n._Buffer_from(o):typeof Uint8Array>"u"?o:new Uint8Array(o)},n.Array=typeof Uint8Array<"u"?Uint8Array:Array,n.Long=n.global.dcodeIO&&n.global.dcodeIO.Long||n.global.Long||n.inquire("long"),n.key2Re=/^true|false|0|1$/,n.key32Re=/^-?(?:0|[1-9][0-9]*)$/,n.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,n.longToHash=function(o){return o?n.LongBits.from(o).toHash():n.LongBits.zeroHash},n.longFromHash=function(o,s){var c=n.LongBits.fromHash(o);return n.Long?n.Long.fromBits(c.lo,c.hi,s):c.toNumber(!!s)};function t(r,o,s){for(var c=Object.keys(o),u=0;u<c.length;++u)(r[c[u]]===void 0||!s)&&(r[c[u]]=o[c[u]]);return r}n.merge=t,n.lcFirst=function(o){return o.charAt(0).toLowerCase()+o.substring(1)};function e(r){function o(s,c){if(!(this instanceof o))return new o(s,c);Object.defineProperty(this,"message",{get:function(){return s}}),Error.captureStackTrace?Error.captureStackTrace(this,o):Object.defineProperty(this,"stack",{value:new Error().stack||""}),c&&t(this,c)}return o.prototype=Object.create(Error.prototype,{constructor:{value:o,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return r},set:void 0,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),o}n.newError=e,n.ProtocolError=e("ProtocolError"),n.oneOfGetter=function(o){for(var s={},c=0;c<o.length;++c)s[o[c]]=1;return function(){for(var u=Object.keys(this),l=u.length-1;l>-1;--l)if(s[u[l]]===1&&this[u[l]]!==void 0&&this[u[l]]!==null)return u[l]}},n.oneOfSetter=function(o){return function(s){for(var c=0;c<o.length;++c)o[c]!==s&&delete this[o[c]]}},n.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},n._configure=function(){var r=n.Buffer;if(!r){n._Buffer_from=n._Buffer_allocUnsafe=null;return}n._Buffer_from=r.from!==Uint8Array.from&&r.from||function(s,c){return new r(s,c)},n._Buffer_allocUnsafe=r.allocUnsafe||function(s){return new r(s)}}}(minimal$1)),minimal$1}var writer=Writer$1,util$4=requireMinimal(),BufferWriter$1,LongBits$1=util$4.LongBits,base64=util$4.base64,utf8$1=util$4.utf8;function Op(i,n,t){this.fn=i,this.len=n,this.next=void 0,this.val=t}function noop(){}function State(i){this.head=i.head,this.tail=i.tail,this.len=i.len,this.next=i.states}function Writer$1(){this.len=0,this.head=new Op(noop,0,0),this.tail=this.head,this.states=null}var create$1=function i(){return util$4.Buffer?function(){return(Writer$1.create=function(){return new BufferWriter$1})()}:function(){return new Writer$1}};Writer$1.create=create$1();Writer$1.alloc=function i(n){return new util$4.Array(n)};util$4.Array!==Array&&(Writer$1.alloc=util$4.pool(Writer$1.alloc,util$4.Array.prototype.subarray));Writer$1.prototype._push=function i(n,t,e){return this.tail=this.tail.next=new Op(n,t,e),this.len+=t,this};function writeByte(i,n,t){n[t]=i&255}function writeVarint32(i,n,t){for(;i>127;)n[t++]=i&127|128,i>>>=7;n[t]=i}function VarintOp(i,n){this.len=i,this.next=void 0,this.val=n}VarintOp.prototype=Object.create(Op.prototype);VarintOp.prototype.fn=writeVarint32;Writer$1.prototype.uint32=function i(n){return this.len+=(this.tail=this.tail.next=new VarintOp((n=n>>>0)<128?1:n<16384?2:n<2097152?3:n<268435456?4:5,n)).len,this};Writer$1.prototype.int32=function i(n){return n<0?this._push(writeVarint64,10,LongBits$1.fromNumber(n)):this.uint32(n)};Writer$1.prototype.sint32=function i(n){return this.uint32((n<<1^n>>31)>>>0)};function writeVarint64(i,n,t){for(;i.hi;)n[t++]=i.lo&127|128,i.lo=(i.lo>>>7|i.hi<<25)>>>0,i.hi>>>=7;for(;i.lo>127;)n[t++]=i.lo&127|128,i.lo=i.lo>>>7;n[t++]=i.lo}Writer$1.prototype.uint64=function i(n){var t=LongBits$1.from(n);return this._push(writeVarint64,t.length(),t)};Writer$1.prototype.int64=Writer$1.prototype.uint64;Writer$1.prototype.sint64=function i(n){var t=LongBits$1.from(n).zzEncode();return this._push(writeVarint64,t.length(),t)};Writer$1.prototype.bool=function i(n){return this._push(writeByte,1,n?1:0)};function writeFixed32(i,n,t){n[t]=i&255,n[t+1]=i>>>8&255,n[t+2]=i>>>16&255,n[t+3]=i>>>24}Writer$1.prototype.fixed32=function i(n){return this._push(writeFixed32,4,n>>>0)};Writer$1.prototype.sfixed32=Writer$1.prototype.fixed32;Writer$1.prototype.fixed64=function i(n){var t=LongBits$1.from(n);return this._push(writeFixed32,4,t.lo)._push(writeFixed32,4,t.hi)};Writer$1.prototype.sfixed64=Writer$1.prototype.fixed64;Writer$1.prototype.float=function i(n){return this._push(util$4.float.writeFloatLE,4,n)};Writer$1.prototype.double=function i(n){return this._push(util$4.float.writeDoubleLE,8,n)};var writeBytes=util$4.Array.prototype.set?function i(n,t,e){t.set(n,e)}:function i(n,t,e){for(var r=0;r<n.length;++r)t[e+r]=n[r]};Writer$1.prototype.bytes=function i(n){var t=n.length>>>0;if(!t)return this._push(writeByte,1,0);if(util$4.isString(n)){var e=Writer$1.alloc(t=base64.length(n));base64.decode(n,e,0),n=e}return this.uint32(t)._push(writeBytes,t,n)};Writer$1.prototype.string=function i(n){var t=utf8$1.length(n);return t?this.uint32(t)._push(utf8$1.write,t,n):this._push(writeByte,1,0)};Writer$1.prototype.fork=function i(){return this.states=new State(this),this.head=this.tail=new Op(noop,0,0),this.len=0,this};Writer$1.prototype.reset=function i(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new Op(noop,0,0),this.len=0),this};Writer$1.prototype.ldelim=function i(){var n=this.head,t=this.tail,e=this.len;return this.reset().uint32(e),e&&(this.tail.next=n.next,this.tail=t,this.len+=e),this};Writer$1.prototype.finish=function i(){for(var n=this.head.next,t=this.constructor.alloc(this.len),e=0;n;)n.fn(n.val,t,e),e+=n.len,n=n.next;return t};Writer$1._configure=function(i){BufferWriter$1=i,Writer$1.create=create$1(),BufferWriter$1._configure()};var writer_buffer=BufferWriter,Writer=writer;(BufferWriter.prototype=Object.create(Writer.prototype)).constructor=BufferWriter;var util$3=requireMinimal();function BufferWriter(){Writer.call(this)}BufferWriter._configure=function(){BufferWriter.alloc=util$3._Buffer_allocUnsafe,BufferWriter.writeBytesBuffer=util$3.Buffer&&util$3.Buffer.prototype instanceof Uint8Array&&util$3.Buffer.prototype.set.name==="set"?function(n,t,e){t.set(n,e)}:function(n,t,e){if(n.copy)n.copy(t,e,0,n.length);else for(var r=0;r<n.length;)t[e++]=n[r++]}};BufferWriter.prototype.bytes=function i(n){util$3.isString(n)&&(n=util$3._Buffer_from(n,"base64"));var t=n.length>>>0;return this.uint32(t),t&&this._push(BufferWriter.writeBytesBuffer,t,n),this};function writeStringBuffer(i,n,t){i.length<40?util$3.utf8.write(i,n,t):n.utf8Write?n.utf8Write(i,t):n.write(i,t)}BufferWriter.prototype.string=function i(n){var t=util$3.Buffer.byteLength(n);return this.uint32(t),t&&this._push(writeStringBuffer,t,n),this};BufferWriter._configure();var reader=Reader$1,util$2=requireMinimal(),BufferReader$1,LongBits=util$2.LongBits,utf8=util$2.utf8;function indexOutOfRange(i,n){return RangeError("index out of range: "+i.pos+" + "+(n||1)+" > "+i.len)}function Reader$1(i){this.buf=i,this.pos=0,this.len=i.length}var create_array=typeof Uint8Array<"u"?function i(n){if(n instanceof Uint8Array||Array.isArray(n))return new Reader$1(n);throw Error("illegal buffer")}:function i(n){if(Array.isArray(n))return new Reader$1(n);throw Error("illegal buffer")},create=function i(){return util$2.Buffer?function(t){return(Reader$1.create=function(r){return util$2.Buffer.isBuffer(r)?new BufferReader$1(r):create_array(r)})(t)}:create_array};Reader$1.create=create();Reader$1.prototype._slice=util$2.Array.prototype.subarray||util$2.Array.prototype.slice;Reader$1.prototype.uint32=function i(){var n=4294967295;return function(){if(n=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(n=(n|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(n=(n|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(n=(n|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(n=(n|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return n;if((this.pos+=5)>this.len)throw this.pos=this.len,indexOutOfRange(this,10);return n}}();Reader$1.prototype.int32=function i(){return this.uint32()|0};Reader$1.prototype.sint32=function i(){var n=this.uint32();return n>>>1^-(n&1)|0};function readLongVarint(){var i=new LongBits(0,0),n=0;if(this.len-this.pos>4){for(;n<4;++n)if(i.lo=(i.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return i;if(i.lo=(i.lo|(this.buf[this.pos]&127)<<28)>>>0,i.hi=(i.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return i;n=0}else{for(;n<3;++n){if(this.pos>=this.len)throw indexOutOfRange(this);if(i.lo=(i.lo|(this.buf[this.pos]&127)<<n*7)>>>0,this.buf[this.pos++]<128)return i}return i.lo=(i.lo|(this.buf[this.pos++]&127)<<n*7)>>>0,i}if(this.len-this.pos>4){for(;n<5;++n)if(i.hi=(i.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return i}else for(;n<5;++n){if(this.pos>=this.len)throw indexOutOfRange(this);if(i.hi=(i.hi|(this.buf[this.pos]&127)<<n*7+3)>>>0,this.buf[this.pos++]<128)return i}throw Error("invalid varint encoding")}Reader$1.prototype.bool=function i(){return this.uint32()!==0};function readFixed32_end(i,n){return(i[n-4]|i[n-3]<<8|i[n-2]<<16|i[n-1]<<24)>>>0}Reader$1.prototype.fixed32=function i(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)};Reader$1.prototype.sfixed32=function i(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);return readFixed32_end(this.buf,this.pos+=4)|0};function readFixed64(){if(this.pos+8>this.len)throw indexOutOfRange(this,8);return new LongBits(readFixed32_end(this.buf,this.pos+=4),readFixed32_end(this.buf,this.pos+=4))}Reader$1.prototype.float=function i(){if(this.pos+4>this.len)throw indexOutOfRange(this,4);var n=util$2.float.readFloatLE(this.buf,this.pos);return this.pos+=4,n};Reader$1.prototype.double=function i(){if(this.pos+8>this.len)throw indexOutOfRange(this,4);var n=util$2.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,n};Reader$1.prototype.bytes=function i(){var n=this.uint32(),t=this.pos,e=this.pos+n;if(e>this.len)throw indexOutOfRange(this,n);if(this.pos+=n,Array.isArray(this.buf))return this.buf.slice(t,e);if(t===e){var r=util$2.Buffer;return r?r.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,t,e)};Reader$1.prototype.string=function i(){var n=this.bytes();return utf8.read(n,0,n.length)};Reader$1.prototype.skip=function i(n){if(typeof n=="number"){if(this.pos+n>this.len)throw indexOutOfRange(this,n);this.pos+=n}else do if(this.pos>=this.len)throw indexOutOfRange(this);while(this.buf[this.pos++]&128);return this};Reader$1.prototype.skipType=function(i){switch(i){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(i=this.uint32()&7)!==4;)this.skipType(i);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+i+" at offset "+this.pos)}return this};Reader$1._configure=function(i){BufferReader$1=i,Reader$1.create=create(),BufferReader$1._configure();var n=util$2.Long?"toLong":"toNumber";util$2.merge(Reader$1.prototype,{int64:function(){return readLongVarint.call(this)[n](!1)},uint64:function(){return readLongVarint.call(this)[n](!0)},sint64:function(){return readLongVarint.call(this).zzDecode()[n](!1)},fixed64:function(){return readFixed64.call(this)[n](!0)},sfixed64:function(){return readFixed64.call(this)[n](!1)}})};var reader_buffer=BufferReader,Reader=reader;(BufferReader.prototype=Object.create(Reader.prototype)).constructor=BufferReader;var util$1=requireMinimal();function BufferReader(i){Reader.call(this,i)}BufferReader._configure=function(){util$1.Buffer&&(BufferReader.prototype._slice=util$1.Buffer.prototype.slice)};BufferReader.prototype.string=function i(){var n=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+n,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+n,this.len))};BufferReader._configure();var rpc={},service=Service,util=requireMinimal();(Service.prototype=Object.create(util.EventEmitter.prototype)).constructor=Service;function Service(i,n,t){if(typeof i!="function")throw TypeError("rpcImpl must be a function");util.EventEmitter.call(this),this.rpcImpl=i,this.requestDelimited=!!n,this.responseDelimited=!!t}Service.prototype.rpcCall=function i(n,t,e,r,o){if(!r)throw TypeError("request must be specified");var s=this;if(!o)return util.asPromise(i,s,n,t,e,r);if(!s.rpcImpl){setTimeout(function(){o(Error("already ended"))},0);return}try{return s.rpcImpl(n,t[s.requestDelimited?"encodeDelimited":"encode"](r).finish(),function(u,l){if(u)return s.emit("error",u,n),o(u);if(l===null){s.end(!0);return}if(!(l instanceof e))try{l=e[s.responseDelimited?"decodeDelimited":"decode"](l)}catch(a){return s.emit("error",a,n),o(a)}return s.emit("data",l,n),o(null,l)})}catch(c){s.emit("error",c,n),setTimeout(function(){o(c)},0);return}};Service.prototype.end=function i(n){return this.rpcImpl&&(n||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this};(function(i){var n=i;n.Service=service})(rpc);var roots={};(function(i){var n=i;n.build="minimal",n.Writer=writer,n.BufferWriter=writer_buffer,n.Reader=reader,n.BufferReader=reader_buffer,n.util=requireMinimal(),n.rpc=rpc,n.roots=roots,n.configure=t;function t(){n.util._configure(),n.Writer._configure(n.BufferWriter),n.Reader._configure(n.BufferReader)}t()})(indexMinimal);var minimal=indexMinimal;const $Reader=minimal.Reader,$Writer=minimal.Writer,$util=minimal.util,$root=minimal.roots.default||(minimal.roots.default={}),Status=$root.Status=(()=>{const i={},n=Object.create(i);return n[i[0]="Success"]=0,n[i[1]="InvalidSecScheme"]=1,n[i[2]="InvalidProto"]=2,n[i[3]="TooManySessions"]=3,n[i[4]="InvalidArgument"]=4,n[i[5]="InternalError"]=5,n[i[6]="CryptoError"]=6,n[i[7]="InvalidSession"]=7,n})(),S0SessionCmd=$root.S0SessionCmd=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S0SessionCmd;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.S0SessionCmd?t:new $root.S0SessionCmd},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S0SessionCmd"},i})();$root.S0SessionResp=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S0SessionResp;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return null},i.fromObject=function(t){if(t instanceof $root.S0SessionResp)return t;let e=new $root.S0SessionResp;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S0SessionResp"},i})();const Sec0MsgType=$root.Sec0MsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="S0_Session_Command"]=0,n[i[1]="S0_Session_Response"]=1,n})(),Sec0Payload=$root.Sec0Payload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.sc=null,i.prototype.sr=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["sc","sr"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.sc!=null&&Object.hasOwnProperty.call(e,"sc")&&$root.S0SessionCmd.encode(e.sc,r.uint32(162).fork()).ldelim(),e.sr!=null&&Object.hasOwnProperty.call(e,"sr")&&$root.S0SessionResp.encode(e.sr,r.uint32(170).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.Sec0Payload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 20:{c.sc=$root.S0SessionCmd.decode(e,e.uint32());break}case 21:{c.sr=$root.S0SessionResp.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:break}if(e.sc!=null&&e.hasOwnProperty("sc")){r.payload=1;{let o=$root.S0SessionCmd.verify(e.sc);if(o)return"sc."+o}}if(e.sr!=null&&e.hasOwnProperty("sr")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.S0SessionResp.verify(e.sr);if(o)return"sr."+o}}return null},i.fromObject=function(e){if(e instanceof $root.Sec0Payload)return e;let r=new $root.Sec0Payload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"S0_Session_Command":case 0:r.msg=0;break;case"S0_Session_Response":case 1:r.msg=1;break}if(e.sc!=null){if(typeof e.sc!="object")throw TypeError(".Sec0Payload.sc: object expected");r.sc=$root.S0SessionCmd.fromObject(e.sc)}if(e.sr!=null){if(typeof e.sr!="object")throw TypeError(".Sec0Payload.sr: object expected");r.sr=$root.S0SessionResp.fromObject(e.sr)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"S0_Session_Command":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.Sec0MsgType[e.msg]===void 0?e.msg:$root.Sec0MsgType[e.msg]:e.msg),e.sc!=null&&e.hasOwnProperty("sc")&&(o.sc=$root.S0SessionCmd.toObject(e.sc,r),r.oneofs&&(o.payload="sc")),e.sr!=null&&e.hasOwnProperty("sr")&&(o.sr=$root.S0SessionResp.toObject(e.sr,r),r.oneofs&&(o.payload="sr")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/Sec0Payload"},i})();$root.SessionCmd1=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.clientVerifyData=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clientVerifyData!=null&&Object.hasOwnProperty.call(t,"clientVerifyData")&&e.uint32(18).bytes(t.clientVerifyData),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.SessionCmd1;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 2:{s.clientVerifyData=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clientVerifyData!=null&&t.hasOwnProperty("clientVerifyData")&&!(t.clientVerifyData&&typeof t.clientVerifyData.length=="number"||$util.isString(t.clientVerifyData))?"clientVerifyData: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.SessionCmd1)return t;let e=new $root.SessionCmd1;return t.clientVerifyData!=null&&(typeof t.clientVerifyData=="string"?$util.base64.decode(t.clientVerifyData,e.clientVerifyData=$util.newBuffer($util.base64.length(t.clientVerifyData)),0):t.clientVerifyData.length>=0&&(e.clientVerifyData=t.clientVerifyData)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.clientVerifyData="":(r.clientVerifyData=[],e.bytes!==Array&&(r.clientVerifyData=$util.newBuffer(r.clientVerifyData)))),t.clientVerifyData!=null&&t.hasOwnProperty("clientVerifyData")&&(r.clientVerifyData=e.bytes===String?$util.base64.encode(t.clientVerifyData,0,t.clientVerifyData.length):e.bytes===Array?Array.prototype.slice.call(t.clientVerifyData):t.clientVerifyData),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/SessionCmd1"},i})();$root.SessionResp1=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.prototype.deviceVerifyData=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),t.deviceVerifyData!=null&&Object.hasOwnProperty.call(t,"deviceVerifyData")&&e.uint32(26).bytes(t.deviceVerifyData),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.SessionResp1;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}case 3:{s.deviceVerifyData=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.deviceVerifyData!=null&&t.hasOwnProperty("deviceVerifyData")&&!(t.deviceVerifyData&&typeof t.deviceVerifyData.length=="number"||$util.isString(t.deviceVerifyData))?"deviceVerifyData: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.SessionResp1)return t;let e=new $root.SessionResp1;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return t.deviceVerifyData!=null&&(typeof t.deviceVerifyData=="string"?$util.base64.decode(t.deviceVerifyData,e.deviceVerifyData=$util.newBuffer($util.base64.length(t.deviceVerifyData)),0):t.deviceVerifyData.length>=0&&(e.deviceVerifyData=t.deviceVerifyData)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0,e.bytes===String?r.deviceVerifyData="":(r.deviceVerifyData=[],e.bytes!==Array&&(r.deviceVerifyData=$util.newBuffer(r.deviceVerifyData)))),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),t.deviceVerifyData!=null&&t.hasOwnProperty("deviceVerifyData")&&(r.deviceVerifyData=e.bytes===String?$util.base64.encode(t.deviceVerifyData,0,t.deviceVerifyData.length):e.bytes===Array?Array.prototype.slice.call(t.deviceVerifyData):t.deviceVerifyData),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/SessionResp1"},i})();$root.SessionCmd0=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.clientPubkey=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clientPubkey!=null&&Object.hasOwnProperty.call(t,"clientPubkey")&&e.uint32(10).bytes(t.clientPubkey),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.SessionCmd0;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.clientPubkey=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clientPubkey!=null&&t.hasOwnProperty("clientPubkey")&&!(t.clientPubkey&&typeof t.clientPubkey.length=="number"||$util.isString(t.clientPubkey))?"clientPubkey: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.SessionCmd0)return t;let e=new $root.SessionCmd0;return t.clientPubkey!=null&&(typeof t.clientPubkey=="string"?$util.base64.decode(t.clientPubkey,e.clientPubkey=$util.newBuffer($util.base64.length(t.clientPubkey)),0):t.clientPubkey.length>=0&&(e.clientPubkey=t.clientPubkey)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.clientPubkey="":(r.clientPubkey=[],e.bytes!==Array&&(r.clientPubkey=$util.newBuffer(r.clientPubkey)))),t.clientPubkey!=null&&t.hasOwnProperty("clientPubkey")&&(r.clientPubkey=e.bytes===String?$util.base64.encode(t.clientPubkey,0,t.clientPubkey.length):e.bytes===Array?Array.prototype.slice.call(t.clientPubkey):t.clientPubkey),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/SessionCmd0"},i})();$root.SessionResp0=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.prototype.devicePubkey=$util.newBuffer([]),i.prototype.deviceRandom=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),t.devicePubkey!=null&&Object.hasOwnProperty.call(t,"devicePubkey")&&e.uint32(18).bytes(t.devicePubkey),t.deviceRandom!=null&&Object.hasOwnProperty.call(t,"deviceRandom")&&e.uint32(26).bytes(t.deviceRandom),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.SessionResp0;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}case 2:{s.devicePubkey=t.bytes();break}case 3:{s.deviceRandom=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.devicePubkey!=null&&t.hasOwnProperty("devicePubkey")&&!(t.devicePubkey&&typeof t.devicePubkey.length=="number"||$util.isString(t.devicePubkey))?"devicePubkey: buffer expected":t.deviceRandom!=null&&t.hasOwnProperty("deviceRandom")&&!(t.deviceRandom&&typeof t.deviceRandom.length=="number"||$util.isString(t.deviceRandom))?"deviceRandom: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.SessionResp0)return t;let e=new $root.SessionResp0;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return t.devicePubkey!=null&&(typeof t.devicePubkey=="string"?$util.base64.decode(t.devicePubkey,e.devicePubkey=$util.newBuffer($util.base64.length(t.devicePubkey)),0):t.devicePubkey.length>=0&&(e.devicePubkey=t.devicePubkey)),t.deviceRandom!=null&&(typeof t.deviceRandom=="string"?$util.base64.decode(t.deviceRandom,e.deviceRandom=$util.newBuffer($util.base64.length(t.deviceRandom)),0):t.deviceRandom.length>=0&&(e.deviceRandom=t.deviceRandom)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0,e.bytes===String?r.devicePubkey="":(r.devicePubkey=[],e.bytes!==Array&&(r.devicePubkey=$util.newBuffer(r.devicePubkey))),e.bytes===String?r.deviceRandom="":(r.deviceRandom=[],e.bytes!==Array&&(r.deviceRandom=$util.newBuffer(r.deviceRandom)))),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),t.devicePubkey!=null&&t.hasOwnProperty("devicePubkey")&&(r.devicePubkey=e.bytes===String?$util.base64.encode(t.devicePubkey,0,t.devicePubkey.length):e.bytes===Array?Array.prototype.slice.call(t.devicePubkey):t.devicePubkey),t.deviceRandom!=null&&t.hasOwnProperty("deviceRandom")&&(r.deviceRandom=e.bytes===String?$util.base64.encode(t.deviceRandom,0,t.deviceRandom.length):e.bytes===Array?Array.prototype.slice.call(t.deviceRandom):t.deviceRandom),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/SessionResp0"},i})();$root.Sec1MsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="Session_Command0"]=0,n[i[1]="Session_Response0"]=1,n[i[2]="Session_Command1"]=2,n[i[3]="Session_Response1"]=3,n})();$root.Sec1Payload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.sc0=null,i.prototype.sr0=null,i.prototype.sc1=null,i.prototype.sr1=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["sc0","sr0","sc1","sr1"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.sc0!=null&&Object.hasOwnProperty.call(e,"sc0")&&$root.SessionCmd0.encode(e.sc0,r.uint32(162).fork()).ldelim(),e.sr0!=null&&Object.hasOwnProperty.call(e,"sr0")&&$root.SessionResp0.encode(e.sr0,r.uint32(170).fork()).ldelim(),e.sc1!=null&&Object.hasOwnProperty.call(e,"sc1")&&$root.SessionCmd1.encode(e.sc1,r.uint32(178).fork()).ldelim(),e.sr1!=null&&Object.hasOwnProperty.call(e,"sr1")&&$root.SessionResp1.encode(e.sr1,r.uint32(186).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.Sec1Payload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 20:{c.sc0=$root.SessionCmd0.decode(e,e.uint32());break}case 21:{c.sr0=$root.SessionResp0.decode(e,e.uint32());break}case 22:{c.sc1=$root.SessionCmd1.decode(e,e.uint32());break}case 23:{c.sr1=$root.SessionResp1.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:break}if(e.sc0!=null&&e.hasOwnProperty("sc0")){r.payload=1;{let o=$root.SessionCmd0.verify(e.sc0);if(o)return"sc0."+o}}if(e.sr0!=null&&e.hasOwnProperty("sr0")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.SessionResp0.verify(e.sr0);if(o)return"sr0."+o}}if(e.sc1!=null&&e.hasOwnProperty("sc1")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.SessionCmd1.verify(e.sc1);if(o)return"sc1."+o}}if(e.sr1!=null&&e.hasOwnProperty("sr1")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.SessionResp1.verify(e.sr1);if(o)return"sr1."+o}}return null},i.fromObject=function(e){if(e instanceof $root.Sec1Payload)return e;let r=new $root.Sec1Payload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"Session_Command0":case 0:r.msg=0;break;case"Session_Response0":case 1:r.msg=1;break;case"Session_Command1":case 2:r.msg=2;break;case"Session_Response1":case 3:r.msg=3;break}if(e.sc0!=null){if(typeof e.sc0!="object")throw TypeError(".Sec1Payload.sc0: object expected");r.sc0=$root.SessionCmd0.fromObject(e.sc0)}if(e.sr0!=null){if(typeof e.sr0!="object")throw TypeError(".Sec1Payload.sr0: object expected");r.sr0=$root.SessionResp0.fromObject(e.sr0)}if(e.sc1!=null){if(typeof e.sc1!="object")throw TypeError(".Sec1Payload.sc1: object expected");r.sc1=$root.SessionCmd1.fromObject(e.sc1)}if(e.sr1!=null){if(typeof e.sr1!="object")throw TypeError(".Sec1Payload.sr1: object expected");r.sr1=$root.SessionResp1.fromObject(e.sr1)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"Session_Command0":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.Sec1MsgType[e.msg]===void 0?e.msg:$root.Sec1MsgType[e.msg]:e.msg),e.sc0!=null&&e.hasOwnProperty("sc0")&&(o.sc0=$root.SessionCmd0.toObject(e.sc0,r),r.oneofs&&(o.payload="sc0")),e.sr0!=null&&e.hasOwnProperty("sr0")&&(o.sr0=$root.SessionResp0.toObject(e.sr0,r),r.oneofs&&(o.payload="sr0")),e.sc1!=null&&e.hasOwnProperty("sc1")&&(o.sc1=$root.SessionCmd1.toObject(e.sc1,r),r.oneofs&&(o.payload="sc1")),e.sr1!=null&&e.hasOwnProperty("sr1")&&(o.sr1=$root.SessionResp1.toObject(e.sr1,r),r.oneofs&&(o.payload="sr1")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/Sec1Payload"},i})();$root.Sec2MsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="S2Session_Command0"]=0,n[i[1]="S2Session_Response0"]=1,n[i[2]="S2Session_Command1"]=2,n[i[3]="S2Session_Response1"]=3,n})();$root.S2SessionCmd0=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.clientUsername=$util.newBuffer([]),i.prototype.clientPubkey=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clientUsername!=null&&Object.hasOwnProperty.call(t,"clientUsername")&&e.uint32(10).bytes(t.clientUsername),t.clientPubkey!=null&&Object.hasOwnProperty.call(t,"clientPubkey")&&e.uint32(18).bytes(t.clientPubkey),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S2SessionCmd0;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.clientUsername=t.bytes();break}case 2:{s.clientPubkey=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clientUsername!=null&&t.hasOwnProperty("clientUsername")&&!(t.clientUsername&&typeof t.clientUsername.length=="number"||$util.isString(t.clientUsername))?"clientUsername: buffer expected":t.clientPubkey!=null&&t.hasOwnProperty("clientPubkey")&&!(t.clientPubkey&&typeof t.clientPubkey.length=="number"||$util.isString(t.clientPubkey))?"clientPubkey: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.S2SessionCmd0)return t;let e=new $root.S2SessionCmd0;return t.clientUsername!=null&&(typeof t.clientUsername=="string"?$util.base64.decode(t.clientUsername,e.clientUsername=$util.newBuffer($util.base64.length(t.clientUsername)),0):t.clientUsername.length>=0&&(e.clientUsername=t.clientUsername)),t.clientPubkey!=null&&(typeof t.clientPubkey=="string"?$util.base64.decode(t.clientPubkey,e.clientPubkey=$util.newBuffer($util.base64.length(t.clientPubkey)),0):t.clientPubkey.length>=0&&(e.clientPubkey=t.clientPubkey)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.clientUsername="":(r.clientUsername=[],e.bytes!==Array&&(r.clientUsername=$util.newBuffer(r.clientUsername))),e.bytes===String?r.clientPubkey="":(r.clientPubkey=[],e.bytes!==Array&&(r.clientPubkey=$util.newBuffer(r.clientPubkey)))),t.clientUsername!=null&&t.hasOwnProperty("clientUsername")&&(r.clientUsername=e.bytes===String?$util.base64.encode(t.clientUsername,0,t.clientUsername.length):e.bytes===Array?Array.prototype.slice.call(t.clientUsername):t.clientUsername),t.clientPubkey!=null&&t.hasOwnProperty("clientPubkey")&&(r.clientPubkey=e.bytes===String?$util.base64.encode(t.clientPubkey,0,t.clientPubkey.length):e.bytes===Array?Array.prototype.slice.call(t.clientPubkey):t.clientPubkey),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S2SessionCmd0"},i})();$root.S2SessionResp0=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.prototype.devicePubkey=$util.newBuffer([]),i.prototype.deviceSalt=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),t.devicePubkey!=null&&Object.hasOwnProperty.call(t,"devicePubkey")&&e.uint32(18).bytes(t.devicePubkey),t.deviceSalt!=null&&Object.hasOwnProperty.call(t,"deviceSalt")&&e.uint32(26).bytes(t.deviceSalt),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S2SessionResp0;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}case 2:{s.devicePubkey=t.bytes();break}case 3:{s.deviceSalt=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.devicePubkey!=null&&t.hasOwnProperty("devicePubkey")&&!(t.devicePubkey&&typeof t.devicePubkey.length=="number"||$util.isString(t.devicePubkey))?"devicePubkey: buffer expected":t.deviceSalt!=null&&t.hasOwnProperty("deviceSalt")&&!(t.deviceSalt&&typeof t.deviceSalt.length=="number"||$util.isString(t.deviceSalt))?"deviceSalt: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.S2SessionResp0)return t;let e=new $root.S2SessionResp0;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return t.devicePubkey!=null&&(typeof t.devicePubkey=="string"?$util.base64.decode(t.devicePubkey,e.devicePubkey=$util.newBuffer($util.base64.length(t.devicePubkey)),0):t.devicePubkey.length>=0&&(e.devicePubkey=t.devicePubkey)),t.deviceSalt!=null&&(typeof t.deviceSalt=="string"?$util.base64.decode(t.deviceSalt,e.deviceSalt=$util.newBuffer($util.base64.length(t.deviceSalt)),0):t.deviceSalt.length>=0&&(e.deviceSalt=t.deviceSalt)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0,e.bytes===String?r.devicePubkey="":(r.devicePubkey=[],e.bytes!==Array&&(r.devicePubkey=$util.newBuffer(r.devicePubkey))),e.bytes===String?r.deviceSalt="":(r.deviceSalt=[],e.bytes!==Array&&(r.deviceSalt=$util.newBuffer(r.deviceSalt)))),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),t.devicePubkey!=null&&t.hasOwnProperty("devicePubkey")&&(r.devicePubkey=e.bytes===String?$util.base64.encode(t.devicePubkey,0,t.devicePubkey.length):e.bytes===Array?Array.prototype.slice.call(t.devicePubkey):t.devicePubkey),t.deviceSalt!=null&&t.hasOwnProperty("deviceSalt")&&(r.deviceSalt=e.bytes===String?$util.base64.encode(t.deviceSalt,0,t.deviceSalt.length):e.bytes===Array?Array.prototype.slice.call(t.deviceSalt):t.deviceSalt),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S2SessionResp0"},i})();$root.S2SessionCmd1=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.clientProof=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.clientProof!=null&&Object.hasOwnProperty.call(t,"clientProof")&&e.uint32(10).bytes(t.clientProof),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S2SessionCmd1;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.clientProof=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.clientProof!=null&&t.hasOwnProperty("clientProof")&&!(t.clientProof&&typeof t.clientProof.length=="number"||$util.isString(t.clientProof))?"clientProof: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.S2SessionCmd1)return t;let e=new $root.S2SessionCmd1;return t.clientProof!=null&&(typeof t.clientProof=="string"?$util.base64.decode(t.clientProof,e.clientProof=$util.newBuffer($util.base64.length(t.clientProof)),0):t.clientProof.length>=0&&(e.clientProof=t.clientProof)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.clientProof="":(r.clientProof=[],e.bytes!==Array&&(r.clientProof=$util.newBuffer(r.clientProof)))),t.clientProof!=null&&t.hasOwnProperty("clientProof")&&(r.clientProof=e.bytes===String?$util.base64.encode(t.clientProof,0,t.clientProof.length):e.bytes===Array?Array.prototype.slice.call(t.clientProof):t.clientProof),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S2SessionCmd1"},i})();$root.S2SessionResp1=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.prototype.deviceProof=$util.newBuffer([]),i.prototype.deviceNonce=$util.newBuffer([]),i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),t.deviceProof!=null&&Object.hasOwnProperty.call(t,"deviceProof")&&e.uint32(18).bytes(t.deviceProof),t.deviceNonce!=null&&Object.hasOwnProperty.call(t,"deviceNonce")&&e.uint32(26).bytes(t.deviceNonce),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.S2SessionResp1;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}case 2:{s.deviceProof=t.bytes();break}case 3:{s.deviceNonce=t.bytes();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.deviceProof!=null&&t.hasOwnProperty("deviceProof")&&!(t.deviceProof&&typeof t.deviceProof.length=="number"||$util.isString(t.deviceProof))?"deviceProof: buffer expected":t.deviceNonce!=null&&t.hasOwnProperty("deviceNonce")&&!(t.deviceNonce&&typeof t.deviceNonce.length=="number"||$util.isString(t.deviceNonce))?"deviceNonce: buffer expected":null},i.fromObject=function(t){if(t instanceof $root.S2SessionResp1)return t;let e=new $root.S2SessionResp1;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return t.deviceProof!=null&&(typeof t.deviceProof=="string"?$util.base64.decode(t.deviceProof,e.deviceProof=$util.newBuffer($util.base64.length(t.deviceProof)),0):t.deviceProof.length>=0&&(e.deviceProof=t.deviceProof)),t.deviceNonce!=null&&(typeof t.deviceNonce=="string"?$util.base64.decode(t.deviceNonce,e.deviceNonce=$util.newBuffer($util.base64.length(t.deviceNonce)),0):t.deviceNonce.length>=0&&(e.deviceNonce=t.deviceNonce)),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0,e.bytes===String?r.deviceProof="":(r.deviceProof=[],e.bytes!==Array&&(r.deviceProof=$util.newBuffer(r.deviceProof))),e.bytes===String?r.deviceNonce="":(r.deviceNonce=[],e.bytes!==Array&&(r.deviceNonce=$util.newBuffer(r.deviceNonce)))),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),t.deviceProof!=null&&t.hasOwnProperty("deviceProof")&&(r.deviceProof=e.bytes===String?$util.base64.encode(t.deviceProof,0,t.deviceProof.length):e.bytes===Array?Array.prototype.slice.call(t.deviceProof):t.deviceProof),t.deviceNonce!=null&&t.hasOwnProperty("deviceNonce")&&(r.deviceNonce=e.bytes===String?$util.base64.encode(t.deviceNonce,0,t.deviceNonce.length):e.bytes===Array?Array.prototype.slice.call(t.deviceNonce):t.deviceNonce),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/S2SessionResp1"},i})();$root.Sec2Payload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.sc0=null,i.prototype.sr0=null,i.prototype.sc1=null,i.prototype.sr1=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["sc0","sr0","sc1","sr1"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.sc0!=null&&Object.hasOwnProperty.call(e,"sc0")&&$root.S2SessionCmd0.encode(e.sc0,r.uint32(162).fork()).ldelim(),e.sr0!=null&&Object.hasOwnProperty.call(e,"sr0")&&$root.S2SessionResp0.encode(e.sr0,r.uint32(170).fork()).ldelim(),e.sc1!=null&&Object.hasOwnProperty.call(e,"sc1")&&$root.S2SessionCmd1.encode(e.sc1,r.uint32(178).fork()).ldelim(),e.sr1!=null&&Object.hasOwnProperty.call(e,"sr1")&&$root.S2SessionResp1.encode(e.sr1,r.uint32(186).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.Sec2Payload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 20:{c.sc0=$root.S2SessionCmd0.decode(e,e.uint32());break}case 21:{c.sr0=$root.S2SessionResp0.decode(e,e.uint32());break}case 22:{c.sc1=$root.S2SessionCmd1.decode(e,e.uint32());break}case 23:{c.sr1=$root.S2SessionResp1.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:break}if(e.sc0!=null&&e.hasOwnProperty("sc0")){r.payload=1;{let o=$root.S2SessionCmd0.verify(e.sc0);if(o)return"sc0."+o}}if(e.sr0!=null&&e.hasOwnProperty("sr0")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.S2SessionResp0.verify(e.sr0);if(o)return"sr0."+o}}if(e.sc1!=null&&e.hasOwnProperty("sc1")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.S2SessionCmd1.verify(e.sc1);if(o)return"sc1."+o}}if(e.sr1!=null&&e.hasOwnProperty("sr1")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.S2SessionResp1.verify(e.sr1);if(o)return"sr1."+o}}return null},i.fromObject=function(e){if(e instanceof $root.Sec2Payload)return e;let r=new $root.Sec2Payload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"S2Session_Command0":case 0:r.msg=0;break;case"S2Session_Response0":case 1:r.msg=1;break;case"S2Session_Command1":case 2:r.msg=2;break;case"S2Session_Response1":case 3:r.msg=3;break}if(e.sc0!=null){if(typeof e.sc0!="object")throw TypeError(".Sec2Payload.sc0: object expected");r.sc0=$root.S2SessionCmd0.fromObject(e.sc0)}if(e.sr0!=null){if(typeof e.sr0!="object")throw TypeError(".Sec2Payload.sr0: object expected");r.sr0=$root.S2SessionResp0.fromObject(e.sr0)}if(e.sc1!=null){if(typeof e.sc1!="object")throw TypeError(".Sec2Payload.sc1: object expected");r.sc1=$root.S2SessionCmd1.fromObject(e.sc1)}if(e.sr1!=null){if(typeof e.sr1!="object")throw TypeError(".Sec2Payload.sr1: object expected");r.sr1=$root.S2SessionResp1.fromObject(e.sr1)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"S2Session_Command0":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.Sec2MsgType[e.msg]===void 0?e.msg:$root.Sec2MsgType[e.msg]:e.msg),e.sc0!=null&&e.hasOwnProperty("sc0")&&(o.sc0=$root.S2SessionCmd0.toObject(e.sc0,r),r.oneofs&&(o.payload="sc0")),e.sr0!=null&&e.hasOwnProperty("sr0")&&(o.sr0=$root.S2SessionResp0.toObject(e.sr0,r),r.oneofs&&(o.payload="sr0")),e.sc1!=null&&e.hasOwnProperty("sc1")&&(o.sc1=$root.S2SessionCmd1.toObject(e.sc1,r),r.oneofs&&(o.payload="sc1")),e.sr1!=null&&e.hasOwnProperty("sr1")&&(o.sr1=$root.S2SessionResp1.toObject(e.sr1,r),r.oneofs&&(o.payload="sr1")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/Sec2Payload"},i})();const SecSchemeVersion=$root.SecSchemeVersion=(()=>{const i={},n=Object.create(i);return n[i[0]="SecScheme0"]=0,n[i[1]="SecScheme1"]=1,n[i[2]="SecScheme2"]=2,n})(),SessionData=$root.SessionData=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.secVer=0,i.prototype.sec0=null,i.prototype.sec1=null,i.prototype.sec2=null;let n;return Object.defineProperty(i.prototype,"proto",{get:$util.oneOfGetter(n=["sec0","sec1","sec2"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.secVer!=null&&Object.hasOwnProperty.call(e,"secVer")&&r.uint32(16).int32(e.secVer),e.sec0!=null&&Object.hasOwnProperty.call(e,"sec0")&&$root.Sec0Payload.encode(e.sec0,r.uint32(82).fork()).ldelim(),e.sec1!=null&&Object.hasOwnProperty.call(e,"sec1")&&$root.Sec1Payload.encode(e.sec1,r.uint32(90).fork()).ldelim(),e.sec2!=null&&Object.hasOwnProperty.call(e,"sec2")&&$root.Sec2Payload.encode(e.sec2,r.uint32(98).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.SessionData;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 2:{c.secVer=e.int32();break}case 10:{c.sec0=$root.Sec0Payload.decode(e,e.uint32());break}case 11:{c.sec1=$root.Sec1Payload.decode(e,e.uint32());break}case 12:{c.sec2=$root.Sec2Payload.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.secVer!=null&&e.hasOwnProperty("secVer"))switch(e.secVer){default:return"secVer: enum value expected";case 0:case 1:case 2:break}if(e.sec0!=null&&e.hasOwnProperty("sec0")){r.proto=1;{let o=$root.Sec0Payload.verify(e.sec0);if(o)return"sec0."+o}}if(e.sec1!=null&&e.hasOwnProperty("sec1")){if(r.proto===1)return"proto: multiple values";r.proto=1;{let o=$root.Sec1Payload.verify(e.sec1);if(o)return"sec1."+o}}if(e.sec2!=null&&e.hasOwnProperty("sec2")){if(r.proto===1)return"proto: multiple values";r.proto=1;{let o=$root.Sec2Payload.verify(e.sec2);if(o)return"sec2."+o}}return null},i.fromObject=function(e){if(e instanceof $root.SessionData)return e;let r=new $root.SessionData;switch(e.secVer){default:if(typeof e.secVer=="number"){r.secVer=e.secVer;break}break;case"SecScheme0":case 0:r.secVer=0;break;case"SecScheme1":case 1:r.secVer=1;break;case"SecScheme2":case 2:r.secVer=2;break}if(e.sec0!=null){if(typeof e.sec0!="object")throw TypeError(".SessionData.sec0: object expected");r.sec0=$root.Sec0Payload.fromObject(e.sec0)}if(e.sec1!=null){if(typeof e.sec1!="object")throw TypeError(".SessionData.sec1: object expected");r.sec1=$root.Sec1Payload.fromObject(e.sec1)}if(e.sec2!=null){if(typeof e.sec2!="object")throw TypeError(".SessionData.sec2: object expected");r.sec2=$root.Sec2Payload.fromObject(e.sec2)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.secVer=r.enums===String?"SecScheme0":0),e.secVer!=null&&e.hasOwnProperty("secVer")&&(o.secVer=r.enums===String?$root.SecSchemeVersion[e.secVer]===void 0?e.secVer:$root.SecSchemeVersion[e.secVer]:e.secVer),e.sec0!=null&&e.hasOwnProperty("sec0")&&(o.sec0=$root.Sec0Payload.toObject(e.sec0,r),r.oneofs&&(o.proto="sec0")),e.sec1!=null&&e.hasOwnProperty("sec1")&&(o.sec1=$root.Sec1Payload.toObject(e.sec1,r),r.oneofs&&(o.proto="sec1")),e.sec2!=null&&e.hasOwnProperty("sec2")&&(o.sec2=$root.Sec2Payload.toObject(e.sec2,r),r.oneofs&&(o.proto="sec2")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/SessionData"},i})(),CmdGetStatus=$root.CmdGetStatus=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdGetStatus;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdGetStatus?t:new $root.CmdGetStatus},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdGetStatus"},i})();$root.RespGetStatus=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.status=0,i.prototype.staState=0,i.prototype.failReason=null,i.prototype.connected=null;let n;return Object.defineProperty(i.prototype,"state",{get:$util.oneOfGetter(n=["failReason","connected"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.status!=null&&Object.hasOwnProperty.call(e,"status")&&r.uint32(8).int32(e.status),e.staState!=null&&Object.hasOwnProperty.call(e,"staState")&&r.uint32(16).int32(e.staState),e.failReason!=null&&Object.hasOwnProperty.call(e,"failReason")&&r.uint32(80).int32(e.failReason),e.connected!=null&&Object.hasOwnProperty.call(e,"connected")&&$root.WifiConnectedState.encode(e.connected,r.uint32(90).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.RespGetStatus;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.status=e.int32();break}case 2:{c.staState=e.int32();break}case 10:{c.failReason=e.int32();break}case 11:{c.connected=$root.WifiConnectedState.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.status!=null&&e.hasOwnProperty("status"))switch(e.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}if(e.staState!=null&&e.hasOwnProperty("staState"))switch(e.staState){default:return"staState: enum value expected";case 0:case 1:case 2:case 3:break}if(e.failReason!=null&&e.hasOwnProperty("failReason"))switch(r.state=1,e.failReason){default:return"failReason: enum value expected";case 0:case 1:break}if(e.connected!=null&&e.hasOwnProperty("connected")){if(r.state===1)return"state: multiple values";r.state=1;{let o=$root.WifiConnectedState.verify(e.connected);if(o)return"connected."+o}}return null},i.fromObject=function(e){if(e instanceof $root.RespGetStatus)return e;let r=new $root.RespGetStatus;switch(e.status){default:if(typeof e.status=="number"){r.status=e.status;break}break;case"Success":case 0:r.status=0;break;case"InvalidSecScheme":case 1:r.status=1;break;case"InvalidProto":case 2:r.status=2;break;case"TooManySessions":case 3:r.status=3;break;case"InvalidArgument":case 4:r.status=4;break;case"InternalError":case 5:r.status=5;break;case"CryptoError":case 6:r.status=6;break;case"InvalidSession":case 7:r.status=7;break}switch(e.staState){default:if(typeof e.staState=="number"){r.staState=e.staState;break}break;case"Connected":case 0:r.staState=0;break;case"Connecting":case 1:r.staState=1;break;case"Disconnected":case 2:r.staState=2;break;case"ConnectionFailed":case 3:r.staState=3;break}switch(e.failReason){default:if(typeof e.failReason=="number"){r.failReason=e.failReason;break}break;case"AuthError":case 0:r.failReason=0;break;case"NetworkNotFound":case 1:r.failReason=1;break}if(e.connected!=null){if(typeof e.connected!="object")throw TypeError(".RespGetStatus.connected: object expected");r.connected=$root.WifiConnectedState.fromObject(e.connected)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.status=r.enums===String?"Success":0,o.staState=r.enums===String?"Connected":0),e.status!=null&&e.hasOwnProperty("status")&&(o.status=r.enums===String?$root.Status[e.status]===void 0?e.status:$root.Status[e.status]:e.status),e.staState!=null&&e.hasOwnProperty("staState")&&(o.staState=r.enums===String?$root.WifiStationState[e.staState]===void 0?e.staState:$root.WifiStationState[e.staState]:e.staState),e.failReason!=null&&e.hasOwnProperty("failReason")&&(o.failReason=r.enums===String?$root.WifiConnectFailedReason[e.failReason]===void 0?e.failReason:$root.WifiConnectFailedReason[e.failReason]:e.failReason,r.oneofs&&(o.state="failReason")),e.connected!=null&&e.hasOwnProperty("connected")&&(o.connected=$root.WifiConnectedState.toObject(e.connected,r),r.oneofs&&(o.state="connected")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/RespGetStatus"},i})();const CmdSetConfig=$root.CmdSetConfig=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.ssid=$util.newBuffer([]),i.prototype.passphrase=$util.newBuffer([]),i.prototype.bssid=$util.newBuffer([]),i.prototype.channel=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.ssid!=null&&Object.hasOwnProperty.call(t,"ssid")&&e.uint32(10).bytes(t.ssid),t.passphrase!=null&&Object.hasOwnProperty.call(t,"passphrase")&&e.uint32(18).bytes(t.passphrase),t.bssid!=null&&Object.hasOwnProperty.call(t,"bssid")&&e.uint32(26).bytes(t.bssid),t.channel!=null&&Object.hasOwnProperty.call(t,"channel")&&e.uint32(32).int32(t.channel),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdSetConfig;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.ssid=t.bytes();break}case 2:{s.passphrase=t.bytes();break}case 3:{s.bssid=t.bytes();break}case 4:{s.channel=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.ssid!=null&&t.hasOwnProperty("ssid")&&!(t.ssid&&typeof t.ssid.length=="number"||$util.isString(t.ssid))?"ssid: buffer expected":t.passphrase!=null&&t.hasOwnProperty("passphrase")&&!(t.passphrase&&typeof t.passphrase.length=="number"||$util.isString(t.passphrase))?"passphrase: buffer expected":t.bssid!=null&&t.hasOwnProperty("bssid")&&!(t.bssid&&typeof t.bssid.length=="number"||$util.isString(t.bssid))?"bssid: buffer expected":t.channel!=null&&t.hasOwnProperty("channel")&&!$util.isInteger(t.channel)?"channel: integer expected":null},i.fromObject=function(t){if(t instanceof $root.CmdSetConfig)return t;let e=new $root.CmdSetConfig;return t.ssid!=null&&(typeof t.ssid=="string"?$util.base64.decode(t.ssid,e.ssid=$util.newBuffer($util.base64.length(t.ssid)),0):t.ssid.length>=0&&(e.ssid=t.ssid)),t.passphrase!=null&&(typeof t.passphrase=="string"?$util.base64.decode(t.passphrase,e.passphrase=$util.newBuffer($util.base64.length(t.passphrase)),0):t.passphrase.length>=0&&(e.passphrase=t.passphrase)),t.bssid!=null&&(typeof t.bssid=="string"?$util.base64.decode(t.bssid,e.bssid=$util.newBuffer($util.base64.length(t.bssid)),0):t.bssid.length>=0&&(e.bssid=t.bssid)),t.channel!=null&&(e.channel=t.channel|0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.ssid="":(r.ssid=[],e.bytes!==Array&&(r.ssid=$util.newBuffer(r.ssid))),e.bytes===String?r.passphrase="":(r.passphrase=[],e.bytes!==Array&&(r.passphrase=$util.newBuffer(r.passphrase))),e.bytes===String?r.bssid="":(r.bssid=[],e.bytes!==Array&&(r.bssid=$util.newBuffer(r.bssid))),r.channel=0),t.ssid!=null&&t.hasOwnProperty("ssid")&&(r.ssid=e.bytes===String?$util.base64.encode(t.ssid,0,t.ssid.length):e.bytes===Array?Array.prototype.slice.call(t.ssid):t.ssid),t.passphrase!=null&&t.hasOwnProperty("passphrase")&&(r.passphrase=e.bytes===String?$util.base64.encode(t.passphrase,0,t.passphrase.length):e.bytes===Array?Array.prototype.slice.call(t.passphrase):t.passphrase),t.bssid!=null&&t.hasOwnProperty("bssid")&&(r.bssid=e.bytes===String?$util.base64.encode(t.bssid,0,t.bssid.length):e.bytes===Array?Array.prototype.slice.call(t.bssid):t.bssid),t.channel!=null&&t.hasOwnProperty("channel")&&(r.channel=t.channel),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdSetConfig"},i})();$root.RespSetConfig=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespSetConfig;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return null},i.fromObject=function(t){if(t instanceof $root.RespSetConfig)return t;let e=new $root.RespSetConfig;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespSetConfig"},i})();const CmdApplyConfig=$root.CmdApplyConfig=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdApplyConfig;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdApplyConfig?t:new $root.CmdApplyConfig},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdApplyConfig"},i})();$root.RespApplyConfig=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.status=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.status!=null&&Object.hasOwnProperty.call(t,"status")&&e.uint32(8).int32(t.status),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespApplyConfig;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.status=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.status!=null&&t.hasOwnProperty("status"))switch(t.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return null},i.fromObject=function(t){if(t instanceof $root.RespApplyConfig)return t;let e=new $root.RespApplyConfig;switch(t.status){default:if(typeof t.status=="number"){e.status=t.status;break}break;case"Success":case 0:e.status=0;break;case"InvalidSecScheme":case 1:e.status=1;break;case"InvalidProto":case 2:e.status=2;break;case"TooManySessions":case 3:e.status=3;break;case"InvalidArgument":case 4:e.status=4;break;case"InternalError":case 5:e.status=5;break;case"CryptoError":case 6:e.status=6;break;case"InvalidSession":case 7:e.status=7;break}return e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.status=e.enums===String?"Success":0),t.status!=null&&t.hasOwnProperty("status")&&(r.status=e.enums===String?$root.Status[t.status]===void 0?t.status:$root.Status[t.status]:t.status),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespApplyConfig"},i})();const WiFiConfigMsgType=$root.WiFiConfigMsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="TypeCmdGetStatus"]=0,n[i[1]="TypeRespGetStatus"]=1,n[i[2]="TypeCmdSetConfig"]=2,n[i[3]="TypeRespSetConfig"]=3,n[i[4]="TypeCmdApplyConfig"]=4,n[i[5]="TypeRespApplyConfig"]=5,n})(),WiFiConfigPayload=$root.WiFiConfigPayload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.cmdGetStatus=null,i.prototype.respGetStatus=null,i.prototype.cmdSetConfig=null,i.prototype.respSetConfig=null,i.prototype.cmdApplyConfig=null,i.prototype.respApplyConfig=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["cmdGetStatus","respGetStatus","cmdSetConfig","respSetConfig","cmdApplyConfig","respApplyConfig"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.cmdGetStatus!=null&&Object.hasOwnProperty.call(e,"cmdGetStatus")&&$root.CmdGetStatus.encode(e.cmdGetStatus,r.uint32(82).fork()).ldelim(),e.respGetStatus!=null&&Object.hasOwnProperty.call(e,"respGetStatus")&&$root.RespGetStatus.encode(e.respGetStatus,r.uint32(90).fork()).ldelim(),e.cmdSetConfig!=null&&Object.hasOwnProperty.call(e,"cmdSetConfig")&&$root.CmdSetConfig.encode(e.cmdSetConfig,r.uint32(98).fork()).ldelim(),e.respSetConfig!=null&&Object.hasOwnProperty.call(e,"respSetConfig")&&$root.RespSetConfig.encode(e.respSetConfig,r.uint32(106).fork()).ldelim(),e.cmdApplyConfig!=null&&Object.hasOwnProperty.call(e,"cmdApplyConfig")&&$root.CmdApplyConfig.encode(e.cmdApplyConfig,r.uint32(114).fork()).ldelim(),e.respApplyConfig!=null&&Object.hasOwnProperty.call(e,"respApplyConfig")&&$root.RespApplyConfig.encode(e.respApplyConfig,r.uint32(122).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.WiFiConfigPayload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 10:{c.cmdGetStatus=$root.CmdGetStatus.decode(e,e.uint32());break}case 11:{c.respGetStatus=$root.RespGetStatus.decode(e,e.uint32());break}case 12:{c.cmdSetConfig=$root.CmdSetConfig.decode(e,e.uint32());break}case 13:{c.respSetConfig=$root.RespSetConfig.decode(e,e.uint32());break}case 14:{c.cmdApplyConfig=$root.CmdApplyConfig.decode(e,e.uint32());break}case 15:{c.respApplyConfig=$root.RespApplyConfig.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:break}if(e.cmdGetStatus!=null&&e.hasOwnProperty("cmdGetStatus")){r.payload=1;{let o=$root.CmdGetStatus.verify(e.cmdGetStatus);if(o)return"cmdGetStatus."+o}}if(e.respGetStatus!=null&&e.hasOwnProperty("respGetStatus")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespGetStatus.verify(e.respGetStatus);if(o)return"respGetStatus."+o}}if(e.cmdSetConfig!=null&&e.hasOwnProperty("cmdSetConfig")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdSetConfig.verify(e.cmdSetConfig);if(o)return"cmdSetConfig."+o}}if(e.respSetConfig!=null&&e.hasOwnProperty("respSetConfig")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespSetConfig.verify(e.respSetConfig);if(o)return"respSetConfig."+o}}if(e.cmdApplyConfig!=null&&e.hasOwnProperty("cmdApplyConfig")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdApplyConfig.verify(e.cmdApplyConfig);if(o)return"cmdApplyConfig."+o}}if(e.respApplyConfig!=null&&e.hasOwnProperty("respApplyConfig")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespApplyConfig.verify(e.respApplyConfig);if(o)return"respApplyConfig."+o}}return null},i.fromObject=function(e){if(e instanceof $root.WiFiConfigPayload)return e;let r=new $root.WiFiConfigPayload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"TypeCmdGetStatus":case 0:r.msg=0;break;case"TypeRespGetStatus":case 1:r.msg=1;break;case"TypeCmdSetConfig":case 2:r.msg=2;break;case"TypeRespSetConfig":case 3:r.msg=3;break;case"TypeCmdApplyConfig":case 4:r.msg=4;break;case"TypeRespApplyConfig":case 5:r.msg=5;break}if(e.cmdGetStatus!=null){if(typeof e.cmdGetStatus!="object")throw TypeError(".WiFiConfigPayload.cmdGetStatus: object expected");r.cmdGetStatus=$root.CmdGetStatus.fromObject(e.cmdGetStatus)}if(e.respGetStatus!=null){if(typeof e.respGetStatus!="object")throw TypeError(".WiFiConfigPayload.respGetStatus: object expected");r.respGetStatus=$root.RespGetStatus.fromObject(e.respGetStatus)}if(e.cmdSetConfig!=null){if(typeof e.cmdSetConfig!="object")throw TypeError(".WiFiConfigPayload.cmdSetConfig: object expected");r.cmdSetConfig=$root.CmdSetConfig.fromObject(e.cmdSetConfig)}if(e.respSetConfig!=null){if(typeof e.respSetConfig!="object")throw TypeError(".WiFiConfigPayload.respSetConfig: object expected");r.respSetConfig=$root.RespSetConfig.fromObject(e.respSetConfig)}if(e.cmdApplyConfig!=null){if(typeof e.cmdApplyConfig!="object")throw TypeError(".WiFiConfigPayload.cmdApplyConfig: object expected");r.cmdApplyConfig=$root.CmdApplyConfig.fromObject(e.cmdApplyConfig)}if(e.respApplyConfig!=null){if(typeof e.respApplyConfig!="object")throw TypeError(".WiFiConfigPayload.respApplyConfig: object expected");r.respApplyConfig=$root.RespApplyConfig.fromObject(e.respApplyConfig)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"TypeCmdGetStatus":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.WiFiConfigMsgType[e.msg]===void 0?e.msg:$root.WiFiConfigMsgType[e.msg]:e.msg),e.cmdGetStatus!=null&&e.hasOwnProperty("cmdGetStatus")&&(o.cmdGetStatus=$root.CmdGetStatus.toObject(e.cmdGetStatus,r),r.oneofs&&(o.payload="cmdGetStatus")),e.respGetStatus!=null&&e.hasOwnProperty("respGetStatus")&&(o.respGetStatus=$root.RespGetStatus.toObject(e.respGetStatus,r),r.oneofs&&(o.payload="respGetStatus")),e.cmdSetConfig!=null&&e.hasOwnProperty("cmdSetConfig")&&(o.cmdSetConfig=$root.CmdSetConfig.toObject(e.cmdSetConfig,r),r.oneofs&&(o.payload="cmdSetConfig")),e.respSetConfig!=null&&e.hasOwnProperty("respSetConfig")&&(o.respSetConfig=$root.RespSetConfig.toObject(e.respSetConfig,r),r.oneofs&&(o.payload="respSetConfig")),e.cmdApplyConfig!=null&&e.hasOwnProperty("cmdApplyConfig")&&(o.cmdApplyConfig=$root.CmdApplyConfig.toObject(e.cmdApplyConfig,r),r.oneofs&&(o.payload="cmdApplyConfig")),e.respApplyConfig!=null&&e.hasOwnProperty("respApplyConfig")&&(o.respApplyConfig=$root.RespApplyConfig.toObject(e.respApplyConfig,r),r.oneofs&&(o.payload="respApplyConfig")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/WiFiConfigPayload"},i})(),WifiStationState=$root.WifiStationState=(()=>{const i={},n=Object.create(i);return n[i[0]="Connected"]=0,n[i[1]="Connecting"]=1,n[i[2]="Disconnected"]=2,n[i[3]="ConnectionFailed"]=3,n})(),WifiConnectFailedReason=$root.WifiConnectFailedReason=(()=>{const i={},n=Object.create(i);return n[i[0]="AuthError"]=0,n[i[1]="NetworkNotFound"]=1,n})(),WifiAuthMode=$root.WifiAuthMode=(()=>{const i={},n=Object.create(i);return n[i[0]="Open"]=0,n[i[1]="WEP"]=1,n[i[2]="WPA_PSK"]=2,n[i[3]="WPA2_PSK"]=3,n[i[4]="WPA_WPA2_PSK"]=4,n[i[5]="WPA2_ENTERPRISE"]=5,n[i[6]="WPA3_PSK"]=6,n[i[7]="WPA2_WPA3_PSK"]=7,n})();$root.WifiConnectedState=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.ip4Addr="",i.prototype.authMode=0,i.prototype.ssid=$util.newBuffer([]),i.prototype.bssid=$util.newBuffer([]),i.prototype.channel=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.ip4Addr!=null&&Object.hasOwnProperty.call(t,"ip4Addr")&&e.uint32(10).string(t.ip4Addr),t.authMode!=null&&Object.hasOwnProperty.call(t,"authMode")&&e.uint32(16).int32(t.authMode),t.ssid!=null&&Object.hasOwnProperty.call(t,"ssid")&&e.uint32(26).bytes(t.ssid),t.bssid!=null&&Object.hasOwnProperty.call(t,"bssid")&&e.uint32(34).bytes(t.bssid),t.channel!=null&&Object.hasOwnProperty.call(t,"channel")&&e.uint32(40).int32(t.channel),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.WifiConnectedState;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.ip4Addr=t.string();break}case 2:{s.authMode=t.int32();break}case 3:{s.ssid=t.bytes();break}case 4:{s.bssid=t.bytes();break}case 5:{s.channel=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.ip4Addr!=null&&t.hasOwnProperty("ip4Addr")&&!$util.isString(t.ip4Addr))return"ip4Addr: string expected";if(t.authMode!=null&&t.hasOwnProperty("authMode"))switch(t.authMode){default:return"authMode: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return t.ssid!=null&&t.hasOwnProperty("ssid")&&!(t.ssid&&typeof t.ssid.length=="number"||$util.isString(t.ssid))?"ssid: buffer expected":t.bssid!=null&&t.hasOwnProperty("bssid")&&!(t.bssid&&typeof t.bssid.length=="number"||$util.isString(t.bssid))?"bssid: buffer expected":t.channel!=null&&t.hasOwnProperty("channel")&&!$util.isInteger(t.channel)?"channel: integer expected":null},i.fromObject=function(t){if(t instanceof $root.WifiConnectedState)return t;let e=new $root.WifiConnectedState;switch(t.ip4Addr!=null&&(e.ip4Addr=String(t.ip4Addr)),t.authMode){default:if(typeof t.authMode=="number"){e.authMode=t.authMode;break}break;case"Open":case 0:e.authMode=0;break;case"WEP":case 1:e.authMode=1;break;case"WPA_PSK":case 2:e.authMode=2;break;case"WPA2_PSK":case 3:e.authMode=3;break;case"WPA_WPA2_PSK":case 4:e.authMode=4;break;case"WPA2_ENTERPRISE":case 5:e.authMode=5;break;case"WPA3_PSK":case 6:e.authMode=6;break;case"WPA2_WPA3_PSK":case 7:e.authMode=7;break}return t.ssid!=null&&(typeof t.ssid=="string"?$util.base64.decode(t.ssid,e.ssid=$util.newBuffer($util.base64.length(t.ssid)),0):t.ssid.length>=0&&(e.ssid=t.ssid)),t.bssid!=null&&(typeof t.bssid=="string"?$util.base64.decode(t.bssid,e.bssid=$util.newBuffer($util.base64.length(t.bssid)),0):t.bssid.length>=0&&(e.bssid=t.bssid)),t.channel!=null&&(e.channel=t.channel|0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.ip4Addr="",r.authMode=e.enums===String?"Open":0,e.bytes===String?r.ssid="":(r.ssid=[],e.bytes!==Array&&(r.ssid=$util.newBuffer(r.ssid))),e.bytes===String?r.bssid="":(r.bssid=[],e.bytes!==Array&&(r.bssid=$util.newBuffer(r.bssid))),r.channel=0),t.ip4Addr!=null&&t.hasOwnProperty("ip4Addr")&&(r.ip4Addr=t.ip4Addr),t.authMode!=null&&t.hasOwnProperty("authMode")&&(r.authMode=e.enums===String?$root.WifiAuthMode[t.authMode]===void 0?t.authMode:$root.WifiAuthMode[t.authMode]:t.authMode),t.ssid!=null&&t.hasOwnProperty("ssid")&&(r.ssid=e.bytes===String?$util.base64.encode(t.ssid,0,t.ssid.length):e.bytes===Array?Array.prototype.slice.call(t.ssid):t.ssid),t.bssid!=null&&t.hasOwnProperty("bssid")&&(r.bssid=e.bytes===String?$util.base64.encode(t.bssid,0,t.bssid.length):e.bytes===Array?Array.prototype.slice.call(t.bssid):t.bssid),t.channel!=null&&t.hasOwnProperty("channel")&&(r.channel=t.channel),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/WifiConnectedState"},i})();$root.CmdCtrlReset=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdCtrlReset;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdCtrlReset?t:new $root.CmdCtrlReset},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdCtrlReset"},i})();$root.RespCtrlReset=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespCtrlReset;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.RespCtrlReset?t:new $root.RespCtrlReset},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespCtrlReset"},i})();$root.CmdCtrlReprov=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdCtrlReprov;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdCtrlReprov?t:new $root.CmdCtrlReprov},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdCtrlReprov"},i})();$root.RespCtrlReprov=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespCtrlReprov;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.RespCtrlReprov?t:new $root.RespCtrlReprov},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespCtrlReprov"},i})();$root.WiFiCtrlMsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="TypeCtrlReserved"]=0,n[i[1]="TypeCmdCtrlReset"]=1,n[i[2]="TypeRespCtrlReset"]=2,n[i[3]="TypeCmdCtrlReprov"]=3,n[i[4]="TypeRespCtrlReprov"]=4,n})();$root.WiFiCtrlPayload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.status=0,i.prototype.cmdCtrlReset=null,i.prototype.respCtrlReset=null,i.prototype.cmdCtrlReprov=null,i.prototype.respCtrlReprov=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["cmdCtrlReset","respCtrlReset","cmdCtrlReprov","respCtrlReprov"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.status!=null&&Object.hasOwnProperty.call(e,"status")&&r.uint32(16).int32(e.status),e.cmdCtrlReset!=null&&Object.hasOwnProperty.call(e,"cmdCtrlReset")&&$root.CmdCtrlReset.encode(e.cmdCtrlReset,r.uint32(90).fork()).ldelim(),e.respCtrlReset!=null&&Object.hasOwnProperty.call(e,"respCtrlReset")&&$root.RespCtrlReset.encode(e.respCtrlReset,r.uint32(98).fork()).ldelim(),e.cmdCtrlReprov!=null&&Object.hasOwnProperty.call(e,"cmdCtrlReprov")&&$root.CmdCtrlReprov.encode(e.cmdCtrlReprov,r.uint32(106).fork()).ldelim(),e.respCtrlReprov!=null&&Object.hasOwnProperty.call(e,"respCtrlReprov")&&$root.RespCtrlReprov.encode(e.respCtrlReprov,r.uint32(114).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.WiFiCtrlPayload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 2:{c.status=e.int32();break}case 11:{c.cmdCtrlReset=$root.CmdCtrlReset.decode(e,e.uint32());break}case 12:{c.respCtrlReset=$root.RespCtrlReset.decode(e,e.uint32());break}case 13:{c.cmdCtrlReprov=$root.CmdCtrlReprov.decode(e,e.uint32());break}case 14:{c.respCtrlReprov=$root.RespCtrlReprov.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:case 4:break}if(e.status!=null&&e.hasOwnProperty("status"))switch(e.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}if(e.cmdCtrlReset!=null&&e.hasOwnProperty("cmdCtrlReset")){r.payload=1;{let o=$root.CmdCtrlReset.verify(e.cmdCtrlReset);if(o)return"cmdCtrlReset."+o}}if(e.respCtrlReset!=null&&e.hasOwnProperty("respCtrlReset")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespCtrlReset.verify(e.respCtrlReset);if(o)return"respCtrlReset."+o}}if(e.cmdCtrlReprov!=null&&e.hasOwnProperty("cmdCtrlReprov")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdCtrlReprov.verify(e.cmdCtrlReprov);if(o)return"cmdCtrlReprov."+o}}if(e.respCtrlReprov!=null&&e.hasOwnProperty("respCtrlReprov")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespCtrlReprov.verify(e.respCtrlReprov);if(o)return"respCtrlReprov."+o}}return null},i.fromObject=function(e){if(e instanceof $root.WiFiCtrlPayload)return e;let r=new $root.WiFiCtrlPayload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"TypeCtrlReserved":case 0:r.msg=0;break;case"TypeCmdCtrlReset":case 1:r.msg=1;break;case"TypeRespCtrlReset":case 2:r.msg=2;break;case"TypeCmdCtrlReprov":case 3:r.msg=3;break;case"TypeRespCtrlReprov":case 4:r.msg=4;break}switch(e.status){default:if(typeof e.status=="number"){r.status=e.status;break}break;case"Success":case 0:r.status=0;break;case"InvalidSecScheme":case 1:r.status=1;break;case"InvalidProto":case 2:r.status=2;break;case"TooManySessions":case 3:r.status=3;break;case"InvalidArgument":case 4:r.status=4;break;case"InternalError":case 5:r.status=5;break;case"CryptoError":case 6:r.status=6;break;case"InvalidSession":case 7:r.status=7;break}if(e.cmdCtrlReset!=null){if(typeof e.cmdCtrlReset!="object")throw TypeError(".WiFiCtrlPayload.cmdCtrlReset: object expected");r.cmdCtrlReset=$root.CmdCtrlReset.fromObject(e.cmdCtrlReset)}if(e.respCtrlReset!=null){if(typeof e.respCtrlReset!="object")throw TypeError(".WiFiCtrlPayload.respCtrlReset: object expected");r.respCtrlReset=$root.RespCtrlReset.fromObject(e.respCtrlReset)}if(e.cmdCtrlReprov!=null){if(typeof e.cmdCtrlReprov!="object")throw TypeError(".WiFiCtrlPayload.cmdCtrlReprov: object expected");r.cmdCtrlReprov=$root.CmdCtrlReprov.fromObject(e.cmdCtrlReprov)}if(e.respCtrlReprov!=null){if(typeof e.respCtrlReprov!="object")throw TypeError(".WiFiCtrlPayload.respCtrlReprov: object expected");r.respCtrlReprov=$root.RespCtrlReprov.fromObject(e.respCtrlReprov)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"TypeCtrlReserved":0,o.status=r.enums===String?"Success":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.WiFiCtrlMsgType[e.msg]===void 0?e.msg:$root.WiFiCtrlMsgType[e.msg]:e.msg),e.status!=null&&e.hasOwnProperty("status")&&(o.status=r.enums===String?$root.Status[e.status]===void 0?e.status:$root.Status[e.status]:e.status),e.cmdCtrlReset!=null&&e.hasOwnProperty("cmdCtrlReset")&&(o.cmdCtrlReset=$root.CmdCtrlReset.toObject(e.cmdCtrlReset,r),r.oneofs&&(o.payload="cmdCtrlReset")),e.respCtrlReset!=null&&e.hasOwnProperty("respCtrlReset")&&(o.respCtrlReset=$root.RespCtrlReset.toObject(e.respCtrlReset,r),r.oneofs&&(o.payload="respCtrlReset")),e.cmdCtrlReprov!=null&&e.hasOwnProperty("cmdCtrlReprov")&&(o.cmdCtrlReprov=$root.CmdCtrlReprov.toObject(e.cmdCtrlReprov,r),r.oneofs&&(o.payload="cmdCtrlReprov")),e.respCtrlReprov!=null&&e.hasOwnProperty("respCtrlReprov")&&(o.respCtrlReprov=$root.RespCtrlReprov.toObject(e.respCtrlReprov,r),r.oneofs&&(o.payload="respCtrlReprov")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/WiFiCtrlPayload"},i})();const CmdScanStart=$root.CmdScanStart=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.blocking=!1,i.prototype.passive=!1,i.prototype.groupChannels=0,i.prototype.periodMs=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.blocking!=null&&Object.hasOwnProperty.call(t,"blocking")&&e.uint32(8).bool(t.blocking),t.passive!=null&&Object.hasOwnProperty.call(t,"passive")&&e.uint32(16).bool(t.passive),t.groupChannels!=null&&Object.hasOwnProperty.call(t,"groupChannels")&&e.uint32(24).uint32(t.groupChannels),t.periodMs!=null&&Object.hasOwnProperty.call(t,"periodMs")&&e.uint32(32).uint32(t.periodMs),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdScanStart;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.blocking=t.bool();break}case 2:{s.passive=t.bool();break}case 3:{s.groupChannels=t.uint32();break}case 4:{s.periodMs=t.uint32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.blocking!=null&&t.hasOwnProperty("blocking")&&typeof t.blocking!="boolean"?"blocking: boolean expected":t.passive!=null&&t.hasOwnProperty("passive")&&typeof t.passive!="boolean"?"passive: boolean expected":t.groupChannels!=null&&t.hasOwnProperty("groupChannels")&&!$util.isInteger(t.groupChannels)?"groupChannels: integer expected":t.periodMs!=null&&t.hasOwnProperty("periodMs")&&!$util.isInteger(t.periodMs)?"periodMs: integer expected":null},i.fromObject=function(t){if(t instanceof $root.CmdScanStart)return t;let e=new $root.CmdScanStart;return t.blocking!=null&&(e.blocking=!!t.blocking),t.passive!=null&&(e.passive=!!t.passive),t.groupChannels!=null&&(e.groupChannels=t.groupChannels>>>0),t.periodMs!=null&&(e.periodMs=t.periodMs>>>0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.blocking=!1,r.passive=!1,r.groupChannels=0,r.periodMs=0),t.blocking!=null&&t.hasOwnProperty("blocking")&&(r.blocking=t.blocking),t.passive!=null&&t.hasOwnProperty("passive")&&(r.passive=t.passive),t.groupChannels!=null&&t.hasOwnProperty("groupChannels")&&(r.groupChannels=t.groupChannels),t.periodMs!=null&&t.hasOwnProperty("periodMs")&&(r.periodMs=t.periodMs),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdScanStart"},i})();$root.RespScanStart=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespScanStart;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.RespScanStart?t:new $root.RespScanStart},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespScanStart"},i})();const CmdScanStatus=$root.CmdScanStatus=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdScanStatus;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":null},i.fromObject=function(t){return t instanceof $root.CmdScanStatus?t:new $root.CmdScanStatus},i.toObject=function(){return{}},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdScanStatus"},i})();$root.RespScanStatus=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.scanFinished=!1,i.prototype.resultCount=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.scanFinished!=null&&Object.hasOwnProperty.call(t,"scanFinished")&&e.uint32(8).bool(t.scanFinished),t.resultCount!=null&&Object.hasOwnProperty.call(t,"resultCount")&&e.uint32(16).uint32(t.resultCount),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespScanStatus;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.scanFinished=t.bool();break}case 2:{s.resultCount=t.uint32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.scanFinished!=null&&t.hasOwnProperty("scanFinished")&&typeof t.scanFinished!="boolean"?"scanFinished: boolean expected":t.resultCount!=null&&t.hasOwnProperty("resultCount")&&!$util.isInteger(t.resultCount)?"resultCount: integer expected":null},i.fromObject=function(t){if(t instanceof $root.RespScanStatus)return t;let e=new $root.RespScanStatus;return t.scanFinished!=null&&(e.scanFinished=!!t.scanFinished),t.resultCount!=null&&(e.resultCount=t.resultCount>>>0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.scanFinished=!1,r.resultCount=0),t.scanFinished!=null&&t.hasOwnProperty("scanFinished")&&(r.scanFinished=t.scanFinished),t.resultCount!=null&&t.hasOwnProperty("resultCount")&&(r.resultCount=t.resultCount),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespScanStatus"},i})();const CmdScanResult=$root.CmdScanResult=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.startIndex=0,i.prototype.count=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.startIndex!=null&&Object.hasOwnProperty.call(t,"startIndex")&&e.uint32(8).uint32(t.startIndex),t.count!=null&&Object.hasOwnProperty.call(t,"count")&&e.uint32(16).uint32(t.count),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.CmdScanResult;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.startIndex=t.uint32();break}case 2:{s.count=t.uint32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){return typeof t!="object"||t===null?"object expected":t.startIndex!=null&&t.hasOwnProperty("startIndex")&&!$util.isInteger(t.startIndex)?"startIndex: integer expected":t.count!=null&&t.hasOwnProperty("count")&&!$util.isInteger(t.count)?"count: integer expected":null},i.fromObject=function(t){if(t instanceof $root.CmdScanResult)return t;let e=new $root.CmdScanResult;return t.startIndex!=null&&(e.startIndex=t.startIndex>>>0),t.count!=null&&(e.count=t.count>>>0),e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(r.startIndex=0,r.count=0),t.startIndex!=null&&t.hasOwnProperty("startIndex")&&(r.startIndex=t.startIndex),t.count!=null&&t.hasOwnProperty("count")&&(r.count=t.count),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/CmdScanResult"},i})();$root.WiFiScanResult=(()=>{function i(n){if(n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.ssid=$util.newBuffer([]),i.prototype.channel=0,i.prototype.rssi=0,i.prototype.bssid=$util.newBuffer([]),i.prototype.auth=0,i.create=function(t){return new i(t)},i.encode=function(t,e){return e||(e=$Writer.create()),t.ssid!=null&&Object.hasOwnProperty.call(t,"ssid")&&e.uint32(10).bytes(t.ssid),t.channel!=null&&Object.hasOwnProperty.call(t,"channel")&&e.uint32(16).uint32(t.channel),t.rssi!=null&&Object.hasOwnProperty.call(t,"rssi")&&e.uint32(24).int32(t.rssi),t.bssid!=null&&Object.hasOwnProperty.call(t,"bssid")&&e.uint32(34).bytes(t.bssid),t.auth!=null&&Object.hasOwnProperty.call(t,"auth")&&e.uint32(40).int32(t.auth),e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.WiFiScanResult;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.ssid=t.bytes();break}case 2:{s.channel=t.uint32();break}case 3:{s.rssi=t.int32();break}case 4:{s.bssid=t.bytes();break}case 5:{s.auth=t.int32();break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.ssid!=null&&t.hasOwnProperty("ssid")&&!(t.ssid&&typeof t.ssid.length=="number"||$util.isString(t.ssid)))return"ssid: buffer expected";if(t.channel!=null&&t.hasOwnProperty("channel")&&!$util.isInteger(t.channel))return"channel: integer expected";if(t.rssi!=null&&t.hasOwnProperty("rssi")&&!$util.isInteger(t.rssi))return"rssi: integer expected";if(t.bssid!=null&&t.hasOwnProperty("bssid")&&!(t.bssid&&typeof t.bssid.length=="number"||$util.isString(t.bssid)))return"bssid: buffer expected";if(t.auth!=null&&t.hasOwnProperty("auth"))switch(t.auth){default:return"auth: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}return null},i.fromObject=function(t){if(t instanceof $root.WiFiScanResult)return t;let e=new $root.WiFiScanResult;switch(t.ssid!=null&&(typeof t.ssid=="string"?$util.base64.decode(t.ssid,e.ssid=$util.newBuffer($util.base64.length(t.ssid)),0):t.ssid.length>=0&&(e.ssid=t.ssid)),t.channel!=null&&(e.channel=t.channel>>>0),t.rssi!=null&&(e.rssi=t.rssi|0),t.bssid!=null&&(typeof t.bssid=="string"?$util.base64.decode(t.bssid,e.bssid=$util.newBuffer($util.base64.length(t.bssid)),0):t.bssid.length>=0&&(e.bssid=t.bssid)),t.auth){default:if(typeof t.auth=="number"){e.auth=t.auth;break}break;case"Open":case 0:e.auth=0;break;case"WEP":case 1:e.auth=1;break;case"WPA_PSK":case 2:e.auth=2;break;case"WPA2_PSK":case 3:e.auth=3;break;case"WPA_WPA2_PSK":case 4:e.auth=4;break;case"WPA2_ENTERPRISE":case 5:e.auth=5;break;case"WPA3_PSK":case 6:e.auth=6;break;case"WPA2_WPA3_PSK":case 7:e.auth=7;break}return e},i.toObject=function(t,e){e||(e={});let r={};return e.defaults&&(e.bytes===String?r.ssid="":(r.ssid=[],e.bytes!==Array&&(r.ssid=$util.newBuffer(r.ssid))),r.channel=0,r.rssi=0,e.bytes===String?r.bssid="":(r.bssid=[],e.bytes!==Array&&(r.bssid=$util.newBuffer(r.bssid))),r.auth=e.enums===String?"Open":0),t.ssid!=null&&t.hasOwnProperty("ssid")&&(r.ssid=e.bytes===String?$util.base64.encode(t.ssid,0,t.ssid.length):e.bytes===Array?Array.prototype.slice.call(t.ssid):t.ssid),t.channel!=null&&t.hasOwnProperty("channel")&&(r.channel=t.channel),t.rssi!=null&&t.hasOwnProperty("rssi")&&(r.rssi=t.rssi),t.bssid!=null&&t.hasOwnProperty("bssid")&&(r.bssid=e.bytes===String?$util.base64.encode(t.bssid,0,t.bssid.length):e.bytes===Array?Array.prototype.slice.call(t.bssid):t.bssid),t.auth!=null&&t.hasOwnProperty("auth")&&(r.auth=e.enums===String?$root.WifiAuthMode[t.auth]===void 0?t.auth:$root.WifiAuthMode[t.auth]:t.auth),r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/WiFiScanResult"},i})();$root.RespScanResult=(()=>{function i(n){if(this.entries=[],n)for(let t=Object.keys(n),e=0;e<t.length;++e)n[t[e]]!=null&&(this[t[e]]=n[t[e]])}return i.prototype.entries=$util.emptyArray,i.create=function(t){return new i(t)},i.encode=function(t,e){if(e||(e=$Writer.create()),t.entries!=null&&t.entries.length)for(let r=0;r<t.entries.length;++r)$root.WiFiScanResult.encode(t.entries[r],e.uint32(10).fork()).ldelim();return e},i.encodeDelimited=function(t,e){return this.encode(t,e).ldelim()},i.decode=function(t,e,r){t instanceof $Reader||(t=$Reader.create(t));let o=e===void 0?t.len:t.pos+e,s=new $root.RespScanResult;for(;t.pos<o;){let c=t.uint32();if(c===r)break;switch(c>>>3){case 1:{s.entries&&s.entries.length||(s.entries=[]),s.entries.push($root.WiFiScanResult.decode(t,t.uint32()));break}default:t.skipType(c&7);break}}return s},i.decodeDelimited=function(t){return t instanceof $Reader||(t=new $Reader(t)),this.decode(t,t.uint32())},i.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.entries!=null&&t.hasOwnProperty("entries")){if(!Array.isArray(t.entries))return"entries: array expected";for(let e=0;e<t.entries.length;++e){let r=$root.WiFiScanResult.verify(t.entries[e]);if(r)return"entries."+r}}return null},i.fromObject=function(t){if(t instanceof $root.RespScanResult)return t;let e=new $root.RespScanResult;if(t.entries){if(!Array.isArray(t.entries))throw TypeError(".RespScanResult.entries: array expected");e.entries=[];for(let r=0;r<t.entries.length;++r){if(typeof t.entries[r]!="object")throw TypeError(".RespScanResult.entries: object expected");e.entries[r]=$root.WiFiScanResult.fromObject(t.entries[r])}}return e},i.toObject=function(t,e){e||(e={});let r={};if((e.arrays||e.defaults)&&(r.entries=[]),t.entries&&t.entries.length){r.entries=[];for(let o=0;o<t.entries.length;++o)r.entries[o]=$root.WiFiScanResult.toObject(t.entries[o],e)}return r},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/RespScanResult"},i})();const WiFiScanMsgType=$root.WiFiScanMsgType=(()=>{const i={},n=Object.create(i);return n[i[0]="TypeCmdScanStart"]=0,n[i[1]="TypeRespScanStart"]=1,n[i[2]="TypeCmdScanStatus"]=2,n[i[3]="TypeRespScanStatus"]=3,n[i[4]="TypeCmdScanResult"]=4,n[i[5]="TypeRespScanResult"]=5,n})(),WiFiScanPayload=$root.WiFiScanPayload=(()=>{function i(t){if(t)for(let e=Object.keys(t),r=0;r<e.length;++r)t[e[r]]!=null&&(this[e[r]]=t[e[r]])}i.prototype.msg=0,i.prototype.status=0,i.prototype.cmdScanStart=null,i.prototype.respScanStart=null,i.prototype.cmdScanStatus=null,i.prototype.respScanStatus=null,i.prototype.cmdScanResult=null,i.prototype.respScanResult=null;let n;return Object.defineProperty(i.prototype,"payload",{get:$util.oneOfGetter(n=["cmdScanStart","respScanStart","cmdScanStatus","respScanStatus","cmdScanResult","respScanResult"]),set:$util.oneOfSetter(n)}),i.create=function(e){return new i(e)},i.encode=function(e,r){return r||(r=$Writer.create()),e.msg!=null&&Object.hasOwnProperty.call(e,"msg")&&r.uint32(8).int32(e.msg),e.status!=null&&Object.hasOwnProperty.call(e,"status")&&r.uint32(16).int32(e.status),e.cmdScanStart!=null&&Object.hasOwnProperty.call(e,"cmdScanStart")&&$root.CmdScanStart.encode(e.cmdScanStart,r.uint32(82).fork()).ldelim(),e.respScanStart!=null&&Object.hasOwnProperty.call(e,"respScanStart")&&$root.RespScanStart.encode(e.respScanStart,r.uint32(90).fork()).ldelim(),e.cmdScanStatus!=null&&Object.hasOwnProperty.call(e,"cmdScanStatus")&&$root.CmdScanStatus.encode(e.cmdScanStatus,r.uint32(98).fork()).ldelim(),e.respScanStatus!=null&&Object.hasOwnProperty.call(e,"respScanStatus")&&$root.RespScanStatus.encode(e.respScanStatus,r.uint32(106).fork()).ldelim(),e.cmdScanResult!=null&&Object.hasOwnProperty.call(e,"cmdScanResult")&&$root.CmdScanResult.encode(e.cmdScanResult,r.uint32(114).fork()).ldelim(),e.respScanResult!=null&&Object.hasOwnProperty.call(e,"respScanResult")&&$root.RespScanResult.encode(e.respScanResult,r.uint32(122).fork()).ldelim(),r},i.encodeDelimited=function(e,r){return this.encode(e,r).ldelim()},i.decode=function(e,r,o){e instanceof $Reader||(e=$Reader.create(e));let s=r===void 0?e.len:e.pos+r,c=new $root.WiFiScanPayload;for(;e.pos<s;){let u=e.uint32();if(u===o)break;switch(u>>>3){case 1:{c.msg=e.int32();break}case 2:{c.status=e.int32();break}case 10:{c.cmdScanStart=$root.CmdScanStart.decode(e,e.uint32());break}case 11:{c.respScanStart=$root.RespScanStart.decode(e,e.uint32());break}case 12:{c.cmdScanStatus=$root.CmdScanStatus.decode(e,e.uint32());break}case 13:{c.respScanStatus=$root.RespScanStatus.decode(e,e.uint32());break}case 14:{c.cmdScanResult=$root.CmdScanResult.decode(e,e.uint32());break}case 15:{c.respScanResult=$root.RespScanResult.decode(e,e.uint32());break}default:e.skipType(u&7);break}}return c},i.decodeDelimited=function(e){return e instanceof $Reader||(e=new $Reader(e)),this.decode(e,e.uint32())},i.verify=function(e){if(typeof e!="object"||e===null)return"object expected";let r={};if(e.msg!=null&&e.hasOwnProperty("msg"))switch(e.msg){default:return"msg: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:break}if(e.status!=null&&e.hasOwnProperty("status"))switch(e.status){default:return"status: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:break}if(e.cmdScanStart!=null&&e.hasOwnProperty("cmdScanStart")){r.payload=1;{let o=$root.CmdScanStart.verify(e.cmdScanStart);if(o)return"cmdScanStart."+o}}if(e.respScanStart!=null&&e.hasOwnProperty("respScanStart")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespScanStart.verify(e.respScanStart);if(o)return"respScanStart."+o}}if(e.cmdScanStatus!=null&&e.hasOwnProperty("cmdScanStatus")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdScanStatus.verify(e.cmdScanStatus);if(o)return"cmdScanStatus."+o}}if(e.respScanStatus!=null&&e.hasOwnProperty("respScanStatus")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespScanStatus.verify(e.respScanStatus);if(o)return"respScanStatus."+o}}if(e.cmdScanResult!=null&&e.hasOwnProperty("cmdScanResult")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.CmdScanResult.verify(e.cmdScanResult);if(o)return"cmdScanResult."+o}}if(e.respScanResult!=null&&e.hasOwnProperty("respScanResult")){if(r.payload===1)return"payload: multiple values";r.payload=1;{let o=$root.RespScanResult.verify(e.respScanResult);if(o)return"respScanResult."+o}}return null},i.fromObject=function(e){if(e instanceof $root.WiFiScanPayload)return e;let r=new $root.WiFiScanPayload;switch(e.msg){default:if(typeof e.msg=="number"){r.msg=e.msg;break}break;case"TypeCmdScanStart":case 0:r.msg=0;break;case"TypeRespScanStart":case 1:r.msg=1;break;case"TypeCmdScanStatus":case 2:r.msg=2;break;case"TypeRespScanStatus":case 3:r.msg=3;break;case"TypeCmdScanResult":case 4:r.msg=4;break;case"TypeRespScanResult":case 5:r.msg=5;break}switch(e.status){default:if(typeof e.status=="number"){r.status=e.status;break}break;case"Success":case 0:r.status=0;break;case"InvalidSecScheme":case 1:r.status=1;break;case"InvalidProto":case 2:r.status=2;break;case"TooManySessions":case 3:r.status=3;break;case"InvalidArgument":case 4:r.status=4;break;case"InternalError":case 5:r.status=5;break;case"CryptoError":case 6:r.status=6;break;case"InvalidSession":case 7:r.status=7;break}if(e.cmdScanStart!=null){if(typeof e.cmdScanStart!="object")throw TypeError(".WiFiScanPayload.cmdScanStart: object expected");r.cmdScanStart=$root.CmdScanStart.fromObject(e.cmdScanStart)}if(e.respScanStart!=null){if(typeof e.respScanStart!="object")throw TypeError(".WiFiScanPayload.respScanStart: object expected");r.respScanStart=$root.RespScanStart.fromObject(e.respScanStart)}if(e.cmdScanStatus!=null){if(typeof e.cmdScanStatus!="object")throw TypeError(".WiFiScanPayload.cmdScanStatus: object expected");r.cmdScanStatus=$root.CmdScanStatus.fromObject(e.cmdScanStatus)}if(e.respScanStatus!=null){if(typeof e.respScanStatus!="object")throw TypeError(".WiFiScanPayload.respScanStatus: object expected");r.respScanStatus=$root.RespScanStatus.fromObject(e.respScanStatus)}if(e.cmdScanResult!=null){if(typeof e.cmdScanResult!="object")throw TypeError(".WiFiScanPayload.cmdScanResult: object expected");r.cmdScanResult=$root.CmdScanResult.fromObject(e.cmdScanResult)}if(e.respScanResult!=null){if(typeof e.respScanResult!="object")throw TypeError(".WiFiScanPayload.respScanResult: object expected");r.respScanResult=$root.RespScanResult.fromObject(e.respScanResult)}return r},i.toObject=function(e,r){r||(r={});let o={};return r.defaults&&(o.msg=r.enums===String?"TypeCmdScanStart":0,o.status=r.enums===String?"Success":0),e.msg!=null&&e.hasOwnProperty("msg")&&(o.msg=r.enums===String?$root.WiFiScanMsgType[e.msg]===void 0?e.msg:$root.WiFiScanMsgType[e.msg]:e.msg),e.status!=null&&e.hasOwnProperty("status")&&(o.status=r.enums===String?$root.Status[e.status]===void 0?e.status:$root.Status[e.status]:e.status),e.cmdScanStart!=null&&e.hasOwnProperty("cmdScanStart")&&(o.cmdScanStart=$root.CmdScanStart.toObject(e.cmdScanStart,r),r.oneofs&&(o.payload="cmdScanStart")),e.respScanStart!=null&&e.hasOwnProperty("respScanStart")&&(o.respScanStart=$root.RespScanStart.toObject(e.respScanStart,r),r.oneofs&&(o.payload="respScanStart")),e.cmdScanStatus!=null&&e.hasOwnProperty("cmdScanStatus")&&(o.cmdScanStatus=$root.CmdScanStatus.toObject(e.cmdScanStatus,r),r.oneofs&&(o.payload="cmdScanStatus")),e.respScanStatus!=null&&e.hasOwnProperty("respScanStatus")&&(o.respScanStatus=$root.RespScanStatus.toObject(e.respScanStatus,r),r.oneofs&&(o.payload="respScanStatus")),e.cmdScanResult!=null&&e.hasOwnProperty("cmdScanResult")&&(o.cmdScanResult=$root.CmdScanResult.toObject(e.cmdScanResult,r),r.oneofs&&(o.payload="cmdScanResult")),e.respScanResult!=null&&e.hasOwnProperty("respScanResult")&&(o.respScanResult=$root.RespScanResult.toObject(e.respScanResult,r),r.oneofs&&(o.payload="respScanResult")),o},i.prototype.toJSON=function(){return this.constructor.toObject(this,minimal.util.toJSONOptions)},i.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/WiFiScanPayload"},i})();class Security0 extends Security{constructor(){super(...arguments),this.established=!1}async encrypt(n){return n}async decrypt(n){return n}async getSessionSetupRequest(){let n=SessionData.create({});return n.secVer=SecSchemeVersion.SecScheme0,n.sec0=Sec0Payload.create({msg:Sec0MsgType.S0_Session_Command,sc:S0SessionCmd.create({})}),Sec0Payload.encode(n).finish()}async processSessionSetupResponse(n){const t=SessionData.decode(n);if(t.secVer===SecSchemeVersion.SecScheme0&&t.sec0)this.established=!0;else throw new Error("Invalid session setup response for Security0")}isEstablished(){return this.established}}const PROTO_ENDPOINTS={PROV_SESSION:"prov-session",PROV_SCAN:"prov-scan",PROV_CTRL:"prov-ctrl",PROV_CONFIG:"prov-config",PROTO_VER:"proto-ver"},DEFAULT_DEVICE_PREFIX="PROV_",FALLBACK_SERVICE_UUID="1775244d-6b43-439b-877c-060f2d9bed07",FALLBACK_NU_LOOKUP={"prov-session":"ff51","prov-config":"ff52","proto-ver":"ff53"},DEFAULT_BLE_DEVICE_OPTIONS={filters:[{namePrefix:DEFAULT_DEVICE_PREFIX},{services:[FALLBACK_SERVICE_UUID]}],optionalServices:[FALLBACK_SERVICE_UUID]};var ESPWifiAuthMode=(i=>(i[i.open=0]="open",i[i.wep=1]="wep",i[i.wpa2Enterprise=2]="wpa2Enterprise",i[i.wpa2Psk=3]="wpa2Psk",i[i.wpaPsk=4]="wpaPsk",i[i.wpaWpa2Psk=5]="wpaWpa2Psk",i[i.wpa3Psk=6]="wpa3Psk",i[i.wpa2Wpa3Psk=7]="wpa2Wpa3Psk",i))(ESPWifiAuthMode||{}),ESPWifiStaState=(i=>(i[i.connected=0]="connected",i[i.connecting=1]="connecting",i[i.disconnected=2]="disconnected",i[i.failed=3]="failed",i))(ESPWifiStaState||{}),ESPConnectFailReason=(i=>(i[i.authError=1]="authError",i[i.networkNotFound=2]="networkNotFound",i))(ESPConnectFailReason||{});function wifiAuthModeToESPWifiAuthMode(i){switch(i){case WifiAuthMode.Open:return ESPWifiAuthMode.open;case WifiAuthMode.WEP:return ESPWifiAuthMode.wep;case WifiAuthMode.WPA_PSK:return ESPWifiAuthMode.wpaPsk;case WifiAuthMode.WPA2_PSK:return ESPWifiAuthMode.wpa2Psk;case WifiAuthMode.WPA_WPA2_PSK:return ESPWifiAuthMode.wpaWpa2Psk;case WifiAuthMode.WPA2_ENTERPRISE:return ESPWifiAuthMode.wpa2Enterprise;case WifiAuthMode.WPA3_PSK:return ESPWifiAuthMode.wpa3Psk;case WifiAuthMode.WPA2_WPA3_PSK:return ESPWifiAuthMode.wpa2Wpa3Psk}}function getScanStartRequest(i=!0,n=!1,t=5,e=120){let r=CmdScanStart.create({});r.blocking=i,r.passive=n,r.groupChannels=t,r.periodMs=e;const o=WiFiScanPayload.create({msg:WiFiScanMsgType.TypeCmdScanStart,cmdScanStart:r});return WiFiScanPayload.encode(o).finish()}function processScanStartResponse(i){try{const n=WiFiScanPayload.decode(i);if(n.status!==Status.Success)throw new Error(`Scan start failed: ${n.status}`)}catch(n){console.error("Error processing scan start response:",n)}}function getScanStatusRequest(){const i=WiFiScanPayload.create({msg:WiFiScanMsgType.TypeCmdScanStatus,cmdScanStatus:CmdScanStatus.create({})});return WiFiScanPayload.encode(i).finish()}function processScanStatusResponse(i){try{const n=WiFiScanPayload.decode(i);if(n.status!==Status.Success)throw new Error(`Scan status failed: ${n.status}`);const t=n.respScanStatus;return{scanFinished:t.scanFinished,count:t.resultCount}}catch{throw new Error("Failed to decode scan status response")}}function getScanResultRequest(i,n){let t=CmdScanResult.create({});t.startIndex=i,t.count=n;const e=WiFiScanPayload.create({msg:WiFiScanMsgType.TypeCmdScanResult,cmdScanResult:t});return WiFiScanPayload.encode(e).finish()}function processScanResultResponse(i){try{const n=WiFiScanPayload.decode(i);if(n.status!==Status.Success)throw new Error(`Scan result failed: ${n.status}`);return n.respScanResult.entries.map(r=>{const o=r;return{ssid:bytesToString(o.ssid),rssi:o.rssi,auth:wifiAuthModeToESPWifiAuthMode(o.auth),bssid:bytesToHex(o.bssid),channel:o.channel}})}catch{throw new Error("Failed to decode scan result response")}}function getConfigStatusRequest(){let i=WiFiConfigPayload.create({});return i.msg=WiFiConfigMsgType.TypeCmdGetStatus,i.cmdGetStatus=CmdGetStatus.create({}),WiFiConfigPayload.encode(i).finish()}function processConfigStatusResponse(i){try{const t=WiFiConfigPayload.decode(i).respGetStatus;if(t.status!==Status.Success)throw new Error(`Config status failed: ${t.status}`);let e;switch(t.staState){case WifiStationState.Disconnected:e=ESPWifiStaState.disconnected;break;case WifiStationState.Connecting:e=ESPWifiStaState.connecting;break;case WifiStationState.Connected:e=ESPWifiStaState.connected;break;case WifiStationState.ConnectionFailed:e=ESPWifiStaState.failed;break}let r;switch(t.failReason){case WifiConnectFailedReason.AuthError:r=ESPConnectFailReason.authError;break;case WifiConnectFailedReason.NetworkNotFound:r=ESPConnectFailReason.networkNotFound;break;default:break}let o;return t.connected&&(o={ssid:bytesToString(t.connected.ssid),rssi:t.connected.rssi,auth:wifiAuthModeToESPWifiAuthMode(t.connected.auth),bssid:bytesToHex(t.connected.bssid),channel:t.connected.channel}),{staState:e,failedReason:r,connected:o}}catch{throw new Error("Failed to decode config status response")}}function getConfigUpdateRequest(i,n){let t=WiFiConfigPayload.create({});return t.msg=WiFiConfigMsgType.TypeCmdSetConfig,t.cmdSetConfig=CmdSetConfig.create({ssid:stringToBytes(i),passphrase:stringToBytes(n)}),WiFiConfigPayload.encode(t).finish()}function processConfigUpdateResponse(i){try{const t=WiFiConfigPayload.decode(i).respSetConfig;if(t.status!==Status.Success)throw new Error(`Config update failed: ${t.status}`)}catch{throw new Error("Failed to decode config update response")}}function getConfigApplyRequest(){let i=WiFiConfigPayload.create({});return i.msg=WiFiConfigMsgType.TypeCmdApplyConfig,i.cmdApplyConfig=CmdApplyConfig.create({}),WiFiConfigPayload.encode(i).finish()}function processConfigApplyResponse(i){try{const t=WiFiConfigPayload.decode(i).respApplyConfig;if(t.status!==Status.Success)throw new Error(`Config apply failed: ${t.status}`)}catch{throw new Error("Failed to decode config apply response")}}class ESPDevice{constructor(n){this.device=n}async connect(n){await this.initializeTransport(),this.initializeSecurity(n),n&&await this.establishSession()}async scanWifiList(){if(!this.transportImpl||!this.securityImpl)throw new Error("Device not connected");try{const n=getScanStartRequest(),t=await this.sendData(PROTO_ENDPOINTS.PROV_SCAN,n);processScanStartResponse(t);const e=getScanStatusRequest(),r=await this.sendData(PROTO_ENDPOINTS.PROV_SCAN,e),{scanFinished:o,count:s}=processScanStatusResponse(r);if(!o)throw new Error("WiFi scan should have finished");let c=[];for(let u=0;u<s;u++){const l=getScanResultRequest(u,1),a=await this.sendData(PROTO_ENDPOINTS.PROV_SCAN,l),f=processScanResultResponse(a);c=c.concat(f)}return c}catch(n){throw new Error(`WiFi scan failed: ${n}`)}}async provision(n,t){if(!this.transportImpl||!this.securityImpl)throw new Error("Device not connected");try{const e=getConfigUpdateRequest(n,t),r=await this.sendData(PROTO_ENDPOINTS.PROV_CONFIG,e);processConfigUpdateResponse(r);const o=getConfigApplyRequest(),s=await this.sendData(PROTO_ENDPOINTS.PROV_CONFIG,o);processConfigApplyResponse(s)}catch(e){throw new Error(`Provisioning failed: ${e}`)}}async fetchWifiStatus(){if(!this.transportImpl||!this.securityImpl)throw new Error("Device not connected");try{const n=getConfigStatusRequest(),t=await this.sendData(PROTO_ENDPOINTS.PROV_CONFIG,n);return processConfigStatusResponse(t)}catch(n){throw new Error(`Fetching WiFi status failed: ${n}`)}}async sendData(n,t){if(!this.transportImpl||!this.securityImpl)throw new Error("Device not connected");const e=await this.securityImpl.encrypt(t);console.debug("Send encrypted data length:",e.length);const r=await this.transportImpl.sendData(n,e);return await this.securityImpl.decrypt(r)}disconnect(){this.transportImpl&&(this.transportImpl.disconnect(),this.transportImpl=void 0),this.securityImpl=void 0}getDevice(){return this.device}initializeSecurity(n){if(!n)this.securityImpl=new Security0;else throw new Error("Unsupported security configuration")}async establishSession(){if(!this.transportImpl||!this.securityImpl)throw new Error("Transport or security not initialized");const n=await this.securityImpl.getSessionSetupRequest(),t=await this.transportImpl.sendData(PROTO_ENDPOINTS.PROV_SESSION,n);await this.securityImpl.processSessionSetupResponse(t)}async initializeTransport(){this.device instanceof URL?this.transportImpl=new SoftAPTransport(this.device.toString()):this.transportImpl=new BLETransport(this.device,FALLBACK_SERVICE_UUID,new Map(Object.entries(FALLBACK_NU_LOOKUP))),await this.transportImpl.connect()}}class ESPProvisionManager{static async searchBLEDevice(n=DEFAULT_BLE_DEVICE_OPTIONS){if(!await ESPProvisionManager.getBluetoothAvailability())throw new Error("Web Bluetooth is not available.");try{const e=await navigator.bluetooth.requestDevice(n);if(!e.name)throw new Error("Device name not available");return new ESPDevice(e)}catch(e){if(e.name==="NotFoundError")return null;throw new Error(`Device search failed: ${e}`)}}static createSoftAPDevice(n){return new ESPDevice(n)}static isBluetoothSupported(){return typeof navigator<"u"&&"bluetooth"in navigator}static async getBluetoothAvailability(){if(!this.isBluetoothSupported())return!1;try{return await navigator.bluetooth.getAvailability()}catch(n){return console.error("Failed to get Bluetooth availability:",n),!1}}}exports.DEFAULT_DEVICE_PREFIX=DEFAULT_DEVICE_PREFIX;exports.ESPDevice=ESPDevice;exports.ESPProvisionManager=ESPProvisionManager;exports.ESPWifiAuthMode=ESPWifiAuthMode;exports.ESPWifiStaState=ESPWifiStaState;exports.FALLBACK_SERVICE_UUID=FALLBACK_SERVICE_UUID;
|
package/dist/index.es.js
CHANGED
|
@@ -4963,6 +4963,20 @@ class ESPDevice {
|
|
|
4963
4963
|
throw new Error(`Fetching WiFi status failed: ${n}`);
|
|
4964
4964
|
}
|
|
4965
4965
|
}
|
|
4966
|
+
/**
|
|
4967
|
+
* Send custom data to device
|
|
4968
|
+
* @param path - Data endpoint path
|
|
4969
|
+
* @param data - Data to send
|
|
4970
|
+
* @returns Response data from device
|
|
4971
|
+
*/
|
|
4972
|
+
async sendData(n, t) {
|
|
4973
|
+
if (!this.transportImpl || !this.securityImpl)
|
|
4974
|
+
throw new Error("Device not connected");
|
|
4975
|
+
const e = await this.securityImpl.encrypt(t);
|
|
4976
|
+
console.debug("Send encrypted data length:", e.length);
|
|
4977
|
+
const r = await this.transportImpl.sendData(n, e);
|
|
4978
|
+
return await this.securityImpl.decrypt(r);
|
|
4979
|
+
}
|
|
4966
4980
|
/**
|
|
4967
4981
|
* Disconnect from device
|
|
4968
4982
|
*/
|
|
@@ -5006,20 +5020,6 @@ class ESPDevice {
|
|
|
5006
5020
|
new Map(Object.entries(FALLBACK_NU_LOOKUP))
|
|
5007
5021
|
), await this.transportImpl.connect();
|
|
5008
5022
|
}
|
|
5009
|
-
/**
|
|
5010
|
-
* Send custom data to device
|
|
5011
|
-
* @param path - Data endpoint path
|
|
5012
|
-
* @param data - Data to send
|
|
5013
|
-
* @returns Response data from device
|
|
5014
|
-
*/
|
|
5015
|
-
async sendData(n, t) {
|
|
5016
|
-
if (!this.transportImpl || !this.securityImpl)
|
|
5017
|
-
throw new Error("Device not connected");
|
|
5018
|
-
const e = await this.securityImpl.encrypt(t);
|
|
5019
|
-
console.debug("Send encrypted data length:", e.length);
|
|
5020
|
-
const r = await this.transportImpl.sendData(n, e);
|
|
5021
|
-
return await this.securityImpl.decrypt(r);
|
|
5022
|
-
}
|
|
5023
5023
|
}
|
|
5024
5024
|
class ESPProvisionManager {
|
|
5025
5025
|
/**
|
package/dist/types.d.ts
CHANGED
|
@@ -65,9 +65,10 @@ export interface ESPScanStatusResponse {
|
|
|
65
65
|
export interface ESPDeviceInterface {
|
|
66
66
|
connect(security?: ESPSecurityConfig): Promise<void>;
|
|
67
67
|
scanWifiList(): Promise<ESPWifiAp[]>;
|
|
68
|
-
disconnect(): void;
|
|
69
68
|
provision(ssid: string, passphrase: string): Promise<void>;
|
|
70
69
|
fetchWifiStatus(): Promise<ESPWifiStatus>;
|
|
70
|
+
sendData(path: string, data: Uint8Array): Promise<Uint8Array>;
|
|
71
|
+
disconnect(): void;
|
|
71
72
|
getDevice(): BluetoothDevice | URL;
|
|
72
73
|
}
|
|
73
74
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAI;IACR,GAAG,IAAI;IACP,cAAc,IAAI;IAClB,OAAO,IAAI;IACX,MAAM,IAAI;IACV,UAAU,IAAI;IACd,OAAO,IAAI;IACX,WAAW,IAAI;CAChB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,SAAS,IAAI;IACb,UAAU,IAAI;IACd,YAAY,IAAI;IAChB,MAAM,IAAI;CACX;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,SAAS,IAAI;IACb,eAAe,IAAI;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAErC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAI;IACR,GAAG,IAAI;IACP,cAAc,IAAI;IAClB,OAAO,IAAI;IACX,MAAM,IAAI;IACV,UAAU,IAAI;IACd,OAAO,IAAI;IACX,WAAW,IAAI;CAChB;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,SAAS,IAAI;IACb,UAAU,IAAI;IACd,YAAY,IAAI;IAChB,MAAM,IAAI;CACX;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC9B,SAAS,IAAI;IACb,eAAe,IAAI;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAErC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAE9D,UAAU,IAAI,IAAI,CAAC;IAEnB,SAAS,IAAI,eAAe,GAAG,GAAG,CAAC;CACpC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "esp-idf-provisioning-web",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "ESP-IDF WiFi Provisioning SDK for web browsers",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"module": "dist/index.
|
|
5
|
+
"main": "dist/index.cjs.js",
|
|
6
|
+
"module": "dist/index.es.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.es.js",
|
|
12
|
+
"require": "./dist/index.cjs.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
8
15
|
"keywords": [
|
|
9
16
|
"esp32",
|
|
10
17
|
"esp-idf",
|