@truebit/cli 1.120.0-beta.268 → 1.120.0-beta.270

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.
Files changed (2) hide show
  1. package/build/index.mjs +3 -3
  2. package/package.json +2 -2
package/build/index.mjs CHANGED
@@ -498,7 +498,7 @@ Setting up your new wallet...`),console.log(Pi.SETUP_STEP1_SCENARIO2(o));break}c
498
498
  `;if(n.username||n.password){let h=`${decodeURIComponent(n.username)}:${decodeURIComponent(n.password)}`;a["Proxy-Authorization"]=`Basic ${Buffer.from(h).toString("base64")}`}a.Host=`${s}:${r.port}`,a["Proxy-Connection"]||(a["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let h of Object.keys(a))o+=`${h}: ${a[h]}\r
499
499
  `;let u=(0,_fa.parseProxyResponse)(i);i.write(`${o}\r
500
500
  `);let{connect:f,buffered:c}=await u;if(e.emit("proxyConnect",f),this.emit("proxyConnect",f,e),f.statusCode===200)return e.once("socket",Efa),r.secureEndpoint?(Ak("Upgrading socket connection to TLS"),r8r.connect({...i8r(n8r(r),"host","path","port"),socket:i})):i;i.destroy();let d=new zpe.Socket({writable:!1});return d.readable=!0,e.once("socket",h=>{Ak("Replaying proxy buffer for failed request"),(0,yfa.default)(h.listenerCount("data")>0),h.push(c),h.push(null)}),d}};Wpe.protocols=["http","https"];Wc.HttpsProxyAgent=Wpe;function Efa(t){t.resume()}function i8r(t,...e){let r={},n;for(n in t)e.includes(n)||(r[n]=t[n]);return r}});var eYe=l((f4s,Sfa)=>{Sfa.exports={name:"mixpanel",description:"A simple server-side API for mixpanel",keywords:["mixpanel","analytics","api","stats"],version:"0.20.0",homepage:"https://github.com/mixpanel/mixpanel-node",author:"Carl Sverre",license:"MIT",main:"lib/mixpanel-node",directories:{lib:"lib"},repository:{type:"git",url:"git+ssh://git@github.com/mixpanel/mixpanel-node.git"},engines:{node:">=10.0"},scripts:{test:"vitest",format:"prettier --write .","check-format":"prettier --check .",lint:"oxlint ."},types:"./lib/mixpanel-node.d.ts",devDependencies:{"@types/node":"^24.10.1","@vitest/coverage-v8":"^4.0.8",nock:"^14.0.10",oxlint:"^1.16.0",prettier:"^3.6.2",proxyquire:"^2.1.3",typescript:"^5.9.3",vitest:"^4.0.8"},dependencies:{"https-proxy-agent":"7.0.6","json-logic-js":"2.0.5"}}});var tYe=l(Gpe=>{Gpe.async_all=function(t,e,r){let n=t.length,i=null,a=[],s=function(o,u){o&&(i=i||[],i.push(o)),a.push(u),--n===0&&r(i,a)};if(n===0)r(i,a);else for(let o=0,u=t.length;o<u;o++)e(t[o],s)};Gpe.ensure_timestamp=function(t){if(!(t instanceof Date||typeof t=="number"))throw new Error("`time` property must be a Date or Unix timestamp and is only required for `import` endpoint");return t instanceof Date?t.getTime():t};Gpe.assert_logger=function(t){if(typeof t!="object")throw new TypeError('"logger" must be a valid Logger object');["trace","debug","info","warn","error"].forEach(e=>{if(typeof t[e]!="function")throw new TypeError(`Logger object missing "${e}" method`)})}});var nYe=l(rYe=>{var{ensure_timestamp:wfa}=tYe();function fT(t,e){return e&&(e.$ignore_alias&&(t.$ignore_alias=e.$ignore_alias),e.$ignore_time&&(t.$ignore_time=e.$ignore_time),e.hasOwnProperty("$ip")&&(t.$ip=e.$ip),e.hasOwnProperty("$time")&&(t.$time=wfa(e.$time)),e.hasOwnProperty("$latitude")&&e.hasOwnProperty("$longitude")&&(t.$latitude=e.$latitude,t.$longitude=e.$longitude)),t}rYe.merge_modifiers=fT;rYe.ProfileHelpers=(t=Object)=>class extends t{get token(){return this.mixpanel.token}get config(){return this.mixpanel.config}_set(e,r,n,i,{identifiers:a,set_once:s=!1}){let o={};typeof e=="object"?(typeof r=="object"?(i=n,n=r):i=r,o=e):(o[e]=r,(typeof n=="function"||!n)&&(i=n));let u={$token:this.token,...a},f=s?"$set_once":"$set";u[f]=o,"ip"in o&&(u.$ip=o.ip,delete o.ip),o.$ignore_time&&(u.$ignore_time=o.$ignore_time,delete o.$ignore_time),u=fT(u,n),this.config.debug&&this.mixpanel.config.logger.debug(`Sending the following data to Mixpanel (${this.endpoint})`,{data:u}),this.mixpanel.send_request({method:"GET",endpoint:this.endpoint,data:u},i)}_delete_profile({identifiers:e,modifiers:r,callback:n}){let i={$delete:"",$token:this.token,...e};typeof r=="function"&&(n=r),i=fT(i,r),this.config.debug&&this.mixpanel.config.logger.debug("Deleting profile",{identifiers:e}),this.mixpanel.send_request({method:"GET",endpoint:this.endpoint,data:i},n)}_remove({identifiers:e,data:r,modifiers:n,callback:i}){let a={};if(typeof r!="object"||Array.isArray(r)){this.config.debug&&this.mixpanel.config.logger.error("Invalid value passed to #remove - data must be an object with scalar values");return}for(let[s,o]of Object.entries(r))if(typeof o=="string"||typeof o=="number")a[s]=o;else{this.config.debug&&this.mixpanel.config.logger.error("Invalid argument passed to #remove - values must be scalar",{key:s,value:o});return}Object.keys(a).length!==0&&(r={$remove:a,$token:this.token,...e},typeof n=="function"&&(i=n),r=fT(r,n),this.config.debug&&this.mixpanel.config.logger.debug(`Sending the following data to Mixpanel (${this.endpoint})`,{data:r}),this.mixpanel.send_request({method:"GET",endpoint:this.endpoint,data:r},i))}_union({identifiers:e,data:r,modifiers:n,callback:i}){let a={};if(typeof r!="object"||Array.isArray(r)){this.config.debug&&this.mixpanel.config.logger.error("Invalid value passed to #union - data must be an object with scalar or array values");return}for(let[s,o]of Object.entries(r))if(Array.isArray(o)){let u=o.filter(function(f){return typeof f=="string"||typeof f=="number"});u.length>0&&(a[s]=u)}else typeof o=="string"||typeof o=="number"?a[s]=[o]:this.config.debug&&this.mixpanel.config.logger.error("Invalid argument passed to #union - values must be a scalar value or array",{key:s,value:o});Object.keys(a).length!==0&&(r={$union:a,$token:this.token,...e},typeof n=="function"&&(i=n),r=fT(r,n),this.config.debug&&this.mixpanel.config.logger.debug(`Sending the following data to Mixpanel (${this.endpoint})`,{data:r}),this.mixpanel.send_request({method:"GET",endpoint:this.endpoint,data:r},i))}_unset({identifiers:e,prop:r,modifiers:n,callback:i}){let a=[];if(Array.isArray(r))a=r;else if(typeof r=="string")a=[r];else{this.config.debug&&this.mixpanel.config.logger.error("Invalid argument passed to #unset - must be a string or array",{prop:r});return}let s={$unset:a,$token:this.token,...e};typeof n=="function"&&(i=n),s=fT(s,n),this.config.debug&&this.mixpanel.config.logger.debug(`Sending the following data to Mixpanel (${this.endpoint})`,{data:s}),this.mixpanel.send_request({method:"GET",endpoint:this.endpoint,data:s},i)}}});var f8r=l(u8r=>{var{ProfileHelpers:Afa}=nYe(),iYe=class extends Afa(){constructor(e){super(),this.mixpanel=e,this.endpoint="/groups"}set_once(e,r,n,i,a,s){let o={$group_key:e,$group_id:r};this._set(n,i,a,s,{identifiers:o,set_once:!0})}set(e,r,n,i,a,s){let o={$group_key:e,$group_id:r};this._set(n,i,a,s,{identifiers:o})}delete_group(e,r,n,i){let a={$group_key:e,$group_id:r};this._delete_profile({identifiers:a,modifiers:n,callback:i})}remove(e,r,n,i,a){let s={$group_key:e,$group_id:r};this._remove({identifiers:s,data:n,modifiers:i,callback:a})}union(e,r,n,i,a){let s={$group_key:e,$group_id:r};this._union({identifiers:s,data:n,modifiers:i,callback:a})}unset(e,r,n,i,a){let s={$group_key:e,$group_id:r};this._unset({identifiers:s,prop:n,modifiers:i,callback:a})}};u8r.MixpanelGroups=iYe});var c8r=l(l8r=>{var{merge_modifiers:Kpe,ProfileHelpers:xfa}=nYe(),aYe=class extends xfa(){constructor(e){super(),this.mixpanel=e,this.endpoint="/engage"}set_once(e,r,n,i,a){let s={$distinct_id:e};this._set(r,n,i,a,{identifiers:s,set_once:!0})}set(e,r,n,i,a){let s={$distinct_id:e};this._set(r,n,i,a,{identifiers:s})}increment(e,r,n,i,a){let s={};if(typeof r=="object"){typeof n=="object"?(a=i,i=n):a=n;for(let[u,f]of Object.entries(r))isNaN(parseFloat(f))?this.mixpanel.config.debug&&this.mixpanel.config.logger.error("Invalid increment value passed to mixpanel.people.increment - must be a number",{key:u,value:f}):s[u]=f}else typeof n=="number"||!n?(n=n||1,s[r]=n,typeof i=="function"&&(a=i)):typeof n=="function"?(a=n,s[r]=1):(a=i,i=typeof n=="object"?n:{},s[r]=1);let o={$add:s,$token:this.mixpanel.token,$distinct_id:e};o=Kpe(o,i),this.mixpanel.config.debug&&this.mixpanel.config.logger.debug("Sending the following data to Mixpanel (Engage)",{data:o}),this.mixpanel.send_request({method:"GET",endpoint:"/engage",data:o},a)}append(e,r,n,i,a){let s={};typeof r=="object"?(typeof n=="object"?(a=i,i=n):a=n,Object.keys(r).forEach(function(u){s[u]=r[u]})):(s[r]=n,typeof i=="function"&&(a=i));let o={$append:s,$token:this.mixpanel.token,$distinct_id:e};o=Kpe(o,i),this.mixpanel.config.debug&&this.mixpanel.config.logger.debug("Sending the following data to Mixpanel (Engage)",{data:o}),this.mixpanel.send_request({method:"GET",endpoint:"/engage",data:o},a)}track_charge(e,r,n,i,a){if(typeof n=="function"||!n?(a=n||void 0,n={}):(typeof i=="function"||!i)&&(a=i||void 0,(n.$ignore_time||n.hasOwnProperty("$ip"))&&(i={},Object.keys(n).forEach(function(o){i[o]=n[o],delete n[o]}))),typeof r!="number"&&(r=parseFloat(r),isNaN(r))){this.mixpanel.config.logger.error("Invalid value passed to mixpanel.people.track_charge - must be a number");return}if(n.$amount=r,n.hasOwnProperty("$time")){let o=n.$time;Object.prototype.toString.call(o)==="[object Date]"&&(n.$time=o.toISOString())}let s={$append:{$transactions:n},$token:this.mixpanel.token,$distinct_id:e};s=Kpe(s,i),this.mixpanel.config.debug&&this.mixpanel.config.logger.debug("Sending the following data to Mixpanel (Engage)",{data:s}),this.mixpanel.send_request({method:"GET",endpoint:"/engage",data:s},a)}clear_charges(e,r,n){let i={$set:{$transactions:[]},$token:this.mixpanel.token,$distinct_id:e};typeof r=="function"&&(n=r),i=Kpe(i,r),this.mixpanel.config.debug&&this.mixpanel.config.logger.debug("Clearing this user's charges",{$distinct_id:e}),this.mixpanel.send_request({method:"GET",endpoint:"/engage",data:i},n)}delete_user(e,r,n){let i={$distinct_id:e};this._delete_profile({identifiers:i,modifiers:r,callback:n})}remove(e,r,n,i){let a={$distinct_id:e};this._remove({identifiers:a,data:r,modifiers:n,callback:i})}union(e,r,n,i){let a={$distinct_id:e};this._union({identifiers:a,data:r,modifiers:n,callback:i})}unset(e,r,n,i){let a={$distinct_id:e};this._unset({identifiers:a,prop:r,modifiers:n,callback:i})}};l8r.MixpanelPeople=aYe});var sYe=l((m4s,p8r)=>{var d8r=fe("crypto"),Tfa="$experiment_started",Ofa={"Content-Type":"application/json"};function Cfa(t){let e=BigInt("0x100000001B3"),r=BigInt("0xCBF29CE484222325");for(let n=0;n<t.length;n++)r^=BigInt(t[n]),r*=e,r&=BigInt("0xFFFFFFFFFFFFFFFF");return r}function Ifa(t,e){let r=Buffer.from(t+e,"utf-8"),n=Cfa(r);return Number(n%BigInt(100))/100}function Mfa(t,e){return{mp_lib:"node",$lib_version:e,token:t}}function Pfa(){let e=d8r.randomBytes(16).toString("hex"),r=d8r.randomBytes(8).toString("hex");return`00-${e}-${r}-01`}function Ype(t,e){return t==null?t:typeof t=="string"?t.toLowerCase():typeof t=="object"?Array.isArray(t)?t.map(r=>Ype(r,e)):Object.fromEntries(Object.entries(t).map(([r,n])=>[e?r.toLowerCase():r,Ype(n,e)])):t}function Rfa(t){return Ype(t,!0)}function qfa(t){return Ype(t,!1)}p8r.exports={EXPOSURE_EVENT:Tfa,REQUEST_HEADERS:Ofa,normalizedHash:Ifa,prepareCommonQueryParams:Mfa,generateTraceparent:Pfa,lowercaseAllKeysAndValues:Rfa,lowercaseLeafNodes:qfa}});var uYe=l((y4s,h8r)=>{var Nfa=fe("https"),Dfa=eYe(),{prepareCommonQueryParams:kfa,generateTraceparent:$fa,EXPOSURE_EVENT:Bfa,REQUEST_HEADERS:Ffa}=sYe(),oYe=class{constructor(e,r,n,i,a){this.providerConfig=e,this.endpoint=r,this.tracker=n,this.evaluationMode=i,this.logger=a}async callFlagsEndpoint(e=null){return new Promise((r,n)=>{let i=kfa(this.providerConfig.token,Dfa.version),a=new URLSearchParams(i);if(e)for(let[f,c]of Object.entries(e))a.append(f,c);let s=`${this.endpoint}?${a.toString()}`,o={host:this.providerConfig.api_host,port:443,path:s,method:"GET",headers:{...Ffa,Authorization:"Basic "+Buffer.from(this.providerConfig.token+":").toString("base64"),traceparent:$fa()},timeout:this.providerConfig.request_timeout_in_seconds*1e3},u=Nfa.request(o,f=>{let c="";f.on("data",d=>{c+=d}),f.on("end",()=>{if(f.statusCode!==200)return this.logger?.error(`HTTP ${f.statusCode} error calling flags endpoint: ${c}`),n(new Error(`HTTP ${f.statusCode}: ${c}`));try{let d=JSON.parse(c);r(d)}catch(d){this.logger?.error(`Failed to parse JSON response: ${d.message}`),n(d)}})});u.on("error",f=>{this.logger?.error(`Network error calling flags endpoint: ${f.message}`),n(f)}),u.on("timeout",()=>{this.logger?.error("Request timeout calling flags endpoint"),u.destroy(),n(new Error("Request timeout"))}),u.end()})}trackExposureEvent(e,r,n,i=null){if(!n.distinct_id){this.logger?.error("Cannot track exposure event without a distinct_id in the context");return}let a={distinct_id:n.distinct_id,"Experiment name":e,"Variant name":r.variant_key,$experiment_type:"feature_flag","Flag evaluation mode":this.evaluationMode};i!=null&&(a["Variant fetch latency (ms)"]=i),r.experiment_id!==void 0&&(a.$experiment_id=r.experiment_id),r.is_experiment_active!==void 0&&(a.$is_experiment_active=r.is_experiment_active),r.is_qa_tester!==void 0&&(a.$is_qa_tester=r.is_qa_tester),this.tracker(Bfa,a,s=>{s&&this.logger?.error(`[flags]Failed to track exposure event for flag '${e}': ${s.message}`)})}};h8r.exports=oYe});var y8r=l((fYe,m8r)=>{(function(t,e){typeof define=="function"&&define.amd?define(e):typeof fYe=="object"?m8r.exports=e():t.jsonLogic=e()})(fYe,function(){"use strict";Array.isArray||(Array.isArray=function(n){return Object.prototype.toString.call(n)==="[object Array]"});function t(n){for(var i=[],a=0,s=n.length;a<s;a++)i.indexOf(n[a])===-1&&i.push(n[a]);return i}var e={},r={"==":function(n,i){return n==i},"===":function(n,i){return n===i},"!=":function(n,i){return n!=i},"!==":function(n,i){return n!==i},">":function(n,i){return n>i},">=":function(n,i){return n>=i},"<":function(n,i,a){return a===void 0?n<i:n<i&&i<a},"<=":function(n,i,a){return a===void 0?n<=i:n<=i&&i<=a},"!!":function(n){return e.truthy(n)},"!":function(n){return!e.truthy(n)},"%":function(n,i){return n%i},log:function(n){return console.log(n),n},in:function(n,i){return!i||typeof i.indexOf>"u"?!1:i.indexOf(n)!==-1},cat:function(){return Array.prototype.join.call(arguments,"")},substr:function(n,i,a){if(a<0){var s=String(n).substr(i);return s.substr(0,s.length+a)}return String(n).substr(i,a)},"+":function(){return Array.prototype.reduce.call(arguments,function(n,i){return parseFloat(n,10)+parseFloat(i,10)},0)},"*":function(){return Array.prototype.reduce.call(arguments,function(n,i){return parseFloat(n,10)*parseFloat(i,10)})},"-":function(n,i){return i===void 0?-n:n-i},"/":function(n,i){return n/i},min:function(){return Math.min.apply(this,arguments)},max:function(){return Math.max.apply(this,arguments)},merge:function(){return Array.prototype.reduce.call(arguments,function(n,i){return n.concat(i)},[])},var:function(n,i){var a=i===void 0?null:i,s=this;if(typeof n>"u"||n===""||n===null)return s;for(var o=String(n).split("."),u=0;u<o.length;u++)if(s==null||(s=s[o[u]],s===void 0))return a;return s},missing:function(){for(var n=[],i=Array.isArray(arguments[0])?arguments[0]:arguments,a=0;a<i.length;a++){var s=i[a],o=e.apply({var:s},this);(o===null||o==="")&&n.push(s)}return n},missing_some:function(n,i){var a=e.apply({missing:i},this);return i.length-a.length>=n?[]:a}};return e.is_logic=function(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)&&Object.keys(n).length===1},e.truthy=function(n){return Array.isArray(n)&&n.length===0?!1:!!n},e.get_operator=function(n){return Object.keys(n)[0]},e.get_values=function(n){return n[e.get_operator(n)]},e.apply=function(n,i){if(Array.isArray(n))return n.map(function(m){return e.apply(m,i)});if(!e.is_logic(n))return n;var a=e.get_operator(n),s=n[a],o,u,f,c,d;if(Array.isArray(s)||(s=[s]),a==="if"||a=="?:"){for(o=0;o<s.length-1;o+=2)if(e.truthy(e.apply(s[o],i)))return e.apply(s[o+1],i);return s.length===o+1?e.apply(s[o],i):null}else if(a==="and"){for(o=0;o<s.length;o+=1)if(u=e.apply(s[o],i),!e.truthy(u))return u;return u}else if(a==="or"){for(o=0;o<s.length;o+=1)if(u=e.apply(s[o],i),e.truthy(u))return u;return u}else{if(a==="filter")return c=e.apply(s[0],i),f=s[1],Array.isArray(c)?c.filter(function(m){return e.truthy(e.apply(f,m))}):[];if(a==="map")return c=e.apply(s[0],i),f=s[1],Array.isArray(c)?c.map(function(m){return e.apply(f,m)}):[];if(a==="reduce")return c=e.apply(s[0],i),f=s[1],d=typeof s[2]<"u"?e.apply(s[2],i):null,Array.isArray(c)?c.reduce(function(m,y){return e.apply(f,{current:y,accumulator:m})},d):d;if(a==="all"){if(c=e.apply(s[0],i),f=s[1],!Array.isArray(c)||!c.length)return!1;for(o=0;o<c.length;o+=1)if(!e.truthy(e.apply(f,c[o])))return!1;return!0}else if(a==="none"){if(c=e.apply(s[0],i),f=s[1],!Array.isArray(c)||!c.length)return!0;for(o=0;o<c.length;o+=1)if(e.truthy(e.apply(f,c[o])))return!1;return!0}else if(a==="some"){if(c=e.apply(s[0],i),f=s[1],!Array.isArray(c)||!c.length)return!1;for(o=0;o<c.length;o+=1)if(e.truthy(e.apply(f,c[o])))return!0;return!1}}if(s=s.map(function(m){return e.apply(m,i)}),r.hasOwnProperty(a)&&typeof r[a]=="function")return r[a].apply(i,s);if(a.indexOf(".")>0){var h=String(a).split("."),p=r;for(o=0;o<h.length;o++){if(!p.hasOwnProperty(h[o]))throw new Error("Unrecognized operation "+a+" (failed at "+h.slice(0,o+1).join(".")+")");p=p[h[o]]}return p.apply(i,s)}throw new Error("Unrecognized operation "+a)},e.uses_data=function(n){var i=[];if(e.is_logic(n)){var a=e.get_operator(n),s=n[a];Array.isArray(s)||(s=[s]),a==="var"?i.push(s[0]):s.forEach(function(o){i.push.apply(i,e.uses_data(o))})}return t(i)},e.add_operation=function(n,i){r[n]=i},e.rm_operation=function(n){delete r[n]},e.rule_like=function(n,i){if(i===n||i==="@")return!0;if(i==="number")return typeof n=="number";if(i==="string")return typeof n=="string";if(i==="array")return Array.isArray(n)&&!e.is_logic(n);if(e.is_logic(i)){if(e.is_logic(n)){var a=e.get_operator(i),s=e.get_operator(n);if(a==="@"||a===s)return e.rule_like(e.get_values(n,!1),e.get_values(i,!1))}return!1}if(Array.isArray(i))if(Array.isArray(n)){if(i.length!==n.length)return!1;for(var o=0;o<i.length;o+=1)if(!e.rule_like(n[o],i[o]))return!1;return!0}else return!1;return!1},e})});var v8r=l((b4s,g8r)=>{var Lfa=uYe(),{normalizedHash:b8r,lowercaseAllKeysAndValues:jfa,lowercaseLeafNodes:Ufa}=sYe(),{apply:Vfa}=y8r(),lYe=class extends Lfa{constructor(e,r,n,i){let a={api_host:"api.mixpanel.com",request_timeout_in_seconds:10,enable_polling:!0,polling_interval_in_seconds:60,...r},s={token:e,api_host:a.api_host,request_timeout_in_seconds:a.request_timeout_in_seconds};super(s,"/flags/definitions",n,"local",i),this.config=a,this.flagDefinitions=new Map,this.pollingInterval=null}async startPollingForDefinitions(){try{await this._fetchFlagDefinitions(),this.config.enable_polling&&!this.pollingInterval&&(this.pollingInterval=setInterval(async()=>{try{await this._fetchFlagDefinitions()}catch(e){this.logger?.error(`Error polling for flag definition: ${e.message}`)}},this.config.polling_interval_in_seconds*1e3))}catch(e){this.logger?.error(`Initial flag definitions fetch failed: ${e.message}`)}}stopPollingForDefinitions(){this.pollingInterval?(clearInterval(this.pollingInterval),this.pollingInterval=null):this.logger?.warn("stopPollingForDefinitions called but polling was not active")}isEnabled(e,r){return this.getVariantValue(e,!1,r)===!0}getVariantValue(e,r,n,i=!0){return this.getVariant(e,{variant_value:r},n,i).variant_value}getVariant(e,r,n,i=!0){let a=this.flagDefinitions.get(e);if(!a)return this.logger?.warn(`Cannot find flag definition for key: '${e}`),r;if(!Object.hasOwn(n,a.context))return this.logger?.warn(`The variant assignment key, '${a.context}' for flag, '${e}' is not present in the supplied user context dictionary`),r;let s=n[a.context],o=null,u=this._getVariantOverrideForTestUser(a,n);if(u)o=u;else{let f=this._getAssignedRollout(a,s,n);f&&(o=this._getAssignedVariant(a,s,e,f))}return o?(i&&this.trackExposureEvent(e,o,n),o):r}getAllVariants(e){let r={};for(let n of this.flagDefinitions.keys()){let i=this.getVariant(n,null,e,!1);i!==null&&(r[n]=i)}return r}async _fetchFlagDefinitions(){let e=await this.callFlagsEndpoint(),r=new Map;return e.flags.forEach(n=>{r.set(n.key,n)}),this.flagDefinitions=r,e}_getMatchingVariant(e,r){for(let n of r.ruleset.variants)if(e.toLowerCase()===n.key.toLowerCase())return{variant_key:n.key,variant_value:n.value,experiment_id:r.experiment_id,is_experiment_active:r.is_experiment_active};return null}_getVariantOverrideForTestUser(e,r){if(!e.ruleset.test?.users)return null;let n=r.distinct_id;if(!n)return null;let i=e.ruleset.test.users[n];if(!i)return null;let a=this._getMatchingVariant(i,e);return a&&(a.is_qa_tester=!0),a}_getAssignedRollout(e,r,n){for(let i=0;i<e.ruleset.rollout.length;i++){let a=e.ruleset.rollout[i],s;if(e.hash_salt!==null&&e.hash_salt!==void 0?s=e.key+e.hash_salt+i.toString():s=e.key+"rollout",b8r(String(r),s)<a.rollout_percentage&&this._isRuntimeEvaluationSatisfied(a,n))return a}return null}_getAssignedVariant(e,r,n,i){if(i.variant_override){let d=this._getMatchingVariant(i.variant_override.key,e);if(d)return{...d,is_qa_tester:!1}}let a=e.hash_salt!==null&&e.hash_salt!==void 0?e.hash_salt:"",s=n+a+"variant",o=b8r(String(r),s),u=e.ruleset.variants.map(d=>({...d}));if(i.variant_splits)for(let d of u)d.key in i.variant_splits&&(d.split=i.variant_splits[d.key]);let f=u[0],c=0;for(let d of u)if(f=d,c+=d.split||0,o<c)break;return{variant_key:f.key,variant_value:f.value,experiment_id:e.experiment_id,is_experiment_active:e.is_experiment_active,is_qa_tester:!1}}_extractRuntimeParameters(e){let r=e.custom_properties;return!r||typeof r!="object"?null:jfa(r)}_isRuntimeRuleSatisfied(e,r){try{return Vfa(Ufa(e.runtime_evaluation_rule),this._extractRuntimeParameters(r))}catch(n){return this.logger?.error(`Error evaluating runtime rule: ${n.message}`),!1}}_isRuntimeEvaluationSatisfied(e,r){return e.runtime_evaluation_rule?this._isRuntimeRuleSatisfied(e,r):e.runtime_evaluation_definition?this._isLegacyRuntimeEvaluationSatisfied(e,r):!0}_isLegacyRuntimeEvaluationSatisfied(e,r){let n=this._extractRuntimeParameters(r);if(!n)return!1;for(let[i,a]of Object.entries(e.runtime_evaluation_definition)){if(!(i in n))return!1;let s=n[i];if(String(s).toLowerCase()!==String(a).toLowerCase())return!1}return!0}};g8r.exports=lYe});var E8r=l((g4s,_8r)=>{var Hfa=uYe(),cYe=class extends Hfa{constructor(e,r,n,i){let a={api_host:"api.mixpanel.com",request_timeout_in_seconds:10,...r},s={token:e,api_host:a.api_host,request_timeout_in_seconds:a.request_timeout_in_seconds};super(s,"/flags",n,"remote",i)}async getVariantValue(e,r,n,i=!0){try{return(await this.getVariant(e,{variant_value:r},n,i)).variant_value}catch(a){return this.logger?.error(`Failed to get variant value for flag '${e}': ${a.message}`),r}}async getVariant(e,r,n,i=!0){try{let a=Date.now(),s=await this._fetchFlags(n,e),o=Date.now()-a,f=(s.flags||{})[e];return f?(i&&this.trackExposureEvent(e,f,n,o),f):r}catch(a){return this.logger?.error(`Failed to get variant for flag '${e}': ${a.message}`),r}}async isEnabled(e,r){try{return await this.getVariantValue(e,!1,r)===!0}catch(n){return this.logger?.error(`Failed to check if flag '${e}' is enabled: ${n.message}`),!1}}async getAllVariants(e){try{return(await this._fetchFlags(e)).flags||{}}catch(r){return this.logger?.error(`Failed to get all remote variants: ${r.message}`),null}}_fetchFlags(e,r=null){let n={context:JSON.stringify(e)};return r!==null&&(n.flag_key=r),this.callFlagsEndpoint(n)}};_8r.exports=cYe});var w8r=l((v4s,S8r)=>{var zfa=v8r(),Wfa=E8r();S8r.exports={LocalFeatureFlagsProvider:zfa,RemoteFeatureFlagsProvider:Wfa}});var T8r=l((_4s,x8r)=>{var Gfa=fe("querystring"),dYe=fe("buffer").Buffer,A8r=fe("http"),pYe=fe("https"),Kfa=o8r(),Yfa=fe("url"),Jfa=eYe(),{async_all:Zfa,ensure_timestamp:hYe,assert_logger:Xfa}=tYe(),{MixpanelGroups:Qfa}=f8r(),{MixpanelPeople:ela}=c8r(),{LocalFeatureFlagsProvider:tla,RemoteFeatureFlagsProvider:rla}=w8r(),nla={test:!1,debug:!1,verbose:!1,host:"api.mixpanel.com",protocol:"https",path:"",keepAlive:!0,geolocate:!1,logger:console},ila=function(t,e){if(!t)throw new Error("The Mixpanel Client needs a Mixpanel token: `init(token)`");let r={token:t,config:{...nla}},{keepAlive:n}=r.config,i=50,a={http:A8r,https:pYe},s={http:new A8r.Agent({keepAlive:n}),https:new pYe.Agent({keepAlive:n})},o=process.env.HTTPS_PROXY||process.env.HTTP_PROXY,u=o?new Kfa(Object.assign(Yfa.parse(o),{keepAlive:n})):null;r.send_request=function(d,h){h=h||function(){};let p=dYe.from(JSON.stringify(d.data)).toString("base64"),m=d.endpoint,y=(d.method||"GET").toUpperCase(),b={ip:r.config.geolocate?1:0,verbose:r.config.verbose?1:0},_=r.config.key,E=r.config.secret,A=a[r.config.protocol],x={host:r.config.host,port:r.config.port,headers:{},method:y},q;if(!A)throw new Error("Mixpanel Initialization Error: Unsupported protocol "+r.config.protocol+". Supported protocols are: "+Object.keys(a));if(y==="POST"?(p="data="+p,x.headers["Content-Type"]="application/x-www-form-urlencoded",x.headers["Content-Length"]=dYe.byteLength(p)):y==="GET"&&(b.data=p),E){if(A!==pYe)throw new Error("Must use HTTPS if authenticating with API Secret");let N=dYe.from(E+":").toString("base64");x.headers.Authorization="Basic "+N}else if(_)b.api_key=_;else if(m==="/import")throw new Error("The Mixpanel Client needs a Mixpanel API Secret when importing old events: `init(token, { secret: ... })`");x.agent=u||s[r.config.protocol],r.config.test&&(b.test=1),x.path=r.config.path+m+"?"+Gfa.stringify(b),q=A.request(x,function(N){let I="";N.on("data",function(G){I+=G}),N.on("end",function(){let G;if(r.config.verbose)try{let R=JSON.parse(I);R.status!=1&&(G=new Error("Mixpanel Server Error: "+R.error))}catch(R){G=new Error("Could not parse response from Mixpanel "+R.message)}else G=I!=="1"?new Error("Mixpanel Server Error: "+I):void 0;h(G)})}),q.on("error",function(N){r.config.debug&&r.config.logger.error("Got Error: "+N.message),h(N)}),y==="POST"&&q.write(p),q.end()},r.send_event_request=function(d,h,p,m){p.token=r.token,p.mp_lib="node",p.$lib_version=Jfa.version;let y={event:h,properties:p};r.config.debug&&r.config.logger.debug("Sending the following event to Mixpanel",{data:y}),r.send_request({method:"GET",endpoint:d,data:y},m)};let f=function(d,h){let p=[],m=0,y=d.length;for(;m<y;)p.push(d.slice(m,m+=h));return p},c=function(d,h){let p=d.event_list,m=d.endpoint,y=d.max_batch_size?Math.min(i,d.max_batch_size):i,b=d.max_concurrent_requests||d.max_batch_size>i&&Math.ceil(d.max_batch_size/i),_=f(p,y),E=b?f(_,b):[_],A=_.length,x=E.length;function q(I,G){I.length>0&&(I=I.map(function(R){return(m==="/import"||R.properties.time)&&(R.properties.time=hYe(R.properties.time)),R.properties.token=R.properties.token||r.token,R}),r.send_request({method:"POST",endpoint:m,data:I},G))}function N(I){let G=E[I];Zfa(G,q,function(z,F){I+=1,I===x?h&&h(z,F):N(I)})}N(0),r.config.debug&&r.config.logger.debug("Sending "+p.length+" events to Mixpanel in "+A+" batches of events and "+x+" batches of requests")};return r.track=function(d,h,p){(!h||typeof h=="function")&&(p=h,h={}),h.time&&(h.time=hYe(h.time)),r.send_event_request("/track",d,h,p)},r.track_batch=function(d,h,p){h=h||{},typeof h=="function"&&(p=h,h={});let m={event_list:d,endpoint:"/track",max_concurrent_requests:h.max_concurrent_requests,max_batch_size:h.max_batch_size};c(m,p)},r.import=function(d,h,p,m){(!p||typeof p=="function")&&(m=p,p={}),p.time=hYe(h),r.send_event_request("/import",d,p,m)},r.import_batch=function(d,h,p){let m;(typeof h=="function"||!h)&&(p=h,h={}),m={event_list:d,endpoint:"/import",max_concurrent_requests:h.max_concurrent_requests,max_batch_size:h.max_batch_size},c(m,p)},r.alias=function(d,h,p){let m={distinct_id:d,alias:h};r.track("$create_alias",m,p)},r.groups=new Qfa(r),r.people=new ela(r),r.set_config=function(d){if(d&&d.logger!==void 0&&Xfa(d.logger),Object.assign(r.config,d),d.host){let[h,p]=d.host.split(":");r.config.host=h,p&&(r.config.port=Number(p))}},e&&r.set_config(e),e&&e.local_flags_config&&(r.local_flags=new tla(t,e.local_flags_config,r.track.bind(r),e.logger)),e&&e.remote_flags_config&&(r.remote_flags=new rla(t,e.remote_flags_config,r.track.bind(r),e.logger)),r};x8r.exports={init:ila}});import He from"colors";var QAr=pr(W8(),1),exr=pr(Fme(),1),{format:pda,createLogger:hda,transports:mda}=QAr;process.setMaxListeners(0);var Q4n=pr(W8(),1);u6();var zs;(function(t){t.RUST="rs",t.C="c",t.JS="js",t.API="api",t.PYTHON="py"})(zs||(zs={}));var Y5;(function(t){t.API="api"})(Y5||(Y5={}));var nOr={...zs,...Y5};var ema=Object.values(nOr),tma=Object.values(zs);var Srt;(function(t){t.JSON="application/json",t.WASM="application/wasm",t.PLAIN_TXT="text/plain",t.JS="application/x-javascript",t.TAR="application/x-tar"})(Srt||(Srt={}));var wrt;(function(t){t.JSON="json",t.WASM="wasm",t.PLAIN_TXT="txt",t.JS="js",t.DTA="dta",t.PY="py",t.TAR="tar"})(wrt||(wrt={}));var dit=pr(fye(),1);async function pit(t,e){if(!(0,dit.satisfies)(process.version,t)){let r=`Nodejs required version ${t} not satisfied with current version ${process.version}.`;e?e.error(r):console.log(r),process.exit(1)}}import Jma from"node:os";var hit;(function(t){t.LEDGER="ledger",t.HTTP_ADAPTER="http-adapter",t.EVENTS_ADAPTER="events-adapter",t.FILESYSTEM_ADAPTER="filesystem-adapter",t.WASM_CHECKPOINTER="wasm-checkpointer",t.WASM_INSTRUMENTER="wasm-instrumenter",t.WASM_RUNNER="wasm-runner"})(hit||(hit={}));var SF;(function(t){t.FAILED="failed",t.SUCCEED="succeed",t.RUNNING="running"})(SF||(SF={}));var mit;(function(t){t.MINIO="minio",t.S3="s3"})(mit||(mit={}));var yit="60000000000",bit="65536",git="524288",vit="1024";var Cit=pr(xF(),1),IO=class{tokens=[];authInputs;parse(e,r){let n=this.parseKeyValuePairs(r);if(e.length==0){this.authInputs=n;return}let i=Object.keys(n);if(e.every(a=>i.includes(a))){let a={};for(let s of e)a[s]=n[s];this.authInputs=a}else throw new Error(`Invalid authString: ${e} are required`)}parseKeyValuePairs(e){try{let r=e.split(","),n={};for(let i of r){let[a,s]=i.split(":");n[a.trim()]=s.trim()}return n}catch{throw new Error("Invalid auth string")}}},TF=class extends IO{tokens=["accessKey","secretKey"];constructor(e){super(),this.parse(this.tokens,e)}authHeaders(e){return Cit.default.sign(e,{accessKeyId:this.authInputs.accessKey,secretAccessKey:this.authInputs.secretKey}).headers||{}}},OF=class extends IO{tokens=["username","password"];constructor(e){super(),this.parse(this.tokens,e)}authHeaders(e){return{Authorization:`Basic ${btoa(`${this.authInputs.username}:${this.authInputs.password}`)}`}}},CF=class extends IO{tokens=[];constructor(e){super(),this.parse([],e)}authHeaders(e){return{...this.authInputs}}};var pd;(function(t){t.AWS_SIGNATURE="aws-signature",t.BASIC_AUTH="basic-auth",t.CUSTOM_HEADER="custom-header"})(pd||(pd={}));var cye=(t,e)=>{switch(t){case pd.AWS_SIGNATURE:return new TF(e);case pd.BASIC_AUTH:return new OF(e);case pd.CUSTOM_HEADER:return new CF(e);default:throw new Error(`Invalid authentication method specified. Should be one of <${Object.values(pd)}>`)}};var Iit;(function(t){t.TASK_CREATED="task_created",t.TASK_SOLVED="task_solved",t.FILE_SYSTEM="file_system",t.DISPATCH_TASK="dispatch_task",t.DISPATCH_API_TASK="dispatch_api_task",t.MESSAGE_SAVED="message_saved",t.COMPUTED_OUTCOME="computed_outcome",t.API_FETCH="api_fetch",t.API_OUTCOME="api_outcome",t.API_SOLVED="api_solved",t.READY_TO_SHUTDOWN="ready_to_shutdown",t.INVOICE="invoice",t.REQUEST_SLASH="request_slash",t.RETRY_SLASH="retry_slash",t.RETRY_DEREGISTER="retry_deregister",t.ENTITLEMENT="entitlement",t.HEALTH_CHECK="health_check",t.RUNNER_TASK_EXECUTED="runner_task_executed",t.DEPLOYER_EXECUTE_TASK="deployer_execute_task",t.DEPLOYER_TASK_EXECUTED="deployer_task_executed",t.HTTP_ADAPTER_TASK_EXECUTED="http_adapter_task_executed",t.HTTP_ADAPTER_TASK_INSTRUMENTED="http_adapter_task_instrumented",t.HTTP_ADAPTER_TASK_PUSHED="http_adapter_task_pushed",t.HTTP_ADAPTER_TASK_PULLED="http_adapter_task_pulled",t.HTTP_ADAPTER_TASK_CHECKPOINTED="http_adapter_task_checkpointed",t.HTTP_ADAPTER_TASK_CHECKPOINTS_LISTED="http_adapter_task_checkpoints_listed",t.HTTP_ADAPTER_READY_TO_SHUTDOWN="http_adapter_ready_to_shutdown",t.EVENTS_ADAPTER_TASK_EXECUTED="events_adapter_task_executed",t.EVENTS_ADAPTER_TASK_INSTRUMENTED="events_adapter_task_instrumented",t.EVENTS_ADAPTER_TASK_PUSHED="events_adapter_task_pushed",t.EVENTS_ADAPTER_TASK_PULLED="events_adapter_task_pulled",t.EVENTS_ADAPTER_TASK_CHECKPOINTED="events_adapter_task_checkpointed",t.EVENTS_ADAPTER_TASK_CHECKPOINTS_LISTED="events_adapter_task_checkpoints_listed",t.EVENTS_ADAPTER_COMPUTED_OUTCOME="events_adapter_compute_outcome",t.EVENTS_ADAPTER_TASK_CREATED="events_adapter_task_created",t.EVENTS_ADAPTER_NODE_DEREGISTERED="events_adapter_node_deregistered",t.EVENTS_ADAPTER_SERVICE_STARTED_CHECK="events_adapter_service_started_check",t.DISPATCHER_TASK_SOLVED_CLEAR="dispatcher_task_solved_clear",t.DISPATCHER_TASK_CREATED="dispatcher_task_created",t.WASM_INSTRUMENTER_INSTRUMENT_TASK="wasm_instrumenter_instrument_task",t.WASM_INSTRUMENTER_TASK_INSTRUMENTED="wasm_instrumenter_task_instrumented",t.FILESYSTEM_ADAPTER_PUSH_TASK="filesystem_adapter_push_task",t.FILESYSTEM_ADAPTER_TASK_PUSHED="filesystem_adapter_task_pushed",t.FILESYSTEM_ADAPTER_PULL_TASK="filesystem_adapter_pull_task",t.FILESYSTEM_ADAPTER_TASK_PULLED="filesystem_adapter_task_pulled",t.FILESYSTEM_ADAPTER_SERVICE_STARTED_CHECK="filesystem_adapter_service_started_check",t.WASM_CHECKPOINTER_CHECKPOINT_TASK="wasm_checkpointer_checkpoint_task",t.WASM_CHECKPOINTER_LIST_TASK_CHECKPOINTS="wasm_checkpointer_list_task_checkpoints",t.TRANSCRIPT_WRITER_SAVE_MESSAGE="transcript_writer_save_message",t.TRANSCRIPT_WRITER_INVOICE="transcript_writer_save_invoice",t.SEQUENCER_MESSAGE_SAVED="sequencer_message_saved",t.VERIFICATION_MESSAGE_SAVED="verification_message_saved",t.VERIFICATION_VALIDATE_MESSAGE="verification_validate_message",t.VERIFICATION_REVEAL_SOLUTION="verification_reveal_solution",t.VERIFICATION_ADJUDICATION_OUTCOME="verification_adjudication_outcome",t.VERIFICATION_ERRORS="verification_errors",t.LEDGER_SHUTDOWN="ledger_shutdown",t.LEDGER_SERVICE_STARTED="ledger_service_started"})(Iit||(Iit={}));var Jf;(function(t){t.TASK_INSTRUMENTED="task_instrumented",t.TASK_CREATED="task_created",t.API_TASK_CREATED="api_task_created",t.TASK_EXECUTED="task_executed",t.TASK_PUSHED="task_pushed",t.TASK_PULLED="task_pulled",t.TASK_CHECKPOINTED="task_checkpointed",t.TASK_CHECKPOINTS_LISTED="task_checkpoints_listed",t.COMPUTED_OUTCOME="computed_outcome",t.ADJUDICATION_OUTCOME="adjudication_outcome",t.MESSAGE_SAVED="message_saved",t.TASK_SOLVED="task_solved",t.TASK_SOLVED_CLEAR="task_solved_clear",t.NODE_OUTCOME="node_outcome",t.PLATFORM_ERRORS="errors",t.REVEAL_SOLUTIONS="reveal_solutions",t.SOLUTIONS_REVEALED="solutions_revealed",t.API_FETCHER_OUTCOME="api_fetcher_outcome",t.API_SOLVED="api_solved",t.API_OUTCOME="api_outcome",t.NODE_DEREGISTERED="node_deregistered",t.READY_TO_SHUTDOWN="ready_to_shutdown",t.EXECUTION_COMPLETED="execution_completed",t.SERVICE_STARTED="service_started",t.INVOICE="invoice",t.ENTITLEMENT_REQ="entitlement_req",t.ENTITLEMENT_RES="entitlement_res",t.HEALTH_CHECK="health_check",t.EXECUTION_METADATA="execution_metadata",t.REQUEST_SLASH="request_slash",t.RETRY_SLASH="retry_slash",t.RETRY_DEREGISTER="retry_deregister"})(Jf||(Jf={}));var Mit;(function(t){t.SHUTDOWN="shutdown",t.LIST_TASK_CHECKPOINTS="list_task_checkpoints",t.EXECUTE_TASK="execute_task",t.CHECKPOINT_TASK="checkpoint_task",t.INSTRUMENT_TASK="instrument_task",t.PUSH_TASK="push_task",t.PULL_TASK="pull_task",t.DISPATCH_TASK="dispatch_task",t.DISPATCH_API_TASK="dispatch_api_task",t.SAVE_MESSAGE="save_message",t.REVEAL_SOLUTION="reveal_solution",t.VALIDATE_MESSAGE="validate_message",t.API_FETCH="api_fetch",t.ENTITLEMENT="entitlement",t.HEALTH_CHECK="health_check",t.ADJUDICATION_OUTCOME="adjudication_outcome"})(Mit||(Mit={}));var Pit;(function(t){t.ERRORS="errors",t.TASK_INSTRUMENTED="task_instrumented",t.TASK_CREATED="task_created",t.API_TASK_CREATED="api_task_created",t.TASK_EXECUTED="task_executed",t.TASK_PUSHED="task_pushed",t.TASK_SOLVED="task_solved",t.TASK_SOLVED_CLEAR="task_solved_clear",t.TASK_PULLED="task_pulled",t.TASK_CHECKPOINTED="task_checkpointed",t.TASK_CHECKPOINTS_LISTED="task_checkpoints_listed",t.COMPUTED_OUTCOME="computed_outcome",t.ADJUDICATION_OUTCOME="adjudication_outcome",t.MESSAGE_SAVED="message_saved",t.API_FETCHER_OUTCOME="api_fetcher_outcome",t.API_SOLVED="api_solved",t.API_OUTCOME="api_outcome",t.NODE_DEREGISTERED="node_deregistered",t.READY_TO_SHUTDOWN="ready_to_shutdown",t.SERVICE_STARTED="service_started",t.INVOICES="invoice",t.ENTITLEMENTS_REQ="entitlement_req",t.ENTITLEMENTS_RES="entitlement_res",t.HEALTH_CHECK="health_check",t.REQUEST_SLASH="request_slash",t.RETRY_SLASH="retry_slash",t.RETRY_DEREGISTER="retry_deregister",t.SHUTDOWN="shutdown",t.LIST_TASK_CHECKPOINTS="list_task_checkpoints",t.EXECUTE_TASK="execute_task",t.CHECKPOINT_TASK="checkpoint_task",t.INSTRUMENT_TASK="instrument_task",t.PUSH_TASK="push_task",t.PULL_TASK="pull_task",t.DISPATCH_TASK="dispatch_task",t.DISPATCH_API_TASK="dispatch_api_task",t.SAVE_MESSAGE="save_message",t.REVEAL_SOLUTION="reveal_solution",t.VALIDATE_MESSAGE="validate_message",t.API_FETCH="api_fetch",t.DUMMY="DUMMY"})(Pit||(Pit={}));var Rit;(function(t){t.VALIDATION_ERROR="validation_error"})(Rit||(Rit={}));var MO;(function(t){t.GAME_PENDING="GamePending",t.READY_FOR_INVOICE="ReadyForInvoice",t.CONTROL_NODE_TIMEOUT="ControlNodeTimeout",t.ERROR="Error"})(MO||(MO={}));var qit;(function(t){let e;(function(n){n.Pay="pay",n.Charge="charge",n.Penalty="penalty"})(e=t.Operation||(t.Operation={}));let r;(function(n){n.IS_USER_REGISTER="isUserRegister"})(r=t.EntitlementOperation||(t.EntitlementOperation={}))})(qit||(qit={}));var IF;(function(t){t.Pay="pay",t.Charge="charge",t.Penalty="penalty"})(IF||(IF={}));var m6a=[Jf.TASK_SOLVED,Jf.TASK_CREATED,Jf.API_TASK_CREATED,Jf.NODE_OUTCOME,Jf.SOLUTIONS_REVEALED,Jf.REVEAL_SOLUTIONS,Jf.API_OUTCOME,Jf.EXECUTION_COMPLETED,Jf.EXECUTION_METADATA,Jf.ADJUDICATION_OUTCOME];var Nit;(function(t){t.EXECUTE_TRANSACTION="EXECUTE_TRANSACTION",t.GET_TRANSACTION="GET_TRANSACTION",t.REGISTER_USER="REGISTER_USER"})(Nit||(Nit={}));var Dit;(function(t){t.AUTHORIZATION_REGISTER="authorization.register",t.AUTHORIZATION_DEREGISTER="authorization.deregister",t.TASKREGISTRY_REGISTER_NAMESPACE="taskregistry.registerNamespace",t.TASKREGISTRY_REGISTER_TASK="taskregistry.registerTask",t.STAKING_SLASH="staking.slash",t.NODEREGISTRY_DEREGISTER="noderegistry.deregister",t.WATCHTOWER_CALLBACK="watchtower.callback"})(Dit||(Dit={}));var q3e=pr(u0(),1);function dh(){return function(t,e){(0,q3e.registerDecorator)({name:"IsUnixTimestamp",target:t.constructor,propertyName:e,validator:{validate(r){let i=r,a=new Date(i);return!isNaN(a.getTime())&&i>16725312e5}}})}}function N3e(){return function(t,e){(0,q3e.registerDecorator)({name:"IsUnixTimestamp",target:t.constructor,propertyName:e,validator:{validate(r){let i=r,a=new Date(i);return!isNaN(a.getTime())&&i>1672531200}}})}}var G5a=pr(G6(),1),ub=pr(Y6(),1),Ge=pr(u0(),1),_r=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Er=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},F3e;(function(t){t.FREE="free",t.DEV="dev",t.UNLIMITED="unlimited"})(F3e||(F3e={}));var L3e;(function(t){t.FAILED="failed",t.SUCCEED="succeed",t.RUNNING="running"})(L3e||(L3e={}));var Xl=class{iv;ephemPublicKey;ciphertext;mac;constructor(e,r,n,i){this.iv=e,this.ephemPublicKey=r,this.ciphertext=n,this.mac=i}};_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],Xl.prototype,"iv",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],Xl.prototype,"ephemPublicKey",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],Xl.prototype,"ciphertext",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],Xl.prototype,"mac",void 0);var sn=class{v;r;s;constructor(e,r,n){this.v=e,this.r=r,this.s=n}};_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsNumber)(),Er("design:type",Number)],sn.prototype,"v",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],sn.prototype,"r",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],sn.prototype,"s",void 0);var ab=class{memoryGrowDelta;call;frame;steps;constructor(e,r,n,i){this.call=e,this.frame=r,this.steps=n,this.memoryGrowDelta=i}};_r([(0,Ge.IsNumber)(),(0,Ge.IsOptional)(),Er("design:type",Number)],ab.prototype,"memoryGrowDelta",void 0);_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],ab.prototype,"call",void 0);_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],ab.prototype,"frame",void 0);_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],ab.prototype,"steps",void 0);var sb=class{call;frame;gas;memory;constructor(e,r,n,i){this.call=e,this.frame=r,this.gas=n,this.memory=i}};_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],sb.prototype,"call",void 0);_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],sb.prototype,"frame",void 0);_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],sb.prototype,"gas",void 0);_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],sb.prototype,"memory",void 0);var a3=class{call;frame;memory;constructor(e,r,n){this.call=e,this.frame=r,this.memory=n}};_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],a3.prototype,"call",void 0);_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],a3.prototype,"frame",void 0);_r([(0,Ge.IsNumber)(),(0,Ge.IsNotEmpty)(),Er("design:type",Number)],a3.prototype,"memory",void 0);var gM=class{protocol;constructor(e){this.protocol=e}};_r([(0,Ge.IsString)(),(0,Ge.IsNotEmpty)(),Er("design:type",String)],gM.prototype,"protocol",void 0);var Np=class{last;limits;peak;versions;constructor(e,r,n,i){this.last=e,this.limits=r,this.peak=n,this.versions=i}};_r([(0,Ge.ValidateNested)(),(0,ub.Type)(()=>ab),Er("design:type",ab)],Np.prototype,"last",void 0);_r([(0,Ge.ValidateNested)(),(0,ub.Type)(()=>sb),Er("design:type",sb)],Np.prototype,"limits",void 0);_r([(0,Ge.ValidateNested)(),(0,ub.Type)(()=>a3),Er("design:type",a3)],Np.prototype,"peak",void 0);_r([(0,Ge.IsOptional)(),(0,Ge.ValidateNested)(),(0,ub.Type)(()=>gM),Er("design:type",gM)],Np.prototype,"versions",void 0);var ob=class{senderAddress;status;output;metering;constructor(e,r,n,i){this.senderAddress=e,this.status=r,this.output=n,this.metering=i}};_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsEthereumAddress)(),Er("design:type",String)],ob.prototype,"senderAddress",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsEnum)(L3e),Er("design:type",String)],ob.prototype,"status",void 0);_r([(0,Ge.IsOptional)(),(0,Ge.IsString)(),Er("design:type",String)],ob.prototype,"output",void 0);_r([(0,Ge.IsOptional)(),(0,Ge.ValidateNested)(),(0,ub.Type)(()=>Np),Er("design:type",Np)],ob.prototype,"metering",void 0);var W4=class{signature;clearTextSolution;constructor(e,r){this.signature=e,this.clearTextSolution=r}};_r([(0,Ge.ValidateNested)(),(0,ub.Type)(()=>sn),Er("design:type",sn)],W4.prototype,"signature",void 0);_r([(0,Ge.ValidateNested)(),(0,ub.Type)(()=>ob),Er("design:type",ob)],W4.prototype,"clearTextSolution",void 0);var Qf=class{blockNumber;selectionStrategy;setNodes;constructor(e,r,n){this.blockNumber=e,this.selectionStrategy=r,this.setNodes=n}};_r([(0,Ge.IsNotEmpty)(),(0,Ge.Min)(0),Er("design:type",Number)],Qf.prototype,"blockNumber",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],Qf.prototype,"selectionStrategy",void 0);_r([(0,Ge.ArrayNotEmpty)(),(0,Ge.IsNotEmpty)({each:!0}),(0,Ge.IsEthereumAddress)({each:!0}),Er("design:type",Array)],Qf.prototype,"setNodes",void 0);var H0=class{gas;call;frame;memory;constructor(e,r,n,i){this.gas=e,this.call=r,this.frame=n,this.memory=i}};_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],H0.prototype,"gas",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],H0.prototype,"call",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],H0.prototype,"frame",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],H0.prototype,"memory",void 0);var z0=class{reward;requiredSolutions;totalSolutions;executionTimeout;constructor(e,r,n,i){this.reward=e,this.requiredSolutions=r,this.totalSolutions=n,this.executionTimeout=i}};_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsString)(),Er("design:type",String)],z0.prototype,"reward",void 0);_r([(0,Ge.Min)(1),(0,Ge.IsNotEmpty)(),(0,Ge.IsNumber)(),Er("design:type",Number)],z0.prototype,"requiredSolutions",void 0);_r([(0,Ge.Min)(1),(0,Ge.IsNotEmpty)(),(0,Ge.IsNumber)(),Er("design:type",Number)],z0.prototype,"totalSolutions",void 0);_r([(0,Ge.Min)(1),(0,Ge.IsNotEmpty)(),(0,Ge.IsNumber)(),Er("design:type",Number)],z0.prototype,"executionTimeout",void 0);var s3=class{request;response;constructor(e,r){this.request=e,this.response=r}};_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsNumber)(),Er("design:type",Number)],s3.prototype,"request",void 0);_r([(0,Ge.IsNotEmpty)(),(0,Ge.IsNumber)(),Er("design:type",Number)],s3.prototype,"response",void 0);var Bht;(function(t){t.MINIO="minio",t.S3="s3"})(Bht||(Bht={}));var W0=pr(u0(),1);import{v4 as Atn}from"uuid";var G4=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},K4=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},Dp=class{msgType;messageId;payload;msgTimestamp=Date.now();constructor(e,r){this.msgType=this.constructor.name,this.messageId=r||Atn(),this.payload=e}};G4([(0,W0.IsNotEmpty)(),(0,W0.IsString)(),K4("design:type",String)],Dp.prototype,"msgType",void 0);G4([(0,W0.IsOptional)(),(0,W0.IsUUID)(),K4("design:type",String)],Dp.prototype,"messageId",void 0);G4([(0,W0.ValidateNested)(),K4("design:type",Object)],Dp.prototype,"payload",void 0);G4([dh(),K4("design:type",Number)],Dp.prototype,"msgTimestamp",void 0);var hj=class extends Dp{error;constructor(e,r,n){super(r,n),this.error=e}};G4([(0,W0.IsNotEmpty)(),(0,W0.IsString)(),K4("design:type",String)],hj.prototype,"error",void 0);var j3e=class extends Dp{error;constructor(e,r,n){super(r,n),this.error=e}};G4([(0,W0.IsNotEmpty)(),(0,W0.IsString)(),K4("design:type",String)],j3e.prototype,"error",void 0);var Q5a=pr(G6(),1),Le=pr(u0(),1);var ph;(function(t){t.EVM="evm",t.AVALANCHE="avalanche"})(ph||(ph={}));var $p=pr(Y6(),1),Dt=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},kt=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},kp;(function(t){t.TASK_CREATED="task_created",t.API_TASK_CREATED="api_task_created",t.NODE_OUTCOME="node_outcome",t.TASK_SOLVED="task_solved",t.API_OUTCOME="api_outcome",t.SOLUTIONS_REVEALED="solutions_revealed",t.EXECUTION_COMPLETED="execution_completed",t.ADJUDICATION_OUTCOME="adjudication_outcome"})(kp||(kp={}));var G0=class{type;executionId;message;msgHash;signature;sequencerAddress;timestamp;constructor(e,r,n,i,a,s,o){this.type=e,this.executionId=r,this.message=i,this.msgHash=n,this.signature=a,this.timestamp=o,this.sequencerAddress=s}};Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEnum)(kp),kt("design:type",String)],G0.prototype,"type",void 0);Dt([(0,Le.IsUUID)(),(0,Le.IsNotEmpty)(),kt("design:type",String)],G0.prototype,"executionId",void 0);Dt([(0,Le.ValidateNested)(),kt("design:type",Object)],G0.prototype,"message",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsHash)("sha256"),kt("design:type",String)],G0.prototype,"msgHash",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>sn),kt("design:type",sn)],G0.prototype,"signature",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],G0.prototype,"sequencerAddress",void 0);Dt([dh(),(0,Le.IsNotEmpty)(),kt("design:type",Number)],G0.prototype,"timestamp",void 0);var mi=class{type="dispatch_task";taskId;executionId;msgHash;signature;limits;econParams;workers;dispatcherTimestamp;taskRequesterTimestamp;ledgerName;blockHash;blockNumber;chainId;nodeRegistryContractAddress;taskRegistryContractAddress;taskAuthorizationContractAddress;taskRequesterAddress;taskPath;taskVersion;signedRequestBody;senderAddress;input;constructor(e,r,n,i,a,s,o,u,f,c,d,h,p,m,y,b,_,E,A,x,q,N){this.taskId=e,this.executionId=r,this.msgHash=n,this.signature=i,this.limits=a,this.econParams=s,this.workers=o,this.dispatcherTimestamp=u,this.taskRequesterTimestamp=f,this.ledgerName=c,this.blockHash=d,this.blockNumber=h,this.chainId=p,this.nodeRegistryContractAddress=m,this.taskRegistryContractAddress=y,this.taskAuthorizationContractAddress=b,this.taskRequesterAddress=_,this.taskPath=E,this.taskVersion=A,this.signedRequestBody=N,this.senderAddress=x,this.input=q}};Dt([(0,Le.IsNotEmpty)(),(0,Le.IsString)(),kt("design:type",String)],mi.prototype,"taskId",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsUUID)(),kt("design:type",String)],mi.prototype,"executionId",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsHash)("sha256"),kt("design:type",String)],mi.prototype,"msgHash",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>sn),kt("design:type",sn)],mi.prototype,"signature",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>H0),kt("design:type",H0)],mi.prototype,"limits",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>z0),kt("design:type",z0)],mi.prototype,"econParams",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>Qf),kt("design:type",Qf)],mi.prototype,"workers",void 0);Dt([(0,Le.IsNotEmpty)(),N3e(),kt("design:type",Number)],mi.prototype,"dispatcherTimestamp",void 0);Dt([(0,Le.IsNotEmpty)(),N3e(),kt("design:type",Number)],mi.prototype,"taskRequesterTimestamp",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEnum)(ph),kt("design:type",String)],mi.prototype,"ledgerName",void 0);Dt([(0,Le.IsNotEmpty)(),kt("design:type",String)],mi.prototype,"blockHash",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.Min)(0),kt("design:type",Number)],mi.prototype,"blockNumber",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsString)(),kt("design:type",String)],mi.prototype,"chainId",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],mi.prototype,"nodeRegistryContractAddress",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],mi.prototype,"taskRegistryContractAddress",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],mi.prototype,"taskAuthorizationContractAddress",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],mi.prototype,"taskRequesterAddress",void 0);Dt([(0,Le.IsOptional)(),kt("design:type",String)],mi.prototype,"taskPath",void 0);Dt([(0,Le.IsOptional)(),(0,Le.Min)(0),kt("design:type",Number)],mi.prototype,"taskVersion",void 0);Dt([(0,Le.IsOptional)(),kt("design:type",Object)],mi.prototype,"signedRequestBody",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],mi.prototype,"senderAddress",void 0);Dt([(0,Le.IsOptional)(),(0,Le.Allow)(),kt("design:type",String)],mi.prototype,"input",void 0);var Ya=class{type="dispatch_task";taskId;executionId;msgHash;signature;ledgerName;blockHash;blockNumber;chainId;taskRegistryContractAddress;taskAuthorizationContractAddress;taskRequesterAddress;taskPath;taskVersion;senderAddress;executionTimeout;input;constructor(e,r,n,i,a,s,o,u,f,c,d,h,p,m,y,b){this.taskId=e,this.executionId=r,this.msgHash=n,this.signature=i,this.executionTimeout=y,this.ledgerName=s,this.blockHash=o,this.blockNumber=u,this.chainId=f,this.taskRegistryContractAddress=c,this.taskAuthorizationContractAddress=d,this.taskRequesterAddress=h,this.taskPath=p,this.taskVersion=m,this.senderAddress=a,this.input=b}};Dt([(0,Le.IsNotEmpty)(),(0,Le.IsString)(),kt("design:type",String)],Ya.prototype,"taskId",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsUUID)(),kt("design:type",String)],Ya.prototype,"executionId",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsHash)("sha256"),kt("design:type",String)],Ya.prototype,"msgHash",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>sn),kt("design:type",sn)],Ya.prototype,"signature",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEnum)(ph),kt("design:type",String)],Ya.prototype,"ledgerName",void 0);Dt([(0,Le.IsNotEmpty)(),kt("design:type",String)],Ya.prototype,"blockHash",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.Min)(0),kt("design:type",Number)],Ya.prototype,"blockNumber",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsString)(),kt("design:type",String)],Ya.prototype,"chainId",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],Ya.prototype,"taskRegistryContractAddress",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],Ya.prototype,"taskAuthorizationContractAddress",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],Ya.prototype,"taskRequesterAddress",void 0);Dt([(0,Le.IsOptional)(),kt("design:type",String)],Ya.prototype,"taskPath",void 0);Dt([(0,Le.IsOptional)(),(0,Le.Min)(0),kt("design:type",Number)],Ya.prototype,"taskVersion",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],Ya.prototype,"senderAddress",void 0);Dt([(0,Le.IsNumber)(),kt("design:type",Number)],Ya.prototype,"executionTimeout",void 0);Dt([(0,Le.IsOptional)(),(0,Le.Allow)(),kt("design:type",String)],Ya.prototype,"input",void 0);var hh=class{executionId;senderAddress;encryptedSolution;msgHash;signature;constructor(e,r,n,i,a){this.executionId=e,this.signature=a,this.encryptedSolution=n,this.senderAddress=r,this.msgHash=i}};Dt([(0,Le.IsUUID)(),(0,Le.IsNotEmpty)(),kt("design:type",String)],hh.prototype,"executionId",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],hh.prototype,"senderAddress",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>Xl),kt("design:type",Xl)],hh.prototype,"encryptedSolution",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsHash)("sha256"),kt("design:type",String)],hh.prototype,"msgHash",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>sn),kt("design:type",sn)],hh.prototype,"signature",void 0);var Ql=class{executionId;senderAddress;bodyResponse;msgHash;signature;tlsHandshakeHash;status;totalTransferredBytes;constructor(e,r,n,i,a,s,o,u){this.executionId=e,this.signature=a,this.bodyResponse=n,this.tlsHandshakeHash=s,this.senderAddress=r,this.msgHash=i,this.status=o,this.totalTransferredBytes=u}};Dt([(0,Le.IsUUID)(),(0,Le.IsNotEmpty)(),kt("design:type",String)],Ql.prototype,"executionId",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsEthereumAddress)(),kt("design:type",String)],Ql.prototype,"senderAddress",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsHash)("sha256"),kt("design:type",String)],Ql.prototype,"msgHash",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>sn),kt("design:type",sn)],Ql.prototype,"signature",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsString)(),kt("design:type",String)],Ql.prototype,"tlsHandshakeHash",void 0);Dt([(0,Le.IsNotEmpty)(),(0,Le.IsString)(),kt("design:type",String)],Ql.prototype,"status",void 0);Dt([(0,Le.ValidateNested)(),(0,$p.Type)(()=>s3),kt("design:type",s3)],Ql.prototype,"totalTransferredBytes",void 0);var n3a=pr(G6(),1);var rt=pr(u0(),1),Ws=pr(Y6(),1);var Zt=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Xt=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},mh=class{executionId;msgHash;signature;limits;econParams;workers;senderAddress;input;constructor(e,r,n,i,a,s,o,u){this.executionId=e,this.msgHash=r,this.signature=n,this.limits=i,this.econParams=a,this.workers=s,this.senderAddress=o,this.input=u}};Zt([(0,rt.IsUUID)(),(0,rt.IsNotEmpty)(),Xt("design:type",String)],mh.prototype,"executionId",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsHash)("sha256"),Xt("design:type",String)],mh.prototype,"msgHash",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>sn),Xt("design:type",sn)],mh.prototype,"signature",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>H0),Xt("design:type",H0)],mh.prototype,"limits",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>z0),Xt("design:type",z0)],mh.prototype,"econParams",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>Qf),Xt("design:type",Qf)],mh.prototype,"workers",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsString)(),Xt("design:type",String)],mh.prototype,"senderAddress",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsString)(),Xt("design:type",String)],mh.prototype,"input",void 0);var Y4=class{executionId;limits;econParams;workers;input;constructor(e,r,n,i,a){this.executionId=e,this.limits=r,this.econParams=n,this.workers=i,this.input=a}};Zt([(0,rt.IsUUID)(),(0,rt.IsNotEmpty)(),Xt("design:type",String)],Y4.prototype,"executionId",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>H0),Xt("design:type",H0)],Y4.prototype,"limits",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>z0),Xt("design:type",z0)],Y4.prototype,"econParams",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>Qf),Xt("design:type",Qf)],Y4.prototype,"workers",void 0);var U3e=class extends G0{message;constructor(e,r,n,i,a,s){super(kp.NODE_OUTCOME,e,r,n,i,a,s),this.message=n,this.executionId=e,this.msgHash=r,this.signature=i,this.timestamp=s,this.sequencerAddress=a,this.message=n}};Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>hh),Xt("design:type",hh)],U3e.prototype,"message",void 0);var V3e=class extends G0{message;constructor(e,r,n,i,a,s){super(kp.API_OUTCOME,e,r,n,i,a,s),this.message=n,this.executionId=e,this.msgHash=r,this.signature=i,this.timestamp=s,this.sequencerAddress=a}};Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>Ql),Xt("design:type",Ql)],V3e.prototype,"message",void 0);var J6=class{type;executionId;transcriptHash;status;signature;signerAddress;timestamp;constructor(e,r,n,i,a,s){this.type=kp.EXECUTION_COMPLETED,this.executionId=e,this.transcriptHash=r,this.status=n,this.signature=i,this.signerAddress=a,this.timestamp=s}};Zt([(0,rt.IsNotEmpty)(),(0,rt.IsString)(),Xt("design:type",String)],J6.prototype,"type",void 0);Zt([(0,rt.IsUUID)(),(0,rt.IsNotEmpty)(),Xt("design:type",String)],J6.prototype,"executionId",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsHash)("sha256"),Xt("design:type",String)],J6.prototype,"transcriptHash",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsEnum)(MO),Xt("design:type",String)],J6.prototype,"status",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>sn),Xt("design:type",sn)],J6.prototype,"signature",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsString)(),Xt("design:type",String)],J6.prototype,"signerAddress",void 0);Zt([dh(),(0,rt.IsNotEmpty)(),Xt("design:type",Number)],J6.prototype,"timestamp",void 0);var Bp=class{type;executionId;status;signature;senderAddress;timestamp;output;metering;error;constructor(e,r,n,i,a,s,o,u){this.type=kp.ADJUDICATION_OUTCOME,this.executionId=e,this.status=r,this.signature=n,this.senderAddress=i,this.output=s,this.metering=o,this.timestamp=a,this.error=u}};Zt([(0,rt.IsNotEmpty)(),(0,rt.IsString)(),Xt("design:type",String)],Bp.prototype,"type",void 0);Zt([(0,rt.IsUUID)(),(0,rt.IsNotEmpty)(),Xt("design:type",String)],Bp.prototype,"executionId",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsEnum)(MO),Xt("design:type",String)],Bp.prototype,"status",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>sn),Xt("design:type",sn)],Bp.prototype,"signature",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsString)(),Xt("design:type",String)],Bp.prototype,"senderAddress",void 0);Zt([dh(),(0,rt.IsNotEmpty)(),Xt("design:type",Number)],Bp.prototype,"timestamp",void 0);Zt([(0,rt.IsOptional)(),(0,rt.IsString)(),Xt("design:type",String)],Bp.prototype,"output",void 0);Zt([(0,rt.IsOptional)(),(0,rt.ValidateNested)(),(0,Ws.Type)(()=>Np),Xt("design:type",Np)],Bp.prototype,"metering",void 0);Zt([(0,rt.IsOptional)(),(0,rt.IsString)(),Xt("design:type",String)],Bp.prototype,"error",void 0);var fb=class{type;executionId;signature;clearTextSolutions;sequencerAddress;msgHash;timestamp;constructor(e,r,n,i,a,s){this.type=kp.SOLUTIONS_REVEALED,this.executionId=e,this.signature=r,this.clearTextSolutions=n,this.sequencerAddress=i,this.msgHash=a,this.timestamp=s}};Zt([(0,rt.IsUUID)(),(0,rt.IsNotEmpty)(),Xt("design:type",String)],fb.prototype,"executionId",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>sn),Xt("design:type",sn)],fb.prototype,"signature",void 0);Zt([(0,rt.ValidateNested)({each:!0}),(0,Ws.Type)(()=>W4),Xt("design:type",Array)],fb.prototype,"clearTextSolutions",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsEthereumAddress)(),Xt("design:type",String)],fb.prototype,"sequencerAddress",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsHash)("sha256"),Xt("design:type",String)],fb.prototype,"msgHash",void 0);Zt([dh(),(0,rt.IsNotEmpty)(),Xt("design:type",Number)],fb.prototype,"timestamp",void 0);var Z6=class extends G0{executionId;msgHash;message;signature;publicKey;sequencerAddress;timestamp;constructor(e,r,n,i,a,s,o){super(kp.TASK_CREATED,e,r,n,i,s,o),this.message=n,this.executionId=e,this.msgHash=r,this.signature=i,this.timestamp=o,this.sequencerAddress=s,this.publicKey=a,this.message=n}};Zt([(0,rt.IsNotEmpty)(),(0,rt.IsUUID)(),Xt("design:type",String)],Z6.prototype,"executionId",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsHash)("sha256"),Xt("design:type",String)],Z6.prototype,"msgHash",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>mi),Xt("design:type",mi)],Z6.prototype,"message",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>sn),Xt("design:type",sn)],Z6.prototype,"signature",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsString)(),Xt("design:type",String)],Z6.prototype,"publicKey",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsEthereumAddress)(),Xt("design:type",String)],Z6.prototype,"sequencerAddress",void 0);Zt([dh(),(0,rt.IsNotEmpty)(),Xt("design:type",Number)],Z6.prototype,"timestamp",void 0);var X6=class extends G0{executionId;msgHash;message;signature;publicKey;sequencerAddress;timestamp;constructor(e,r,n,i,a,s,o){super(kp.API_TASK_CREATED,e,r,n,i,s,o),this.message=n,this.executionId=e,this.msgHash=r,this.signature=i,this.timestamp=o,this.sequencerAddress=s,this.publicKey=a,this.message=n}};Zt([(0,rt.IsNotEmpty)(),(0,rt.IsUUID)(),Xt("design:type",String)],X6.prototype,"executionId",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsHash)("sha256"),Xt("design:type",String)],X6.prototype,"msgHash",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>Ya),Xt("design:type",Ya)],X6.prototype,"message",void 0);Zt([(0,rt.ValidateNested)(),(0,Ws.Type)(()=>sn),Xt("design:type",sn)],X6.prototype,"signature",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsString)(),Xt("design:type",String)],X6.prototype,"publicKey",void 0);Zt([(0,rt.IsNotEmpty)(),(0,rt.IsEthereumAddress)(),Xt("design:type",String)],X6.prototype,"sequencerAddress",void 0);Zt([dh(),(0,rt.IsNotEmpty)(),Xt("design:type",Number)],X6.prototype,"timestamp",void 0);var u3a=pr(G6(),1);var el=pr(u0(),1),H3e=pr(Y6(),1),vM=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},_M=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},o3=class{executionId;msgHash;signature;senderAddress;encryptedSolution;constructor(e,r,n,i,a){this.executionId=e,this.msgHash=r,this.signature=n,this.senderAddress=i,this.encryptedSolution=a}};vM([(0,el.IsUUID)(),(0,el.IsNotEmpty)(),_M("design:type",String)],o3.prototype,"executionId",void 0);vM([(0,el.IsNotEmpty)(),(0,el.IsHash)("sha256"),_M("design:type",String)],o3.prototype,"msgHash",void 0);vM([(0,el.ValidateNested)(),(0,H3e.Type)(()=>sn),_M("design:type",sn)],o3.prototype,"signature",void 0);vM([(0,el.IsNotEmpty)(),(0,el.IsEthereumAddress)(),_M("design:type",String)],o3.prototype,"senderAddress",void 0);vM([(0,el.ValidateNested)(),(0,H3e.Type)(()=>Xl),_M("design:type",Xl)],o3.prototype,"encryptedSolution",void 0);var St=pr(u0(),1);var En=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Sn=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},z3e=class{taskId;constructor(e){this.taskId=e}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],z3e.prototype,"taskId",void 0);var W3e=class{taskId;constructor(e){this.taskId=e}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],W3e.prototype,"taskId",void 0);var EM=class{input;checkpoint;taskId;constructor(e,r,n){this.taskId=e,this.checkpoint=r,this.input=n}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],EM.prototype,"input",void 0);En([(0,St.IsNotEmpty)(),Sn("design:type",Object)],EM.prototype,"checkpoint",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],EM.prototype,"taskId",void 0);var mj=class{input;taskId;constructor(e,r){this.taskId=e,this.input=r}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],mj.prototype,"input",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],mj.prototype,"taskId",void 0);var SM=class{executionId;input;taskId;constructor(e,r,n){this.taskId=e,this.executionId=r,this.input=n}};En([(0,St.IsNotEmpty)(),(0,St.IsUUID)(),Sn("design:type",String)],SM.prototype,"executionId",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],SM.prototype,"input",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],SM.prototype,"taskId",void 0);var yj=class{instrumentationId;taskId;constructor(e,r){this.taskId=e,this.instrumentationId=r}};En([(0,St.IsNotEmpty)(),(0,St.IsUUID)(),Sn("design:type",String)],yj.prototype,"instrumentationId",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],yj.prototype,"taskId",void 0);var G3e=class{taskId;constructor(e){this.taskId=e}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],G3e.prototype,"taskId",void 0);var K3e=class{taskId;constructor(e){this.taskId=e}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],K3e.prototype,"taskId",void 0);var Y3e=class{taskId;constructor(e){this.taskId=e}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],Y3e.prototype,"taskId",void 0);var bj=class{checkpointHash;taskId;constructor(e,r){this.taskId=e,this.checkpointHash=r}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],bj.prototype,"checkpointHash",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],bj.prototype,"taskId",void 0);var J3e=class{taskId;constructor(e){this.taskId=e}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],J3e.prototype,"taskId",void 0);var gj=class{checkpointCount;taskId;constructor(e,r){this.taskId=e,this.checkpointCount=r}};En([(0,St.IsNotEmpty)(),(0,St.IsNumber)(),Sn("design:type",Number)],gj.prototype,"checkpointCount",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],gj.prototype,"taskId",void 0);var Z3e=class{taskId;constructor(e,r){this.taskId=r}};En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],Z3e.prototype,"taskId",void 0);var wM=class{executionId;output;taskId;constructor(e,r,n){this.taskId=e,this.executionId=r,this.output=n}};En([(0,St.IsNotEmpty)(),(0,St.IsUUID)(),Sn("design:type",String)],wM.prototype,"executionId",void 0);En([(0,St.IsOptional)(),(0,St.IsString)(),Sn("design:type",String)],wM.prototype,"output",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],wM.prototype,"taskId",void 0);var vj=class{executionId;taskId;constructor(e,r,n){this.taskId=r,this.executionId=n}};En([(0,St.IsNotEmpty)(),(0,St.IsUUID)(),Sn("design:type",String)],vj.prototype,"executionId",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],vj.prototype,"taskId",void 0);var J4=class{instrumentationId;output;taskId;instrumentedTaskId;constructor(e,r,n,i){this.taskId=e,this.instrumentationId=r,this.output=i,this.instrumentedTaskId=n}};En([(0,St.IsNotEmpty)(),(0,St.IsUUID)(),Sn("design:type",String)],J4.prototype,"instrumentationId",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],J4.prototype,"output",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],J4.prototype,"taskId",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],J4.prototype,"instrumentedTaskId",void 0);var _j=class{instrumentationId;taskId;constructor(e,r,n){this.taskId=r,this.instrumentationId=n}};En([(0,St.IsNotEmpty)(),(0,St.IsUUID)(),Sn("design:type",String)],_j.prototype,"instrumentationId",void 0);En([(0,St.IsNotEmpty)(),(0,St.IsString)(),Sn("design:type",String)],_j.prototype,"taskId",void 0);import C3a from"axios";import x3a from"axios";u6();var Fht;(function(t){t.ACTIVE="active",t.INACTIVE="inactive"})(Fht||(Fht={}));var KTt=pr(Wxe(),1);var FSa=KTt.default.default;var yf;(function(t){t.LOCAL="local",t.LOCAL_DOCKER="local-docker",t.TESTNET="testnet",t.STAGING="staging",t.PRODUCTION="production"})(yf||(yf={}));var zt;(function(t){t.AVAX="avax",t.ETH="eth"})(zt||(zt={}));var K9=class{static create(e,r,n,i,a){switch(r){case ph.EVM:switch(i){case zt.ETH:return new JR(e,n,a);case zt.AVAX:return new ZR(e,n,a);default:throw new Error(`Unsupported blockchain name: ${i}`)}default:throw new Error(`Unsupported blockchain: ${r}`)}}};var xv=class{serviceLogger;env;pk;constructor(e,r,n){this.serviceLogger=e,this.env=r,this.pk=n}};var Gxe={address:"0x6da8eE7DF16BD92eb71F314f4b701C6c5b0b2721",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"}],name:"Deregistered",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"address",name:"grantee",type:"address"}],name:"Granted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"}],name:"Registered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"address",name:"grantee",type:"address"}],name:"Revoked",type:"event"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"deregister",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"apiKeyHash",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"deregisterWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"getPayer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"grant",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"grantWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_taskRegistry",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"register",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"apiKeyHash",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"revoke",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"revokeWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_taskRegistry",type:"address"}],name:"setTaskRegistry",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"taskRegistry",outputs:[{internalType:"contract ITaskRegistry",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0xa5e7e2620c85600d550ad35f16b078d435d8cc2d43ecfb2db992c333346a06c2",receipt:{to:null,from:"0xd70C3454aaD1B7ec660a064d8b1FE5708d898d84",contractAddress:"0x6da8eE7DF16BD92eb71F314f4b701C6c5b0b2721",transactionIndex:1,gasUsed:"842939",logsBloom:"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000040000000000000000000000000000000000002000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000000000800000000800000000000200000000000400800000000000000000800000200000000000000000080000000020000800000000000000000000000000000000000040000000000000000000000000000400000000020000000000000000000000000000000000404000000000000000020000000000000000000000000008000000000000000000000000000000000000000",blockHash:"0x1b5987792b3f5cd94fed817629ac63ed3d6bcc6fa901270b8062a886f9e48927",transactionHash:"0xa5e7e2620c85600d550ad35f16b078d435d8cc2d43ecfb2db992c333346a06c2",logs:[{transactionIndex:1,blockNumber:59397229,transactionHash:"0xa5e7e2620c85600d550ad35f16b078d435d8cc2d43ecfb2db992c333346a06c2",address:"0x6da8eE7DF16BD92eb71F314f4b701C6c5b0b2721",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000ace790e32df6702e86d0733303e3d08793213ec0"],data:"0x",logIndex:5,blockHash:"0x1b5987792b3f5cd94fed817629ac63ed3d6bcc6fa901270b8062a886f9e48927"},{transactionIndex:1,blockNumber:59397229,transactionHash:"0xa5e7e2620c85600d550ad35f16b078d435d8cc2d43ecfb2db992c333346a06c2",address:"0x6da8eE7DF16BD92eb71F314f4b701C6c5b0b2721",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84"],data:"0x",logIndex:6,blockHash:"0x1b5987792b3f5cd94fed817629ac63ed3d6bcc6fa901270b8062a886f9e48927"},{transactionIndex:1,blockNumber:59397229,transactionHash:"0xa5e7e2620c85600d550ad35f16b078d435d8cc2d43ecfb2db992c333346a06c2",address:"0x6da8eE7DF16BD92eb71F314f4b701C6c5b0b2721",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:7,blockHash:"0x1b5987792b3f5cd94fed817629ac63ed3d6bcc6fa901270b8062a886f9e48927"},{transactionIndex:1,blockNumber:59397229,transactionHash:"0xa5e7e2620c85600d550ad35f16b078d435d8cc2d43ecfb2db992c333346a06c2",address:"0x6da8eE7DF16BD92eb71F314f4b701C6c5b0b2721",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b8a703c0865645277636f2286f0d2db5f51e418",logIndex:8,blockHash:"0x1b5987792b3f5cd94fed817629ac63ed3d6bcc6fa901270b8062a886f9e48927"}],blockNumber:59397229,cumulativeGasUsed:"1007498",status:1,byzantium:!0},args:["0xAcE790e32df6702E86D0733303e3d08793213Ec0","0x1B8a703c0865645277636f2286f0d2Db5f51E418","0xc4d66de80000000000000000000000006825142a0e85ddb3cbf872a26ee2beefaedbc465"],numDeployments:2,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",implementation:"0x3B1433CcCE7a569A8D93a03387392927fE386ac8",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var Kxe={address:"0x6825142A0e85dDB3cBf872a26eE2beefaedbc465",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"grantee",type:"address"}],name:"AccessGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"grantee",type:"address"}],name:"AccessRevoked",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"}],name:"MetaNamespaceRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"}],name:"MetaTaskRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"oldOwner",type:"address"},{indexed:!1,internalType:"address",name:"newOwner",type:"address"}],name:"NamespaceOwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"owner",type:"address"}],name:"NamespaceRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskDisabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"cid",type:"string"},{indexed:!1,internalType:"address",name:"sender",type:"address"}],name:"TaskIdRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"},{indexed:!1,internalType:"string",name:"label",type:"string"}],name:"VersionLabelSet",type:"event"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"disableTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"string",name:"label",type:"string"}],name:"disableTaskByLabel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"enableTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getLatestActiveVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getLatestVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getTask",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"string",name:"label",type:"string"}],name:"getTaskByLabel",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"getTaskByVersion",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"grantNamespaceAccess",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"input",type:"string"}],name:"isAsciiString",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"string",name:"taskId",type:"string"}],name:"isTaskRevoked",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"str",type:"string"}],name:"isValidName",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"}],name:"labeledVersions",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"}],name:"latestVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"address",name:"",type:"address"}],name:"namespaceGrantees",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"namespaceOwners",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"task",type:"tuple"}],name:"registerTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"}],name:"registerTaskNamespace",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerTaskNamespaceWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"task",type:"tuple"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerTaskWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"revokeNamespaceAccess",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"taskId",type:"string"}],name:"revokeTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"revokedTaskId",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"},{internalType:"string",name:"label",type:"string"}],name:"setTaskLabel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"},{internalType:"uint256",name:"",type:"uint256"}],name:"tasks",outputs:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"newOwner",type:"address"}],name:"transferTaskNamespace",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0xb9e5160d0ef58150152792b730872186235e58776e7b569d17207a667b2d3b51",receipt:{to:null,from:"0xd70C3454aaD1B7ec660a064d8b1FE5708d898d84",contractAddress:"0x6825142A0e85dDB3cBf872a26eE2beefaedbc465",transactionIndex:3,gasUsed:"820456",logsBloom:"0x00000000000000000000000000000000400000000000000080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000100000000000020000000000000000000800000000800000000000000000000000400000000000000000000800000000000000080000000080000000020000800200000000000000000000000000000000000000000000000000000000040000400000000020000000000000000000000000000000002404000000000000000020000000000000000000000000008000000000000000000000000000000000000000",blockHash:"0x7fa352b460ebe8755792a5b457549d967f7e5e091e888a03df05a0f97115cde3",transactionHash:"0xb9e5160d0ef58150152792b730872186235e58776e7b569d17207a667b2d3b51",logs:[{transactionIndex:3,blockNumber:59397223,transactionHash:"0xb9e5160d0ef58150152792b730872186235e58776e7b569d17207a667b2d3b51",address:"0x6825142A0e85dDB3cBf872a26eE2beefaedbc465",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000da7703757a94e15c64e9e47844199a53f1235bd6"],data:"0x",logIndex:8,blockHash:"0x7fa352b460ebe8755792a5b457549d967f7e5e091e888a03df05a0f97115cde3"},{transactionIndex:3,blockNumber:59397223,transactionHash:"0xb9e5160d0ef58150152792b730872186235e58776e7b569d17207a667b2d3b51",address:"0x6825142A0e85dDB3cBf872a26eE2beefaedbc465",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84"],data:"0x",logIndex:9,blockHash:"0x7fa352b460ebe8755792a5b457549d967f7e5e091e888a03df05a0f97115cde3"},{transactionIndex:3,blockNumber:59397223,transactionHash:"0xb9e5160d0ef58150152792b730872186235e58776e7b569d17207a667b2d3b51",address:"0x6825142A0e85dDB3cBf872a26eE2beefaedbc465",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:10,blockHash:"0x7fa352b460ebe8755792a5b457549d967f7e5e091e888a03df05a0f97115cde3"},{transactionIndex:3,blockNumber:59397223,transactionHash:"0xb9e5160d0ef58150152792b730872186235e58776e7b569d17207a667b2d3b51",address:"0x6825142A0e85dDB3cBf872a26eE2beefaedbc465",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b8a703c0865645277636f2286f0d2db5f51e418",logIndex:11,blockHash:"0x7fa352b460ebe8755792a5b457549d967f7e5e091e888a03df05a0f97115cde3"}],blockNumber:59397223,cumulativeGasUsed:"1220673",status:1,byzantium:!0},args:["0xDA7703757a94E15c64E9E47844199a53F1235BD6","0x1B8a703c0865645277636f2286f0d2Db5f51E418","0x8129fc1c"],numDeployments:2,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",implementation:"0x005c9eb77441aF255795ebD55FceBa513A5Ae4F6",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var Yxe={address:"0x67AF2F01D7cb9A52af289b2702772576bd155310",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[],name:"CallerNotAuthorizedToDeregister",type:"error"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"length",type:"uint256"}],name:"InvalidArrayIndex",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidStakingContractAddress",type:"error"},{inputs:[],name:"InvalidWatchTowerAddress",type:"error"},{inputs:[],name:"NoRegistrationsAvailable",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NodeAlreadyRegistered",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NodeNotRegistered",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"OnlyWatchTowerCanCallback",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"executionId",type:"string"}],name:"NodeDeregistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"index",type:"uint256"}],name:"NodeRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"nodeId",type:"uint256"},{indexed:!1,internalType:"bool",name:"hasStake",type:"bool"}],name:"NodeRegistrationCompleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"},{indexed:!1,internalType:"bool",name:"hasStake",type:"bool"},{indexed:!1,internalType:"string[]",name:"transcripts",type:"string[]"},{indexed:!1,internalType:"string",name:"callbackMessageDetails",type:"string"}],name:"NodeRegistrationRejected",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"oldWTExecutionId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newWTExecutionId",type:"uint256"}],name:"NodeRegistrationReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"}],name:"NodeRegistrationRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"},{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"callbackMessageDetails",type:"string"}],name:"NodeRegistrationStaled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"StakingContractChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"ThresholdModified",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"WatchTowerAddressChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWatchTower",type:"address"},{indexed:!0,internalType:"address",name:"newWatchTower",type:"address"}],name:"WatchTowerUpdated",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WATCHTOWER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"result",type:"bytes"},{internalType:"string[]",name:"transcripts",type:"string[]"},{internalType:"uint256",name:"wtExecutionId",type:"uint256"},{internalType:"uint8",name:"status",type:"uint8"},{internalType:"string",name:"_callbackMessageDetails",type:"string"}],name:"callbackTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"executionId",type:"string"}],name:"deRegister",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"id",type:"address"},{internalType:"string",name:"executionId",type:"string"}],name:"deRegisterAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"deRegisterAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getNodeAtIndex",outputs:[{components:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"uint256",name:"blockRegistered",type:"uint256"},{internalType:"uint256",name:"timestampRegistered",type:"uint256"}],internalType:"struct INodeRegistry.Registration",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNodeCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"getNodeIndexByAddress",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"wtExecutionId",type:"uint256"}],name:"getNodeRegistrationStatus",outputs:[{internalType:"bool",name:"isCallbackComplete",type:"bool"},{internalType:"bool",name:"isRegistered",type:"bool"},{internalType:"string",name:"message",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"getNodeToWTExecutionId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNodes",outputs:[{components:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"uint256",name:"blockRegistered",type:"uint256"},{internalType:"uint256",name:"timestampRegistered",type:"uint256"}],internalType:"struct INodeRegistry.Registration[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWatchTowerAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"isNodeRegistered",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"registerNode",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stakingContract",type:"address"}],name:"setStakingContract",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"setWatchTower",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0x1622dae04ad2e97fd5a1e4f5d563389bef855e160af763180fd3cf60b78b89bd",receipt:{to:null,from:"0xd70C3454aaD1B7ec660a064d8b1FE5708d898d84",contractAddress:"0x67AF2F01D7cb9A52af289b2702772576bd155310",transactionIndex:7,gasUsed:"864743",logsBloom:"0x00000004000000000000000000000020400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000800000020000000000000000002000001000000000000000000000000000000000000020000000000000000800800000000800000000000000000000000400000000800000000000880000000000000000002000081000000020000800000000001000000000000000000000000000000000000000000001080000000400000000020000000000000000000000000000000000404000100000000000020000002000000000000000000008000000000000000000000000000000000080000",blockHash:"0x47b27ed758b5dce15a44651ab220d5924d72fed2c18bfc8e1004d18893f76804",transactionHash:"0x1622dae04ad2e97fd5a1e4f5d563389bef855e160af763180fd3cf60b78b89bd",logs:[{transactionIndex:7,blockNumber:71901049,transactionHash:"0x1622dae04ad2e97fd5a1e4f5d563389bef855e160af763180fd3cf60b78b89bd",address:"0x67AF2F01D7cb9A52af289b2702772576bd155310",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000089d44a25f35d14cc3ad317277348980f9991561b"],data:"0x",logIndex:17,blockHash:"0x47b27ed758b5dce15a44651ab220d5924d72fed2c18bfc8e1004d18893f76804"},{transactionIndex:7,blockNumber:71901049,transactionHash:"0x1622dae04ad2e97fd5a1e4f5d563389bef855e160af763180fd3cf60b78b89bd",address:"0x67AF2F01D7cb9A52af289b2702772576bd155310",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84"],data:"0x",logIndex:18,blockHash:"0x47b27ed758b5dce15a44651ab220d5924d72fed2c18bfc8e1004d18893f76804"},{transactionIndex:7,blockNumber:71901049,transactionHash:"0x1622dae04ad2e97fd5a1e4f5d563389bef855e160af763180fd3cf60b78b89bd",address:"0x67AF2F01D7cb9A52af289b2702772576bd155310",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84"],data:"0x",logIndex:19,blockHash:"0x47b27ed758b5dce15a44651ab220d5924d72fed2c18bfc8e1004d18893f76804"},{transactionIndex:7,blockNumber:71901049,transactionHash:"0x1622dae04ad2e97fd5a1e4f5d563389bef855e160af763180fd3cf60b78b89bd",address:"0x67AF2F01D7cb9A52af289b2702772576bd155310",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x112b543827e39baa999aa686bf791fe2f6502a00cd4342e25f8c36b543f90f14","0x000000000000000000000000ead039ca35b9c6592b638c0c4e2b7f42f078b754","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84"],data:"0x",logIndex:20,blockHash:"0x47b27ed758b5dce15a44651ab220d5924d72fed2c18bfc8e1004d18893f76804"},{transactionIndex:7,blockNumber:71901049,transactionHash:"0x1622dae04ad2e97fd5a1e4f5d563389bef855e160af763180fd3cf60b78b89bd",address:"0x67AF2F01D7cb9A52af289b2702772576bd155310",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:21,blockHash:"0x47b27ed758b5dce15a44651ab220d5924d72fed2c18bfc8e1004d18893f76804"},{transactionIndex:7,blockNumber:71901049,transactionHash:"0x1622dae04ad2e97fd5a1e4f5d563389bef855e160af763180fd3cf60b78b89bd",address:"0x67AF2F01D7cb9A52af289b2702772576bd155310",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b8a703c0865645277636f2286f0d2db5f51e418",logIndex:22,blockHash:"0x47b27ed758b5dce15a44651ab220d5924d72fed2c18bfc8e1004d18893f76804"}],blockNumber:71901049,cumulativeGasUsed:"1592009",status:1,byzantium:!0},args:["0x89D44A25f35D14cc3ad317277348980f9991561b","0x1B8a703c0865645277636f2286f0d2Db5f51E418","0xc4d66de8000000000000000000000000ead039ca35b9c6592b638c0c4e2b7f42f078b754"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:["0xEAd039cA35B9c6592B638C0C4E2b7f42F078B754"]},implementation:"0x89D44A25f35D14cc3ad317277348980f9991561b",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var Jxe={address:"0x94D2e9CC66Ac140bC5C2DE552DdFbd32f80eEe86",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"uint256",name:"required",type:"uint256"},{internalType:"uint256",name:"available",type:"uint256"}],name:"InsufficientContractBalance",type:"error"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAmount",type:"error"},{inputs:[{internalType:"uint256",name:"executionId",type:"uint256"}],name:"InvalidExecutionId",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidNodeAddress",type:"error"},{inputs:[],name:"InvalidNodeRegistryAddress",type:"error"},{inputs:[],name:"InvalidSlashingWallet",type:"error"},{inputs:[],name:"InvalidStakerAddress",type:"error"},{inputs:[],name:"InvalidTokenAddress",type:"error"},{inputs:[],name:"InvalidWatchTowerAddress",type:"error"},{inputs:[],name:"InvalidWithdrawalDelay",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoActiveUnstakeRequest",type:"error"},{inputs:[],name:"NoSlashedTokensAvailable",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoStakeExists",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoStakeToSlash",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoTokensToUnstake",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoWithdrawalInProgress",type:"error"},{inputs:[{internalType:"address",name:"currentRegistry",type:"address"}],name:"NodeRegistryAlreadySet",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"staker",type:"address"},{internalType:"address",name:"caller",type:"address"}],name:"OnlyStakerCanCancel",type:"error"},{inputs:[{internalType:"address",name:"staker",type:"address"},{internalType:"address",name:"caller",type:"address"}],name:"OnlyStakerCanUnstake",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{inputs:[],name:"SlashingWalletNotSet",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"StakeAlreadyExists",type:"error"},{inputs:[],name:"TokenTransferFailed",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"UnstakeAlreadyInProgress",type:"error"},{inputs:[],name:"WatchTowerNotSet",type:"error"},{inputs:[{internalType:"uint64",name:"withdrawalTime",type:"uint64"},{internalType:"uint256",name:"currentTime",type:"uint256"}],name:"WithdrawalPeriodNotElapsed",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldNodeRegistry",type:"address"},{indexed:!0,internalType:"address",name:"newNodeRegistry",type:"address"}],name:"NodeRegistryUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Slashed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"string",name:"executionId",type:"string"}],name:"Slashed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlashedCollected",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newAmount",type:"uint256"}],name:"SlashingAmountUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWallet",type:"address"},{indexed:!0,internalType:"address",name:"newWallet",type:"address"}],name:"SlashingWalletUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"timestamp",type:"uint256"}],name:"Staked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newAmount",type:"uint256"}],name:"StakingAmountUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWatchTower",type:"address"},{indexed:!0,internalType:"address",name:"newWatchTower",type:"address"}],name:"WatchTowerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"reason",type:"string"},{indexed:!1,internalType:"uint256",name:"cancelledAmount",type:"uint256"}],name:"WithdrawalCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"originalStaker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"WithdrawalCompleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldDelay",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newDelay",type:"uint256"}],name:"WithdrawalDelayUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"withdrawalTime",type:"uint256"}],name:"WithdrawalInitiated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"SLASHER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WATCHTOWER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"result",type:"bytes"},{internalType:"string[]",name:"",type:"string[]"},{internalType:"uint256",name:"wtExecutionId",type:"uint256"},{internalType:"uint8",name:"status",type:"uint8"},{internalType:"string",name:"",type:"string"}],name:"callbackTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"cancelWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"collectSlashedTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"completeWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"existsStake",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getEffectiveStakeForRegistration",outputs:[{internalType:"uint256",name:"stakeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSlashableAmountToCollect",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStake",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"timestamp",type:"uint256"},{internalType:"address",name:"staker",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStakeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStaker",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getStakingParameters",outputs:[{internalType:"uint256",name:"stakeAmount",type:"uint256"},{internalType:"uint256",name:"slashAmount",type:"uint256"},{internalType:"uint256",name:"withdrawalDelay",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getUnstakeWithdrawalTime",outputs:[{internalType:"uint64",name:"withdrawalTime",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantSlasherRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token",type:"address"},{internalType:"address",name:"_watchTower",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isMyWithdrawalReady",outputs:[{internalType:"bool",name:"ready",type:"bool"},{internalType:"uint256",name:"timeRemaining",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"isUnstakeWithdrawalReady",outputs:[{internalType:"bool",name:"ready",type:"bool"},{internalType:"uint256",name:"timeRemaining",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"isWithdrawalInProgress",outputs:[{internalType:"bool",name:"inProgress",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_nodeRegistry",type:"address"}],name:"setNodeRegistry",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"setSlashingAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"}],name:"setSlashingWallet",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"setStakingAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"setWatchTower",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_withdrawalDelay",type:"uint256"}],name:"setWithdrawalDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"string",name:"executionId",type:"string"}],name:"slash",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slashingWallet",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalStaked",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"unstakeByAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"unstakeFor",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"watchTower",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0x7db87b8c61b543a3e3b3f5dfe40741d7d2266194d9c4c08b0ba414e1d6948cb6",receipt:{to:null,from:"0xd70C3454aaD1B7ec660a064d8b1FE5708d898d84",contractAddress:"0x94D2e9CC66Ac140bC5C2DE552DdFbd32f80eEe86",transactionIndex:55,gasUsed:"976743",logsBloom:"0x000000040000000000000000100000004000000000000000000100000080000000000000000000080000000000000000000000000000004000000000000000000000000000000000000000000000024000000000000000000200000000000000000000000200010000000000000008000000008000000000000000000000000000000000000000000008000000000000000000000000800000000200008000000000010000000000000000000000000000002000000000000010000000004800000000200000000000000000000000000000000004040001000000200000a0000002000000000000000000008000000000000000000000000000000000080000",blockHash:"0x8b7329ab1ebb52c93fc5b24eaaf5db642e6f7bf6aa1af6f551cfa3c355b5b2b6",transactionHash:"0x7db87b8c61b543a3e3b3f5dfe40741d7d2266194d9c4c08b0ba414e1d6948cb6",logs:[{transactionIndex:55,blockNumber:23790957,transactionHash:"0x7db87b8c61b543a3e3b3f5dfe40741d7d2266194d9c4c08b0ba414e1d6948cb6",address:"0x94D2e9CC66Ac140bC5C2DE552DdFbd32f80eEe86",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000c1fc4fd47507b083835766a87de0b96f1fb40192"],data:"0x",logIndex:376,blockHash:"0x8b7329ab1ebb52c93fc5b24eaaf5db642e6f7bf6aa1af6f551cfa3c355b5b2b6"},{transactionIndex:55,blockNumber:23790957,transactionHash:"0x7db87b8c61b543a3e3b3f5dfe40741d7d2266194d9c4c08b0ba414e1d6948cb6",address:"0x94D2e9CC66Ac140bC5C2DE552DdFbd32f80eEe86",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84"],data:"0x",logIndex:377,blockHash:"0x8b7329ab1ebb52c93fc5b24eaaf5db642e6f7bf6aa1af6f551cfa3c355b5b2b6"},{transactionIndex:55,blockNumber:23790957,transactionHash:"0x7db87b8c61b543a3e3b3f5dfe40741d7d2266194d9c4c08b0ba414e1d6948cb6",address:"0x94D2e9CC66Ac140bC5C2DE552DdFbd32f80eEe86",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x112b543827e39baa999aa686bf791fe2f6502a00cd4342e25f8c36b543f90f14","0x00000000000000000000000048c101d60f6f8a9589fa74e10da62460219b53e6","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84"],data:"0x",logIndex:378,blockHash:"0x8b7329ab1ebb52c93fc5b24eaaf5db642e6f7bf6aa1af6f551cfa3c355b5b2b6"},{transactionIndex:55,blockNumber:23790957,transactionHash:"0x7db87b8c61b543a3e3b3f5dfe40741d7d2266194d9c4c08b0ba414e1d6948cb6",address:"0x94D2e9CC66Ac140bC5C2DE552DdFbd32f80eEe86",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e39","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84","0x000000000000000000000000d70c3454aad1b7ec660a064d8b1fe5708d898d84"],data:"0x",logIndex:379,blockHash:"0x8b7329ab1ebb52c93fc5b24eaaf5db642e6f7bf6aa1af6f551cfa3c355b5b2b6"},{transactionIndex:55,blockNumber:23790957,transactionHash:"0x7db87b8c61b543a3e3b3f5dfe40741d7d2266194d9c4c08b0ba414e1d6948cb6",address:"0x94D2e9CC66Ac140bC5C2DE552DdFbd32f80eEe86",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:380,blockHash:"0x8b7329ab1ebb52c93fc5b24eaaf5db642e6f7bf6aa1af6f551cfa3c355b5b2b6"},{transactionIndex:55,blockNumber:23790957,transactionHash:"0x7db87b8c61b543a3e3b3f5dfe40741d7d2266194d9c4c08b0ba414e1d6948cb6",address:"0x94D2e9CC66Ac140bC5C2DE552DdFbd32f80eEe86",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090b0f7da1f352b62c1575871fbec29a903c6d5c6",logIndex:381,blockHash:"0x8b7329ab1ebb52c93fc5b24eaaf5db642e6f7bf6aa1af6f551cfa3c355b5b2b6"}],blockNumber:23790957,cumulativeGasUsed:"12239811",status:1,byzantium:!0},args:["0xC1fc4fD47507B083835766a87de0b96f1Fb40192","0x90B0f7Da1f352B62C1575871Fbec29A903C6d5c6","0x485cc955000000000000000000000000f65b5c5104c4fafd4b709d9d60a185eae063276c00000000000000000000000048c101d60f6f8a9589fa74e10da62460219b53e6"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:["0xf65b5c5104c4fafd4b709d9d60a185eae063276c","0x48C101d60F6f8a9589fa74e10da62460219B53e6"]},implementation:"0xC1fc4fD47507B083835766a87de0b96f1Fb40192",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var XR={address:"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"}],name:"Deregistered",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"address",name:"grantee",type:"address"}],name:"Granted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"}],name:"Registered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"address",name:"grantee",type:"address"}],name:"Revoked",type:"event"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"deregister",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"apiKeyHash",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"deregisterWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"getPayer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"grant",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"grantWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_taskRegistry",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"register",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"apiKeyHash",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"revoke",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"revokeWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_taskRegistry",type:"address"}],name:"setTaskRegistry",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"taskRegistry",outputs:[{internalType:"contract ITaskRegistry",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0xa64054924e276b527e8a1899bc2046f1309879d6c5c5615d2a2aa3b594a13afc",receipt:{to:null,from:"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",contractAddress:"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6",transactionIndex:0,gasUsed:"842873",logsBloom:"0x000000000000000000000000004000004000000000000000008000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000020000010000000000000000000000000000000000000200000000000001000008000000008000000000000000000000004000000000000000000008000000000000000000000000c0000000000000800000000000000000000000000000000040000000000000000000000000000000008000000020000000200000000000000000000000002404000000000000000020000000000000000000000000000800000000000000000000000000000000000000",blockHash:"0x918ebc751eb0483d789bb3b56217ee75cd821157e617f4a9e3460688a8f0937d",transactionHash:"0xa64054924e276b527e8a1899bc2046f1309879d6c5c5615d2a2aa3b594a13afc",logs:[{transactionIndex:0,blockNumber:34,transactionHash:"0xa64054924e276b527e8a1899bc2046f1309879d6c5c5615d2a2aa3b594a13afc",address:"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853"],data:"0x",logIndex:0,blockHash:"0x918ebc751eb0483d789bb3b56217ee75cd821157e617f4a9e3460688a8f0937d"},{transactionIndex:0,blockNumber:34,transactionHash:"0xa64054924e276b527e8a1899bc2046f1309879d6c5c5615d2a2aa3b594a13afc",address:"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],data:"0x",logIndex:1,blockHash:"0x918ebc751eb0483d789bb3b56217ee75cd821157e617f4a9e3460688a8f0937d"},{transactionIndex:0,blockNumber:34,transactionHash:"0xa64054924e276b527e8a1899bc2046f1309879d6c5c5615d2a2aa3b594a13afc",address:"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:2,blockHash:"0x918ebc751eb0483d789bb3b56217ee75cd821157e617f4a9e3460688a8f0937d"},{transactionIndex:0,blockNumber:34,transactionHash:"0xa64054924e276b527e8a1899bc2046f1309879d6c5c5615d2a2aa3b594a13afc",address:"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3",logIndex:3,blockHash:"0x918ebc751eb0483d789bb3b56217ee75cd821157e617f4a9e3460688a8f0937d"}],blockNumber:34,cumulativeGasUsed:"842873",status:1,byzantium:!0},args:["0xa513E6E4b8f2a923D98304ec87F64353C4D5C853","0x5FbDB2315678afecb367f032d93F642f64180aa3","0xc4d66de80000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:["0x0165878A594ca255338adfa4d48449f69242Eb8F"]},implementation:"0xa513E6E4b8f2a923D98304ec87F64353C4D5C853",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var QR={address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"grantee",type:"address"}],name:"AccessGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"grantee",type:"address"}],name:"AccessRevoked",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"}],name:"MetaNamespaceRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"}],name:"MetaTaskRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"oldOwner",type:"address"},{indexed:!1,internalType:"address",name:"newOwner",type:"address"}],name:"NamespaceOwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"owner",type:"address"}],name:"NamespaceRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskDisabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"cid",type:"string"},{indexed:!1,internalType:"address",name:"sender",type:"address"}],name:"TaskIdRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"},{indexed:!1,internalType:"string",name:"label",type:"string"}],name:"VersionLabelSet",type:"event"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"disableTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"string",name:"label",type:"string"}],name:"disableTaskByLabel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"enableTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getLatestActiveVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getLatestVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getTask",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"string",name:"label",type:"string"}],name:"getTaskByLabel",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"getTaskByVersion",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"grantNamespaceAccess",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"input",type:"string"}],name:"isAsciiString",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"string",name:"taskId",type:"string"}],name:"isTaskRevoked",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"str",type:"string"}],name:"isValidName",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"}],name:"labeledVersions",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"}],name:"latestVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"address",name:"",type:"address"}],name:"namespaceGrantees",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"namespaceOwners",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"task",type:"tuple"}],name:"registerTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"}],name:"registerTaskNamespace",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerTaskNamespaceWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"task",type:"tuple"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerTaskWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"revokeNamespaceAccess",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"taskId",type:"string"}],name:"revokeTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"revokedTaskId",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"},{internalType:"string",name:"label",type:"string"}],name:"setTaskLabel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"},{internalType:"uint256",name:"",type:"uint256"}],name:"tasks",outputs:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"newOwner",type:"address"}],name:"transferTaskNamespace",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0x5f0f14b65a48b0f76f86bdeed0defbad1fad0915637c7d7deff74d60b5bd21c5",receipt:{to:null,from:"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",contractAddress:"0x0165878A594ca255338adfa4d48449f69242Eb8F",transactionIndex:0,gasUsed:"820391",logsBloom:"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000040000000000000000000000000000000001000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000800000000000000000000000440000000000000000000800000000000000000000000080000000000000800000100000000000000000000000000000000000000000000000000000000000000000000024000000200000000000000000000000002404001000000000000020000000000000000000000000000000000000000000000000000000000000000000",blockHash:"0xb5ce6025548cbccea62d47c728dedc44b61544ca32484f2f6b051b9aea3ee214",transactionHash:"0x5f0f14b65a48b0f76f86bdeed0defbad1fad0915637c7d7deff74d60b5bd21c5",logs:[{transactionIndex:0,blockNumber:32,transactionHash:"0x5f0f14b65a48b0f76f86bdeed0defbad1fad0915637c7d7deff74d60b5bd21c5",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707"],data:"0x",logIndex:0,blockHash:"0xb5ce6025548cbccea62d47c728dedc44b61544ca32484f2f6b051b9aea3ee214"},{transactionIndex:0,blockNumber:32,transactionHash:"0x5f0f14b65a48b0f76f86bdeed0defbad1fad0915637c7d7deff74d60b5bd21c5",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],data:"0x",logIndex:1,blockHash:"0xb5ce6025548cbccea62d47c728dedc44b61544ca32484f2f6b051b9aea3ee214"},{transactionIndex:0,blockNumber:32,transactionHash:"0x5f0f14b65a48b0f76f86bdeed0defbad1fad0915637c7d7deff74d60b5bd21c5",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:2,blockHash:"0xb5ce6025548cbccea62d47c728dedc44b61544ca32484f2f6b051b9aea3ee214"},{transactionIndex:0,blockNumber:32,transactionHash:"0x5f0f14b65a48b0f76f86bdeed0defbad1fad0915637c7d7deff74d60b5bd21c5",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3",logIndex:3,blockHash:"0xb5ce6025548cbccea62d47c728dedc44b61544ca32484f2f6b051b9aea3ee214"}],blockNumber:32,cumulativeGasUsed:"820391",status:1,byzantium:!0},args:["0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","0x5FbDB2315678afecb367f032d93F642f64180aa3","0x8129fc1c"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:[]},implementation:"0x5FC8d32690cc91D4c39d9d3abcBD16989F875707",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var eq={address:"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[],name:"CallerNotAuthorizedToDeregister",type:"error"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"length",type:"uint256"}],name:"InvalidArrayIndex",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidStakingContractAddress",type:"error"},{inputs:[],name:"InvalidWatchTowerAddress",type:"error"},{inputs:[],name:"NoRegistrationsAvailable",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NodeAlreadyRegistered",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NodeNotRegistered",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"OnlyWatchTowerCanCallback",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"executionId",type:"string"}],name:"NodeDeregistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"index",type:"uint256"}],name:"NodeRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"nodeId",type:"uint256"},{indexed:!1,internalType:"bool",name:"hasStake",type:"bool"}],name:"NodeRegistrationCompleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"},{indexed:!1,internalType:"bool",name:"hasStake",type:"bool"},{indexed:!1,internalType:"string[]",name:"transcripts",type:"string[]"},{indexed:!1,internalType:"string",name:"callbackMessageDetails",type:"string"}],name:"NodeRegistrationRejected",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"oldWTExecutionId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newWTExecutionId",type:"uint256"}],name:"NodeRegistrationReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"}],name:"NodeRegistrationRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"},{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"callbackMessageDetails",type:"string"}],name:"NodeRegistrationStaled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"StakingContractChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"ThresholdModified",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"WatchTowerAddressChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWatchTower",type:"address"},{indexed:!0,internalType:"address",name:"newWatchTower",type:"address"}],name:"WatchTowerUpdated",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WATCHTOWER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"result",type:"bytes"},{internalType:"string[]",name:"transcripts",type:"string[]"},{internalType:"uint256",name:"wtExecutionId",type:"uint256"},{internalType:"uint8",name:"status",type:"uint8"},{internalType:"string",name:"_callbackMessageDetails",type:"string"}],name:"callbackTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"executionId",type:"string"}],name:"deRegister",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"id",type:"address"},{internalType:"string",name:"executionId",type:"string"}],name:"deRegisterAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"deRegisterAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getNodeAtIndex",outputs:[{components:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"uint256",name:"blockRegistered",type:"uint256"},{internalType:"uint256",name:"timestampRegistered",type:"uint256"}],internalType:"struct INodeRegistry.Registration",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNodeCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"getNodeIndexByAddress",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"wtExecutionId",type:"uint256"}],name:"getNodeRegistrationStatus",outputs:[{internalType:"bool",name:"isCallbackComplete",type:"bool"},{internalType:"bool",name:"isRegistered",type:"bool"},{internalType:"string",name:"message",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"getNodeToWTExecutionId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNodes",outputs:[{components:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"uint256",name:"blockRegistered",type:"uint256"},{internalType:"uint256",name:"timestampRegistered",type:"uint256"}],internalType:"struct INodeRegistry.Registration[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWatchTowerAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"isNodeRegistered",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"registerNode",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stakingContract",type:"address"}],name:"setStakingContract",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"setWatchTower",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0x9ec161fcfc21422f7c153efd6765b12454fd0265234f462bfc27ab5b499262d0",receipt:{to:null,from:"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",contractAddress:"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9",transactionIndex:0,gasUsed:"864657",logsBloom:"0x00000004000000000000000000000000400000000000000000800000000000000000000000000080000400000000000000400000000000000000000000000000000000000000000000000000000002000001000000000000000000000000400000000000020000000000000100000800000000800000000000000000000000400000000000000000000800000000000000000000000080000000000000800000000001001000000000000000000000000000000000000000001000000000000000000020000000200000000000000000000000002424000100000000000020000002000000000000008000000000000000000001000000000100000000080000",blockHash:"0x90b825cdb1675fd2ca767b351520f6c30d0f2034dcc6449954c0b6eee9f9c5fb",transactionHash:"0x9ec161fcfc21422f7c153efd6765b12454fd0265234f462bfc27ab5b499262d0",logs:[{transactionIndex:0,blockNumber:30,transactionHash:"0x9ec161fcfc21422f7c153efd6765b12454fd0265234f462bfc27ab5b499262d0",address:"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9"],data:"0x",logIndex:0,blockHash:"0x90b825cdb1675fd2ca767b351520f6c30d0f2034dcc6449954c0b6eee9f9c5fb"},{transactionIndex:0,blockNumber:30,transactionHash:"0x9ec161fcfc21422f7c153efd6765b12454fd0265234f462bfc27ab5b499262d0",address:"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],data:"0x",logIndex:1,blockHash:"0x90b825cdb1675fd2ca767b351520f6c30d0f2034dcc6449954c0b6eee9f9c5fb"},{transactionIndex:0,blockNumber:30,transactionHash:"0x9ec161fcfc21422f7c153efd6765b12454fd0265234f462bfc27ab5b499262d0",address:"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],data:"0x",logIndex:2,blockHash:"0x90b825cdb1675fd2ca767b351520f6c30d0f2034dcc6449954c0b6eee9f9c5fb"},{transactionIndex:0,blockNumber:30,transactionHash:"0x9ec161fcfc21422f7c153efd6765b12454fd0265234f462bfc27ab5b499262d0",address:"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x112b543827e39baa999aa686bf791fe2f6502a00cd4342e25f8c36b543f90f14","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],data:"0x",logIndex:3,blockHash:"0x90b825cdb1675fd2ca767b351520f6c30d0f2034dcc6449954c0b6eee9f9c5fb"},{transactionIndex:0,blockNumber:30,transactionHash:"0x9ec161fcfc21422f7c153efd6765b12454fd0265234f462bfc27ab5b499262d0",address:"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:4,blockHash:"0x90b825cdb1675fd2ca767b351520f6c30d0f2034dcc6449954c0b6eee9f9c5fb"},{transactionIndex:0,blockNumber:30,transactionHash:"0x9ec161fcfc21422f7c153efd6765b12454fd0265234f462bfc27ab5b499262d0",address:"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3",logIndex:5,blockHash:"0x90b825cdb1675fd2ca767b351520f6c30d0f2034dcc6449954c0b6eee9f9c5fb"}],blockNumber:30,cumulativeGasUsed:"864657",status:1,byzantium:!0},args:["0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","0x5FbDB2315678afecb367f032d93F642f64180aa3","0xc4d66de80000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:["0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0"]},implementation:"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var h1={address:"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[{internalType:"address",name:"addr",type:"address"},{internalType:"string",name:"message",type:"string"}],name:"AddressBlacklistedOrQuotaExceeded",type:"error"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"AddressNotBlacklisted",type:"error"},{inputs:[],name:"AlreadyFulfilled",type:"error"},{inputs:[{internalType:"address",name:"listener",type:"address"}],name:"AlreadyRegisteredListener",type:"error"},{inputs:[],name:"EnforcedPause",type:"error"},{inputs:[],name:"ExpectedPause",type:"error"},{inputs:[],name:"InvalidAddress",type:"error"},{inputs:[],name:"InvalidCaller",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidRequestId",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"listener",type:"address"}],name:"NotRegisteredListener",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"blacklistedAddress",type:"address"}],name:"AddressBlacklisted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"removedAddress",type:"address"}],name:"AddressRemovedFromBlacklist",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"requestId",type:"uint256"},{indexed:!0,internalType:"address",name:"requester",type:"address"},{indexed:!1,internalType:"string",name:"reason",type:"string"}],name:"CallbackFailed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Paused",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"requestId",type:"uint256"},{indexed:!0,internalType:"address",name:"requester",type:"address"},{indexed:!1,internalType:"uint8",name:"status",type:"uint8"}],name:"RequestFulfilled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"userContract",type:"address"},{indexed:!0,internalType:"address",name:"userEOA",type:"address"},{indexed:!1,internalType:"string",name:"methodSignature",type:"string"},{indexed:!1,internalType:"bytes",name:"input",type:"bytes"},{indexed:!1,internalType:"bytes32",name:"codeHash",type:"bytes32"},{indexed:!1,internalType:"enum DOTypes.ExecutionType",name:"executionType",type:"uint8"},{indexed:!1,internalType:"uint256",name:"requestId",type:"uint256"}],name:"TaskRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"account",type:"address"}],name:"Unpaused",type:"event"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"addToBlacklist",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"listener",type:"address"}],name:"associatedListener",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"resultData",type:"bytes"},{internalType:"string[]",name:"transcripts",type:"string[]"},{internalType:"uint256",name:"wtExecutionId",type:"uint256"},{internalType:"uint8",name:"status",type:"uint8"},{internalType:"string",name:"callbackMessageDetails",type:"string"}],name:"callback",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"getRequestIdCounter",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"caller",type:"address"}],name:"getTaskSourceFromCaller",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"isBlacklisted",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"requestId",type:"uint256"}],name:"isFulfilled",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"pause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"paused",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"listener",type:"address"}],name:"registerListener",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"removeFromBlacklist",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"methodSignature",type:"string"},{internalType:"bytes",name:"input",type:"bytes"},{internalType:"bytes32",name:"codeHash",type:"bytes32"},{internalType:"enum DOTypes.ExecutionType",name:"executionType",type:"uint8"}],name:"requestExecution",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"unpause",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"listener",type:"address"}],name:"unregisterListener",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"version",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0xdb010e2795de75460aa79a11b378d230c48e09ed711b5cba83c9e59533604286",receipt:{to:null,from:"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",contractAddress:"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",transactionIndex:0,gasUsed:"837747",logsBloom:"0x00000000000000000400000000000000400000000000000000800000000000000000000000000000000000000000000000000000000040200000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000100000800000000800000000000000004000000400000000000000000000800000000000000000000000080000000000000800000000000000000000000000002000000000000000000000000000000000000000000000020000000200000000000000000000000002404000000000000000020000000000000000000000000000000000000000000000000400000000000000000",blockHash:"0xfb38f0b8cb953b1820a7b12a0d383fd033c0083de4c7db933340e04983c3537f",transactionHash:"0xdb010e2795de75460aa79a11b378d230c48e09ed711b5cba83c9e59533604286",logs:[{transactionIndex:0,blockNumber:28,transactionHash:"0xdb010e2795de75460aa79a11b378d230c48e09ed711b5cba83c9e59533604286",address:"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f0512"],data:"0x",logIndex:0,blockHash:"0xfb38f0b8cb953b1820a7b12a0d383fd033c0083de4c7db933340e04983c3537f"},{transactionIndex:0,blockNumber:28,transactionHash:"0xdb010e2795de75460aa79a11b378d230c48e09ed711b5cba83c9e59533604286",address:"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],data:"0x",logIndex:1,blockHash:"0xfb38f0b8cb953b1820a7b12a0d383fd033c0083de4c7db933340e04983c3537f"},{transactionIndex:0,blockNumber:28,transactionHash:"0xdb010e2795de75460aa79a11b378d230c48e09ed711b5cba83c9e59533604286",address:"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:2,blockHash:"0xfb38f0b8cb953b1820a7b12a0d383fd033c0083de4c7db933340e04983c3537f"},{transactionIndex:0,blockNumber:28,transactionHash:"0xdb010e2795de75460aa79a11b378d230c48e09ed711b5cba83c9e59533604286",address:"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3",logIndex:3,blockHash:"0xfb38f0b8cb953b1820a7b12a0d383fd033c0083de4c7db933340e04983c3537f"}],blockNumber:28,cumulativeGasUsed:"837747",status:1,byzantium:!0},args:["0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512","0x5FbDB2315678afecb367f032d93F642f64180aa3","0x8129fc1c"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:[]},implementation:"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var tq={address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"uint256",name:"required",type:"uint256"},{internalType:"uint256",name:"available",type:"uint256"}],name:"InsufficientContractBalance",type:"error"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAmount",type:"error"},{inputs:[{internalType:"uint256",name:"executionId",type:"uint256"}],name:"InvalidExecutionId",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidNodeAddress",type:"error"},{inputs:[],name:"InvalidNodeRegistryAddress",type:"error"},{inputs:[],name:"InvalidSlashingWallet",type:"error"},{inputs:[],name:"InvalidStakerAddress",type:"error"},{inputs:[],name:"InvalidTokenAddress",type:"error"},{inputs:[],name:"InvalidWatchTowerAddress",type:"error"},{inputs:[],name:"InvalidWithdrawalDelay",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoActiveUnstakeRequest",type:"error"},{inputs:[],name:"NoSlashedTokensAvailable",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoStakeExists",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoStakeToSlash",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoTokensToUnstake",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoWithdrawalInProgress",type:"error"},{inputs:[{internalType:"address",name:"currentRegistry",type:"address"}],name:"NodeRegistryAlreadySet",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"staker",type:"address"},{internalType:"address",name:"caller",type:"address"}],name:"OnlyStakerCanCancel",type:"error"},{inputs:[{internalType:"address",name:"staker",type:"address"},{internalType:"address",name:"caller",type:"address"}],name:"OnlyStakerCanUnstake",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{inputs:[],name:"SlashingWalletNotSet",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"StakeAlreadyExists",type:"error"},{inputs:[],name:"TokenTransferFailed",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"UnstakeAlreadyInProgress",type:"error"},{inputs:[],name:"WatchTowerNotSet",type:"error"},{inputs:[{internalType:"uint64",name:"withdrawalTime",type:"uint64"},{internalType:"uint256",name:"currentTime",type:"uint256"}],name:"WithdrawalPeriodNotElapsed",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldNodeRegistry",type:"address"},{indexed:!0,internalType:"address",name:"newNodeRegistry",type:"address"}],name:"NodeRegistryUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Slashed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"string",name:"executionId",type:"string"}],name:"Slashed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlashedCollected",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newAmount",type:"uint256"}],name:"SlashingAmountUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWallet",type:"address"},{indexed:!0,internalType:"address",name:"newWallet",type:"address"}],name:"SlashingWalletUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"timestamp",type:"uint256"}],name:"Staked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newAmount",type:"uint256"}],name:"StakingAmountUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWatchTower",type:"address"},{indexed:!0,internalType:"address",name:"newWatchTower",type:"address"}],name:"WatchTowerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"reason",type:"string"},{indexed:!1,internalType:"uint256",name:"cancelledAmount",type:"uint256"}],name:"WithdrawalCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"originalStaker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"WithdrawalCompleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldDelay",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newDelay",type:"uint256"}],name:"WithdrawalDelayUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"withdrawalTime",type:"uint256"}],name:"WithdrawalInitiated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"SLASHER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WATCHTOWER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"result",type:"bytes"},{internalType:"string[]",name:"",type:"string[]"},{internalType:"uint256",name:"wtExecutionId",type:"uint256"},{internalType:"uint8",name:"status",type:"uint8"},{internalType:"string",name:"",type:"string"}],name:"callbackTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"cancelWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"collectSlashedTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"completeWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"existsStake",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getEffectiveStakeForRegistration",outputs:[{internalType:"uint256",name:"stakeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSlashableAmountToCollect",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStake",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"timestamp",type:"uint256"},{internalType:"address",name:"staker",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStakeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStaker",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getStakingParameters",outputs:[{internalType:"uint256",name:"stakeAmount",type:"uint256"},{internalType:"uint256",name:"slashAmount",type:"uint256"},{internalType:"uint256",name:"withdrawalDelay",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getUnstakeWithdrawalTime",outputs:[{internalType:"uint64",name:"withdrawalTime",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantSlasherRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token",type:"address"},{internalType:"address",name:"_watchTower",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isMyWithdrawalReady",outputs:[{internalType:"bool",name:"ready",type:"bool"},{internalType:"uint256",name:"timeRemaining",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"isUnstakeWithdrawalReady",outputs:[{internalType:"bool",name:"ready",type:"bool"},{internalType:"uint256",name:"timeRemaining",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"isWithdrawalInProgress",outputs:[{internalType:"bool",name:"inProgress",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_nodeRegistry",type:"address"}],name:"setNodeRegistry",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"setSlashingAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"}],name:"setSlashingWallet",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"setStakingAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"setWatchTower",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_withdrawalDelay",type:"uint256"}],name:"setWithdrawalDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"string",name:"executionId",type:"string"}],name:"slash",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slashingWallet",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalStaked",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"unstakeByAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"unstakeFor",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"watchTower",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0xf6bb3f27d93db8c99bb82bdaaf1279aa8349fb9fd8aee7fbf03c760b314ac18a",receipt:{to:null,from:"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",contractAddress:"0x0165878A594ca255338adfa4d48449f69242Eb8F",transactionIndex:0,gasUsed:"976620",logsBloom:"0x00000004000000000000000000000000400000000000000000010000000000000000000000000008000400000000000040400000000000000000000000000000001000000000000000000000000002000000000000000000000000000000400000000000020000000000000100000800000000800000000000000000000000040000000000000000000800000000000000000000000080000000000000800000100001000000000000000000000000000000000000000000001000000000080000000024000000200000000000000000000000002404001100000000000020000002000000000000000000000000000000000000000000000000000000080000",blockHash:"0xe476616091e128e0ce7806f7a4037b468ed3880334754ed067b61c0c0c11c486",transactionHash:"0xf6bb3f27d93db8c99bb82bdaaf1279aa8349fb9fd8aee7fbf03c760b314ac18a",logs:[{transactionIndex:0,blockNumber:16,transactionHash:"0xf6bb3f27d93db8c99bb82bdaaf1279aa8349fb9fd8aee7fbf03c760b314ac18a",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707"],data:"0x",logIndex:0,blockHash:"0xe476616091e128e0ce7806f7a4037b468ed3880334754ed067b61c0c0c11c486"},{transactionIndex:0,blockNumber:16,transactionHash:"0xf6bb3f27d93db8c99bb82bdaaf1279aa8349fb9fd8aee7fbf03c760b314ac18a",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],data:"0x",logIndex:1,blockHash:"0xe476616091e128e0ce7806f7a4037b468ed3880334754ed067b61c0c0c11c486"},{transactionIndex:0,blockNumber:16,transactionHash:"0xf6bb3f27d93db8c99bb82bdaaf1279aa8349fb9fd8aee7fbf03c760b314ac18a",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x112b543827e39baa999aa686bf791fe2f6502a00cd4342e25f8c36b543f90f14","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],data:"0x",logIndex:2,blockHash:"0xe476616091e128e0ce7806f7a4037b468ed3880334754ed067b61c0c0c11c486"},{transactionIndex:0,blockNumber:16,transactionHash:"0xf6bb3f27d93db8c99bb82bdaaf1279aa8349fb9fd8aee7fbf03c760b314ac18a",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e39","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266"],data:"0x",logIndex:3,blockHash:"0xe476616091e128e0ce7806f7a4037b468ed3880334754ed067b61c0c0c11c486"},{transactionIndex:0,blockNumber:16,transactionHash:"0xf6bb3f27d93db8c99bb82bdaaf1279aa8349fb9fd8aee7fbf03c760b314ac18a",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:4,blockHash:"0xe476616091e128e0ce7806f7a4037b468ed3880334754ed067b61c0c0c11c486"},{transactionIndex:0,blockNumber:16,transactionHash:"0xf6bb3f27d93db8c99bb82bdaaf1279aa8349fb9fd8aee7fbf03c760b314ac18a",address:"0x0165878A594ca255338adfa4d48449f69242Eb8F",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3",logIndex:5,blockHash:"0xe476616091e128e0ce7806f7a4037b468ed3880334754ed067b61c0c0c11c486"}],blockNumber:16,cumulativeGasUsed:"976620",status:1,byzantium:!0},args:["0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","0x5FbDB2315678afecb367f032d93F642f64180aa3","0x485cc955000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c90000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:["0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9","0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0"]},implementation:"0x5FC8d32690cc91D4c39d9d3abcBD16989F875707",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var Zxe={address:"0xc84f349C46e046ca6dbd7e653700DF728FA496E4",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"}],name:"Deregistered",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"address",name:"grantee",type:"address"}],name:"Granted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"}],name:"Registered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"address",name:"grantee",type:"address"}],name:"Revoked",type:"event"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"deregister",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"apiKeyHash",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"deregisterWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"getPayer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"grant",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"grantWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_taskRegistry",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"register",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"apiKeyHash",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"revoke",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"revokeWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_taskRegistry",type:"address"}],name:"setTaskRegistry",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"taskRegistry",outputs:[{internalType:"contract ITaskRegistry",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0x54811167e70fbb49fa6b45a83af53e25a06ac8ef451bb65627563ad1f88350ed",receipt:{to:null,from:"0xE3AcBBB129F14681C315028dB0A156597fb5058B",contractAddress:"0xc84f349C46e046ca6dbd7e653700DF728FA496E4",transactionIndex:0,gasUsed:"842519",logsBloom:"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000100020000000000000000000800000000800000000000000000000000400000000000000000000800010000000000400000000080000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000484000000000000220020000000000000000000000000000800000004100000000000000000000000000000",blockHash:"0xa0214842812d005783cba0ba5f118bd3f1e9784137ed2db24f7d6dae47f06119",transactionHash:"0x54811167e70fbb49fa6b45a83af53e25a06ac8ef451bb65627563ad1f88350ed",logs:[{transactionIndex:0,blockNumber:36899443,transactionHash:"0x54811167e70fbb49fa6b45a83af53e25a06ac8ef451bb65627563ad1f88350ed",address:"0xc84f349C46e046ca6dbd7e653700DF728FA496E4",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000014fd5e9ea48fce13201e3307f49a055b3b724aad"],data:"0x",logIndex:0,blockHash:"0xa0214842812d005783cba0ba5f118bd3f1e9784137ed2db24f7d6dae47f06119"},{transactionIndex:0,blockNumber:36899443,transactionHash:"0x54811167e70fbb49fa6b45a83af53e25a06ac8ef451bb65627563ad1f88350ed",address:"0xc84f349C46e046ca6dbd7e653700DF728FA496E4",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b"],data:"0x",logIndex:1,blockHash:"0xa0214842812d005783cba0ba5f118bd3f1e9784137ed2db24f7d6dae47f06119"},{transactionIndex:0,blockNumber:36899443,transactionHash:"0x54811167e70fbb49fa6b45a83af53e25a06ac8ef451bb65627563ad1f88350ed",address:"0xc84f349C46e046ca6dbd7e653700DF728FA496E4",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:2,blockHash:"0xa0214842812d005783cba0ba5f118bd3f1e9784137ed2db24f7d6dae47f06119"},{transactionIndex:0,blockNumber:36899443,transactionHash:"0x54811167e70fbb49fa6b45a83af53e25a06ac8ef451bb65627563ad1f88350ed",address:"0xc84f349C46e046ca6dbd7e653700DF728FA496E4",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f9739ed4c06aad02f1e2b7632ba35d1760796382",logIndex:3,blockHash:"0xa0214842812d005783cba0ba5f118bd3f1e9784137ed2db24f7d6dae47f06119"}],blockNumber:36899443,cumulativeGasUsed:"842519",status:1,byzantium:!0},args:["0x14fD5e9eA48Fce13201E3307F49a055b3b724AAd","0xF9739Ed4c06aad02F1E2b7632Ba35D1760796382","0xc4d66de8000000000000000000000000712c0e7122cba5b0087ded2d7f1beae9d24e5f5a"],numDeployments:3,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",implementation:"0x74Bf3a2013dbc14151C06e86B7b26560B5e5Be04",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var Xxe={address:"0x712c0E7122CBa5b0087DED2D7F1beAE9d24e5f5A",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"grantee",type:"address"}],name:"AccessGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"grantee",type:"address"}],name:"AccessRevoked",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"}],name:"MetaNamespaceRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"}],name:"MetaTaskRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"oldOwner",type:"address"},{indexed:!1,internalType:"address",name:"newOwner",type:"address"}],name:"NamespaceOwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"owner",type:"address"}],name:"NamespaceRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskDisabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"cid",type:"string"},{indexed:!1,internalType:"address",name:"sender",type:"address"}],name:"TaskIdRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"},{indexed:!1,internalType:"string",name:"label",type:"string"}],name:"VersionLabelSet",type:"event"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"disableTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"string",name:"label",type:"string"}],name:"disableTaskByLabel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"enableTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getLatestActiveVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getLatestVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getTask",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"string",name:"label",type:"string"}],name:"getTaskByLabel",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"getTaskByVersion",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"grantNamespaceAccess",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"input",type:"string"}],name:"isAsciiString",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"string",name:"taskId",type:"string"}],name:"isTaskRevoked",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"str",type:"string"}],name:"isValidName",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"}],name:"labeledVersions",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"}],name:"latestVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"address",name:"",type:"address"}],name:"namespaceGrantees",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"namespaceOwners",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"task",type:"tuple"}],name:"registerTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"}],name:"registerTaskNamespace",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerTaskNamespaceWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"task",type:"tuple"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerTaskWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"revokeNamespaceAccess",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"taskId",type:"string"}],name:"revokeTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"revokedTaskId",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"},{internalType:"string",name:"label",type:"string"}],name:"setTaskLabel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"},{internalType:"uint256",name:"",type:"uint256"}],name:"tasks",outputs:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"newOwner",type:"address"}],name:"transferTaskNamespace",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0x6e9290641ded5974b540cb9c3c990968b1e56d5646abeb2dff22ac894009ad9a",receipt:{to:null,from:"0xE3AcBBB129F14681C315028dB0A156597fb5058B",contractAddress:"0x712c0E7122CBa5b0087DED2D7F1beAE9d24e5f5A",transactionIndex:0,gasUsed:"819988",logsBloom:"0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000200000000000000000020000000000200000000802000000800000000000000000000000400000000000000000000800000000000000400000000080000000000020800000000000000000100000000000000000000000000000000000000000000000000000000020000000001000000000000000000000000484000000000000200020000000000000000000000000000000000000000000000000000000000000000000",blockHash:"0x3864944fb190208ce6312af69e1a9876f6800e2c0430e213855e1a37284ec406",transactionHash:"0x6e9290641ded5974b540cb9c3c990968b1e56d5646abeb2dff22ac894009ad9a",logs:[{transactionIndex:0,blockNumber:36899440,transactionHash:"0x6e9290641ded5974b540cb9c3c990968b1e56d5646abeb2dff22ac894009ad9a",address:"0x712c0E7122CBa5b0087DED2D7F1beAE9d24e5f5A",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000171ee701e8689f7176b72af54c0e9ad65133d798"],data:"0x",logIndex:0,blockHash:"0x3864944fb190208ce6312af69e1a9876f6800e2c0430e213855e1a37284ec406"},{transactionIndex:0,blockNumber:36899440,transactionHash:"0x6e9290641ded5974b540cb9c3c990968b1e56d5646abeb2dff22ac894009ad9a",address:"0x712c0E7122CBa5b0087DED2D7F1beAE9d24e5f5A",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b"],data:"0x",logIndex:1,blockHash:"0x3864944fb190208ce6312af69e1a9876f6800e2c0430e213855e1a37284ec406"},{transactionIndex:0,blockNumber:36899440,transactionHash:"0x6e9290641ded5974b540cb9c3c990968b1e56d5646abeb2dff22ac894009ad9a",address:"0x712c0E7122CBa5b0087DED2D7F1beAE9d24e5f5A",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:2,blockHash:"0x3864944fb190208ce6312af69e1a9876f6800e2c0430e213855e1a37284ec406"},{transactionIndex:0,blockNumber:36899440,transactionHash:"0x6e9290641ded5974b540cb9c3c990968b1e56d5646abeb2dff22ac894009ad9a",address:"0x712c0E7122CBa5b0087DED2D7F1beAE9d24e5f5A",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f9739ed4c06aad02f1e2b7632ba35d1760796382",logIndex:3,blockHash:"0x3864944fb190208ce6312af69e1a9876f6800e2c0430e213855e1a37284ec406"}],blockNumber:36899440,cumulativeGasUsed:"819988",status:1,byzantium:!0},args:["0x171eE701e8689F7176b72aF54C0E9ad65133D798","0xF9739Ed4c06aad02F1E2b7632Ba35D1760796382","0x8129fc1c"],numDeployments:3,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",implementation:"0x0A5c83437795eCe589CF4ca4900d02A849442f4f",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var Qxe={address:"0xADF4996653Ae47303c158bb4bfEd290B31F36bD0",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[],name:"CallerNotAuthorizedToDeregister",type:"error"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"length",type:"uint256"}],name:"InvalidArrayIndex",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidStakingContractAddress",type:"error"},{inputs:[],name:"InvalidWatchTowerAddress",type:"error"},{inputs:[],name:"NoRegistrationsAvailable",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NodeAlreadyRegistered",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NodeNotRegistered",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"OnlyWatchTowerCanCallback",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"executionId",type:"string"}],name:"NodeDeregistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"index",type:"uint256"}],name:"NodeRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"nodeId",type:"uint256"},{indexed:!1,internalType:"bool",name:"hasStake",type:"bool"}],name:"NodeRegistrationCompleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"},{indexed:!1,internalType:"bool",name:"hasStake",type:"bool"},{indexed:!1,internalType:"string[]",name:"transcripts",type:"string[]"},{indexed:!1,internalType:"string",name:"callbackMessageDetails",type:"string"}],name:"NodeRegistrationRejected",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"oldWTExecutionId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newWTExecutionId",type:"uint256"}],name:"NodeRegistrationReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"}],name:"NodeRegistrationRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"},{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"callbackMessageDetails",type:"string"}],name:"NodeRegistrationStaled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"StakingContractChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"ThresholdModified",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"WatchTowerAddressChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWatchTower",type:"address"},{indexed:!0,internalType:"address",name:"newWatchTower",type:"address"}],name:"WatchTowerUpdated",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WATCHTOWER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"result",type:"bytes"},{internalType:"string[]",name:"transcripts",type:"string[]"},{internalType:"uint256",name:"wtExecutionId",type:"uint256"},{internalType:"uint8",name:"status",type:"uint8"},{internalType:"string",name:"_callbackMessageDetails",type:"string"}],name:"callbackTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"executionId",type:"string"}],name:"deRegister",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"id",type:"address"},{internalType:"string",name:"executionId",type:"string"}],name:"deRegisterAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"deRegisterAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getNodeAtIndex",outputs:[{components:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"uint256",name:"blockRegistered",type:"uint256"},{internalType:"uint256",name:"timestampRegistered",type:"uint256"}],internalType:"struct INodeRegistry.Registration",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNodeCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"getNodeIndexByAddress",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"wtExecutionId",type:"uint256"}],name:"getNodeRegistrationStatus",outputs:[{internalType:"bool",name:"isCallbackComplete",type:"bool"},{internalType:"bool",name:"isRegistered",type:"bool"},{internalType:"string",name:"message",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"getNodeToWTExecutionId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNodes",outputs:[{components:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"uint256",name:"blockRegistered",type:"uint256"},{internalType:"uint256",name:"timestampRegistered",type:"uint256"}],internalType:"struct INodeRegistry.Registration[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWatchTowerAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"isNodeRegistered",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"registerNode",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stakingContract",type:"address"}],name:"setStakingContract",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"setWatchTower",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0xebb619d3e0e8a66109d4832dd4272bd0e403d5a4f98e26488c4cbe377a2822ef",receipt:{to:null,from:"0xE3AcBBB129F14681C315028dB0A156597fb5058B",contractAddress:"0xADF4996653Ae47303c158bb4bfEd290B31F36bD0",transactionIndex:0,gasUsed:"864731",logsBloom:"0x00000006000000000000000000000000400000000000000000800000000000000000000000000100000000020000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000000000800004000800000000000000000000000400000000000000000000808000000000000400000000080000000000000800000000001000000000000000000000000000000000000000000011000000000000000000020000000000000000000000000000000080484000902000000200020000002000000000000000000000000000000000000000000000000000000080000",blockHash:"0xd4457ba417ab8f20cb6883bb81a89c9f9cf8e1ddb5447454e1f31f164cd488b1",transactionHash:"0xebb619d3e0e8a66109d4832dd4272bd0e403d5a4f98e26488c4cbe377a2822ef",logs:[{transactionIndex:0,blockNumber:47640269,transactionHash:"0xebb619d3e0e8a66109d4832dd4272bd0e403d5a4f98e26488c4cbe377a2822ef",address:"0xADF4996653Ae47303c158bb4bfEd290B31F36bD0",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000001e006e62fbf0b8adad2ab94dd8ec4cb3f6f1b1da"],data:"0x",logIndex:0,blockHash:"0xd4457ba417ab8f20cb6883bb81a89c9f9cf8e1ddb5447454e1f31f164cd488b1"},{transactionIndex:0,blockNumber:47640269,transactionHash:"0xebb619d3e0e8a66109d4832dd4272bd0e403d5a4f98e26488c4cbe377a2822ef",address:"0xADF4996653Ae47303c158bb4bfEd290B31F36bD0",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b"],data:"0x",logIndex:1,blockHash:"0xd4457ba417ab8f20cb6883bb81a89c9f9cf8e1ddb5447454e1f31f164cd488b1"},{transactionIndex:0,blockNumber:47640269,transactionHash:"0xebb619d3e0e8a66109d4832dd4272bd0e403d5a4f98e26488c4cbe377a2822ef",address:"0xADF4996653Ae47303c158bb4bfEd290B31F36bD0",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b"],data:"0x",logIndex:2,blockHash:"0xd4457ba417ab8f20cb6883bb81a89c9f9cf8e1ddb5447454e1f31f164cd488b1"},{transactionIndex:0,blockNumber:47640269,transactionHash:"0xebb619d3e0e8a66109d4832dd4272bd0e403d5a4f98e26488c4cbe377a2822ef",address:"0xADF4996653Ae47303c158bb4bfEd290B31F36bD0",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x112b543827e39baa999aa686bf791fe2f6502a00cd4342e25f8c36b543f90f14","0x0000000000000000000000006aa21ac81de8ca555fbfb082d7a3edfd6c4b55cb","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b"],data:"0x",logIndex:3,blockHash:"0xd4457ba417ab8f20cb6883bb81a89c9f9cf8e1ddb5447454e1f31f164cd488b1"},{transactionIndex:0,blockNumber:47640269,transactionHash:"0xebb619d3e0e8a66109d4832dd4272bd0e403d5a4f98e26488c4cbe377a2822ef",address:"0xADF4996653Ae47303c158bb4bfEd290B31F36bD0",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:4,blockHash:"0xd4457ba417ab8f20cb6883bb81a89c9f9cf8e1ddb5447454e1f31f164cd488b1"},{transactionIndex:0,blockNumber:47640269,transactionHash:"0xebb619d3e0e8a66109d4832dd4272bd0e403d5a4f98e26488c4cbe377a2822ef",address:"0xADF4996653Ae47303c158bb4bfEd290B31F36bD0",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f9739ed4c06aad02f1e2b7632ba35d1760796382",logIndex:5,blockHash:"0xd4457ba417ab8f20cb6883bb81a89c9f9cf8e1ddb5447454e1f31f164cd488b1"}],blockNumber:47640269,cumulativeGasUsed:"864731",status:1,byzantium:!0},args:["0x1e006e62fbf0B8ADaD2aB94DD8ec4CB3f6f1b1da","0xF9739Ed4c06aad02F1E2b7632Ba35D1760796382","0xc4d66de80000000000000000000000006aa21ac81de8ca555fbfb082d7a3edfd6c4b55cb"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:["0x6aa21Ac81dE8Ca555FbFB082D7A3eDFD6C4b55cb"]},implementation:"0x1e006e62fbf0B8ADaD2aB94DD8ec4CB3f6f1b1da",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var eTe={address:"0x468A0EA8BBd2d3eDfC4f86bD0c059b8341122A8e",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"uint256",name:"required",type:"uint256"},{internalType:"uint256",name:"available",type:"uint256"}],name:"InsufficientContractBalance",type:"error"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAmount",type:"error"},{inputs:[{internalType:"uint256",name:"executionId",type:"uint256"}],name:"InvalidExecutionId",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidNodeAddress",type:"error"},{inputs:[],name:"InvalidNodeRegistryAddress",type:"error"},{inputs:[],name:"InvalidSlashingWallet",type:"error"},{inputs:[],name:"InvalidStakerAddress",type:"error"},{inputs:[],name:"InvalidTokenAddress",type:"error"},{inputs:[],name:"InvalidWatchTowerAddress",type:"error"},{inputs:[],name:"InvalidWithdrawalDelay",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoActiveUnstakeRequest",type:"error"},{inputs:[],name:"NoSlashedTokensAvailable",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoStakeExists",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoStakeToSlash",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoTokensToUnstake",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoWithdrawalInProgress",type:"error"},{inputs:[{internalType:"address",name:"currentRegistry",type:"address"}],name:"NodeRegistryAlreadySet",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"staker",type:"address"},{internalType:"address",name:"caller",type:"address"}],name:"OnlyStakerCanCancel",type:"error"},{inputs:[{internalType:"address",name:"staker",type:"address"},{internalType:"address",name:"caller",type:"address"}],name:"OnlyStakerCanUnstake",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{inputs:[],name:"SlashingWalletNotSet",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"StakeAlreadyExists",type:"error"},{inputs:[],name:"TokenTransferFailed",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"UnstakeAlreadyInProgress",type:"error"},{inputs:[],name:"WatchTowerNotSet",type:"error"},{inputs:[{internalType:"uint64",name:"withdrawalTime",type:"uint64"},{internalType:"uint256",name:"currentTime",type:"uint256"}],name:"WithdrawalPeriodNotElapsed",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldNodeRegistry",type:"address"},{indexed:!0,internalType:"address",name:"newNodeRegistry",type:"address"}],name:"NodeRegistryUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Slashed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"string",name:"executionId",type:"string"}],name:"Slashed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlashedCollected",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newAmount",type:"uint256"}],name:"SlashingAmountUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWallet",type:"address"},{indexed:!0,internalType:"address",name:"newWallet",type:"address"}],name:"SlashingWalletUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"timestamp",type:"uint256"}],name:"Staked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newAmount",type:"uint256"}],name:"StakingAmountUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWatchTower",type:"address"},{indexed:!0,internalType:"address",name:"newWatchTower",type:"address"}],name:"WatchTowerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"reason",type:"string"},{indexed:!1,internalType:"uint256",name:"cancelledAmount",type:"uint256"}],name:"WithdrawalCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"originalStaker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"WithdrawalCompleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldDelay",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newDelay",type:"uint256"}],name:"WithdrawalDelayUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"withdrawalTime",type:"uint256"}],name:"WithdrawalInitiated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"SLASHER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WATCHTOWER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"result",type:"bytes"},{internalType:"string[]",name:"",type:"string[]"},{internalType:"uint256",name:"wtExecutionId",type:"uint256"},{internalType:"uint8",name:"status",type:"uint8"},{internalType:"string",name:"",type:"string"}],name:"callbackTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"cancelWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"collectSlashedTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"completeWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"existsStake",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getEffectiveStakeForRegistration",outputs:[{internalType:"uint256",name:"stakeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSlashableAmountToCollect",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStake",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"timestamp",type:"uint256"},{internalType:"address",name:"staker",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStakeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStaker",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getStakingParameters",outputs:[{internalType:"uint256",name:"stakeAmount",type:"uint256"},{internalType:"uint256",name:"slashAmount",type:"uint256"},{internalType:"uint256",name:"withdrawalDelay",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getUnstakeWithdrawalTime",outputs:[{internalType:"uint64",name:"withdrawalTime",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantSlasherRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token",type:"address"},{internalType:"address",name:"_watchTower",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isMyWithdrawalReady",outputs:[{internalType:"bool",name:"ready",type:"bool"},{internalType:"uint256",name:"timeRemaining",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"isUnstakeWithdrawalReady",outputs:[{internalType:"bool",name:"ready",type:"bool"},{internalType:"uint256",name:"timeRemaining",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"isWithdrawalInProgress",outputs:[{internalType:"bool",name:"inProgress",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_nodeRegistry",type:"address"}],name:"setNodeRegistry",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"setSlashingAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"}],name:"setSlashingWallet",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"setStakingAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"setWatchTower",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_withdrawalDelay",type:"uint256"}],name:"setWithdrawalDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"string",name:"executionId",type:"string"}],name:"slash",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slashingWallet",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalStaked",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"unstakeByAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"unstakeFor",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"watchTower",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0x1624e4fbad6e84cfae5992a7dd2e4743b612341b6bc8eadfcb43c94f4fc31a63",receipt:{to:null,from:"0xE3AcBBB129F14681C315028dB0A156597fb5058B",contractAddress:"0x468A0EA8BBd2d3eDfC4f86bD0c059b8341122A8e",transactionIndex:49,gasUsed:"976644",logsBloom:"0x00000004000000000000000000000000440000000000000000010000000000000000000000000008000000000000000000000000000000080000000000000000000000000000000000000200000002000000000000000000000000000000000000080000020000080000000000000800000000800000000000000000000000000000000000000000000800000000000000400000000080000000000000800010000001000000001000000000200000000000000000000000001000000000080000000020000000000000000000000000000000000484010100000000200020000002000000000000000000000000000000000000000000000000000000080000",blockHash:"0xa5cb97fb73c1c394c960d3876e892e9fb65afe640182d815ea181104bbb6e420",transactionHash:"0x1624e4fbad6e84cfae5992a7dd2e4743b612341b6bc8eadfcb43c94f4fc31a63",logs:[{transactionIndex:49,blockNumber:9614270,transactionHash:"0x1624e4fbad6e84cfae5992a7dd2e4743b612341b6bc8eadfcb43c94f4fc31a63",address:"0x468A0EA8BBd2d3eDfC4f86bD0c059b8341122A8e",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000080fe6bad8d84ee9838bcef026d8acea2e7472a82"],data:"0x",logIndex:95,blockHash:"0xa5cb97fb73c1c394c960d3876e892e9fb65afe640182d815ea181104bbb6e420"},{transactionIndex:49,blockNumber:9614270,transactionHash:"0x1624e4fbad6e84cfae5992a7dd2e4743b612341b6bc8eadfcb43c94f4fc31a63",address:"0x468A0EA8BBd2d3eDfC4f86bD0c059b8341122A8e",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b"],data:"0x",logIndex:96,blockHash:"0xa5cb97fb73c1c394c960d3876e892e9fb65afe640182d815ea181104bbb6e420"},{transactionIndex:49,blockNumber:9614270,transactionHash:"0x1624e4fbad6e84cfae5992a7dd2e4743b612341b6bc8eadfcb43c94f4fc31a63",address:"0x468A0EA8BBd2d3eDfC4f86bD0c059b8341122A8e",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x112b543827e39baa999aa686bf791fe2f6502a00cd4342e25f8c36b543f90f14","0x00000000000000000000000007bc99accde2e07b7e7353f30f9c90eb80e4473d","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b"],data:"0x",logIndex:97,blockHash:"0xa5cb97fb73c1c394c960d3876e892e9fb65afe640182d815ea181104bbb6e420"},{transactionIndex:49,blockNumber:9614270,transactionHash:"0x1624e4fbad6e84cfae5992a7dd2e4743b612341b6bc8eadfcb43c94f4fc31a63",address:"0x468A0EA8BBd2d3eDfC4f86bD0c059b8341122A8e",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e39","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b","0x000000000000000000000000e3acbbb129f14681c315028db0a156597fb5058b"],data:"0x",logIndex:98,blockHash:"0xa5cb97fb73c1c394c960d3876e892e9fb65afe640182d815ea181104bbb6e420"},{transactionIndex:49,blockNumber:9614270,transactionHash:"0x1624e4fbad6e84cfae5992a7dd2e4743b612341b6bc8eadfcb43c94f4fc31a63",address:"0x468A0EA8BBd2d3eDfC4f86bD0c059b8341122A8e",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:99,blockHash:"0xa5cb97fb73c1c394c960d3876e892e9fb65afe640182d815ea181104bbb6e420"},{transactionIndex:49,blockNumber:9614270,transactionHash:"0x1624e4fbad6e84cfae5992a7dd2e4743b612341b6bc8eadfcb43c94f4fc31a63",address:"0x468A0EA8BBd2d3eDfC4f86bD0c059b8341122A8e",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000006fb42a4d2b5dc5255fb36381215533ce7d18d341",logIndex:100,blockHash:"0xa5cb97fb73c1c394c960d3876e892e9fb65afe640182d815ea181104bbb6e420"}],blockNumber:9614270,cumulativeGasUsed:"8191516",status:1,byzantium:!0},args:["0x80fE6baD8d84Ee9838bCeF026D8Acea2E7472a82","0x6fb42a4d2B5DC5255fb36381215533cE7D18d341","0x485cc9550000000000000000000000004cb9d9d331da8655bd2455695bd0d334569716b700000000000000000000000007bc99accde2e07b7e7353f30f9c90eb80e4473d"],numDeployments:2,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",implementation:"0x2242b7Cc46cBA57747469aeAD15e0f148572F7F2",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var tTe={address:"0x15dC697f596dF3693b13bf9Ac4088b93aB18c6e0",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"}],name:"Deregistered",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"address",name:"grantee",type:"address"}],name:"Granted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"}],name:"Registered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"address",name:"grantee",type:"address"}],name:"Revoked",type:"event"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"deregister",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"apiKeyHash",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"deregisterWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"getPayer",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"grant",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"grantWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_taskRegistry",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"apiKeyHash",type:"string"}],name:"register",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"apiKeyHash",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"revoke",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"revokeWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_taskRegistry",type:"address"}],name:"setTaskRegistry",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"taskRegistry",outputs:[{internalType:"contract ITaskRegistry",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0x343f633432079d0ed7b878b709a1db07dfd4cb94340d5c605e3486d636effac8",receipt:{to:null,from:"0x33c36D19Ba06842890cB6b5737Ff85A227D4eA26",contractAddress:"0x15dC697f596dF3693b13bf9Ac4088b93aB18c6e0",transactionIndex:0,gasUsed:"842873",logsBloom:"0x80000000000000000400000048000000400000000000000000800000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000000000800000000800000000000000000000000400000000000000000000800000000000000020000000080000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000001000080000000000000000000404000000000000040020000000000000000000000000000000000000000000000000000000000000000000",blockHash:"0x74125a872dfa8d3e029212df3f55b1fa39b76f849a464a30dece4c9777ef494c",transactionHash:"0x343f633432079d0ed7b878b709a1db07dfd4cb94340d5c605e3486d636effac8",logs:[{transactionIndex:0,blockNumber:49427771,transactionHash:"0x343f633432079d0ed7b878b709a1db07dfd4cb94340d5c605e3486d636effac8",address:"0x15dC697f596dF3693b13bf9Ac4088b93aB18c6e0",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000674298a7d69acc154124a86dd19bb6bbc2ded408"],data:"0x",logIndex:0,blockHash:"0x74125a872dfa8d3e029212df3f55b1fa39b76f849a464a30dece4c9777ef494c"},{transactionIndex:0,blockNumber:49427771,transactionHash:"0x343f633432079d0ed7b878b709a1db07dfd4cb94340d5c605e3486d636effac8",address:"0x15dC697f596dF3693b13bf9Ac4088b93aB18c6e0",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26"],data:"0x",logIndex:1,blockHash:"0x74125a872dfa8d3e029212df3f55b1fa39b76f849a464a30dece4c9777ef494c"},{transactionIndex:0,blockNumber:49427771,transactionHash:"0x343f633432079d0ed7b878b709a1db07dfd4cb94340d5c605e3486d636effac8",address:"0x15dC697f596dF3693b13bf9Ac4088b93aB18c6e0",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:2,blockHash:"0x74125a872dfa8d3e029212df3f55b1fa39b76f849a464a30dece4c9777ef494c"},{transactionIndex:0,blockNumber:49427771,transactionHash:"0x343f633432079d0ed7b878b709a1db07dfd4cb94340d5c605e3486d636effac8",address:"0x15dC697f596dF3693b13bf9Ac4088b93aB18c6e0",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096d62705509059d981870abe4d347def34c4dc88",logIndex:3,blockHash:"0x74125a872dfa8d3e029212df3f55b1fa39b76f849a464a30dece4c9777ef494c"}],blockNumber:49427771,cumulativeGasUsed:"842873",status:1,byzantium:!0},args:["0x674298A7d69ACC154124A86Dd19Bb6bBc2deD408","0x96D62705509059d981870aBe4D347deF34c4dC88","0xc4d66de80000000000000000000000008b938a936dd83e33f97f2061852d272a1a1ba461"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:["0x8B938a936dD83e33f97F2061852d272A1a1BA461"]},implementation:"0x674298A7d69ACC154124A86Dd19Bb6bBc2deD408",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var rTe={address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"ECDSAInvalidSignature",type:"error"},{inputs:[{internalType:"uint256",name:"length",type:"uint256"}],name:"ECDSAInvalidSignatureLength",type:"error"},{inputs:[{internalType:"bytes32",name:"s",type:"bytes32"}],name:"ECDSAInvalidSignatureS",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"grantee",type:"address"}],name:"AccessGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"grantee",type:"address"}],name:"AccessRevoked",type:"event"},{anonymous:!1,inputs:[],name:"EIP712DomainChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"}],name:"MetaNamespaceRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"}],name:"MetaTaskRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"oldOwner",type:"address"},{indexed:!1,internalType:"address",name:"newOwner",type:"address"}],name:"NamespaceOwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!1,internalType:"address",name:"owner",type:"address"}],name:"NamespaceRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskDisabled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskEnabled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"string",name:"cid",type:"string"},{indexed:!1,internalType:"address",name:"sender",type:"address"}],name:"TaskIdRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"}],name:"TaskRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"string",name:"namespace",type:"string"},{indexed:!0,internalType:"string",name:"taskName",type:"string"},{indexed:!1,internalType:"uint256",name:"version",type:"uint256"},{indexed:!1,internalType:"string",name:"label",type:"string"}],name:"VersionLabelSet",type:"event"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"disableTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"string",name:"label",type:"string"}],name:"disableTaskByLabel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"enableTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getLatestActiveVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getLatestVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"}],name:"getTask",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"string",name:"label",type:"string"}],name:"getTaskByLabel",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"}],name:"getTaskByVersion",outputs:[{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"",type:"tuple"},{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"grantNamespaceAccess",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"input",type:"string"}],name:"isAsciiString",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"string",name:"taskId",type:"string"}],name:"isTaskRevoked",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"str",type:"string"}],name:"isValidName",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"}],name:"labeledVersions",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"}],name:"latestVersion",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"address",name:"",type:"address"}],name:"namespaceGrantees",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"namespaceOwners",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"task",type:"tuple"}],name:"registerTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"}],name:"registerTaskNamespace",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerTaskNamespaceWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{components:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],internalType:"struct TaskRegistry.Task",name:"task",type:"tuple"},{internalType:"uint256",name:"deadline",type:"uint256"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"registerTaskWithSignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"grantee",type:"address"}],name:"revokeNamespaceAccess",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"taskId",type:"string"}],name:"revokeTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"}],name:"revokedTaskId",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"string",name:"taskName",type:"string"},{internalType:"uint256",name:"version",type:"uint256"},{internalType:"string",name:"label",type:"string"}],name:"setTaskLabel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"",type:"string"},{internalType:"string",name:"",type:"string"},{internalType:"uint256",name:"",type:"uint256"}],name:"tasks",outputs:[{internalType:"string",name:"taskId",type:"string"},{internalType:"string",name:"meta",type:"string"},{internalType:"bool",name:"active",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"namespace",type:"string"},{internalType:"address",name:"newOwner",type:"address"}],name:"transferTaskNamespace",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0xe21991d0b82f331731919a5cb6eeb947c93d22d67645917ee7d2f90ca86ed595",receipt:{to:null,from:"0x33c36D19Ba06842890cB6b5737Ff85A227D4eA26",contractAddress:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",transactionIndex:0,gasUsed:"820391",logsBloom:"0x00000000000000000000000008000000400000000000000000800000000000000000000000000000000000000000000000000200000000000000000000000000000000000001000000000080000002000003000000000000000000000000000000000000020000000000800000000800000000800000000000000000000000400000000000000000000800000000000000020000000080000000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000001000404000000002000000020000000000000000000000000000000000000000000000000000000000000000000",blockHash:"0xf0c7ed8ff47c6864301487c9937839a6df0bab4a63c3807011a0009d71fdc1ff",transactionHash:"0xe21991d0b82f331731919a5cb6eeb947c93d22d67645917ee7d2f90ca86ed595",logs:[{transactionIndex:0,blockNumber:49427763,transactionHash:"0xe21991d0b82f331731919a5cb6eeb947c93d22d67645917ee7d2f90ca86ed595",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000007c01b80f227f81604cfa18f73604575129c5096"],data:"0x",logIndex:0,blockHash:"0xf0c7ed8ff47c6864301487c9937839a6df0bab4a63c3807011a0009d71fdc1ff"},{transactionIndex:0,blockNumber:49427763,transactionHash:"0xe21991d0b82f331731919a5cb6eeb947c93d22d67645917ee7d2f90ca86ed595",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26"],data:"0x",logIndex:1,blockHash:"0xf0c7ed8ff47c6864301487c9937839a6df0bab4a63c3807011a0009d71fdc1ff"},{transactionIndex:0,blockNumber:49427763,transactionHash:"0xe21991d0b82f331731919a5cb6eeb947c93d22d67645917ee7d2f90ca86ed595",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:2,blockHash:"0xf0c7ed8ff47c6864301487c9937839a6df0bab4a63c3807011a0009d71fdc1ff"},{transactionIndex:0,blockNumber:49427763,transactionHash:"0xe21991d0b82f331731919a5cb6eeb947c93d22d67645917ee7d2f90ca86ed595",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096d62705509059d981870abe4d347def34c4dc88",logIndex:3,blockHash:"0xf0c7ed8ff47c6864301487c9937839a6df0bab4a63c3807011a0009d71fdc1ff"}],blockNumber:49427763,cumulativeGasUsed:"820391",status:1,byzantium:!0},args:["0x07c01B80f227F81604CFa18f73604575129C5096","0x96D62705509059d981870aBe4D347deF34c4dC88","0x8129fc1c"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:[]},implementation:"0x07c01B80f227F81604CFa18f73604575129C5096",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var nTe={address:"0x3293cB1761B6151a918418cC8eF886e2a7cdc62d",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[],name:"CallerNotAuthorizedToDeregister",type:"error"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"length",type:"uint256"}],name:"InvalidArrayIndex",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidStakingContractAddress",type:"error"},{inputs:[],name:"InvalidWatchTowerAddress",type:"error"},{inputs:[],name:"NoRegistrationsAvailable",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NodeAlreadyRegistered",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NodeNotRegistered",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"OnlyWatchTowerCanCallback",type:"error"},{inputs:[{internalType:"address",name:"owner",type:"address"}],name:"OwnableInvalidOwner",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"OwnableUnauthorizedAccount",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"executionId",type:"string"}],name:"NodeDeregistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"index",type:"uint256"}],name:"NodeRegistered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"nodeId",type:"uint256"},{indexed:!1,internalType:"bool",name:"hasStake",type:"bool"}],name:"NodeRegistrationCompleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"},{indexed:!1,internalType:"bool",name:"hasStake",type:"bool"},{indexed:!1,internalType:"string[]",name:"transcripts",type:"string[]"},{indexed:!1,internalType:"string",name:"callbackMessageDetails",type:"string"}],name:"NodeRegistrationRejected",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"oldWTExecutionId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"newWTExecutionId",type:"uint256"}],name:"NodeRegistrationReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"}],name:"NodeRegistrationRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"wtExecutionId",type:"uint256"},{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"callbackMessageDetails",type:"string"}],name:"NodeRegistrationStaled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"StakingContractChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newThreshold",type:"uint256"}],name:"ThresholdModified",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldAddress",type:"address"},{indexed:!0,internalType:"address",name:"newAddress",type:"address"}],name:"WatchTowerAddressChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWatchTower",type:"address"},{indexed:!0,internalType:"address",name:"newWatchTower",type:"address"}],name:"WatchTowerUpdated",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WATCHTOWER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"result",type:"bytes"},{internalType:"string[]",name:"transcripts",type:"string[]"},{internalType:"uint256",name:"wtExecutionId",type:"uint256"},{internalType:"uint8",name:"status",type:"uint8"},{internalType:"string",name:"_callbackMessageDetails",type:"string"}],name:"callbackTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"string",name:"executionId",type:"string"}],name:"deRegister",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"id",type:"address"},{internalType:"string",name:"executionId",type:"string"}],name:"deRegisterAddress",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"deRegisterAll",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getNodeAtIndex",outputs:[{components:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"uint256",name:"blockRegistered",type:"uint256"},{internalType:"uint256",name:"timestampRegistered",type:"uint256"}],internalType:"struct INodeRegistry.Registration",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNodeCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"getNodeIndexByAddress",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"wtExecutionId",type:"uint256"}],name:"getNodeRegistrationStatus",outputs:[{internalType:"bool",name:"isCallbackComplete",type:"bool"},{internalType:"bool",name:"isRegistered",type:"bool"},{internalType:"string",name:"message",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"getNodeToWTExecutionId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getNodes",outputs:[{components:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"uint256",name:"blockRegistered",type:"uint256"},{internalType:"uint256",name:"timestampRegistered",type:"uint256"}],internalType:"struct INodeRegistry.Registration[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getWatchTowerAddress",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"isNodeRegistered",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"registerNode",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stakingContract",type:"address"}],name:"setStakingContract",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"setWatchTower",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0xce9ddc029070c0074018022978ef6aa08bff3b18119702b7511906bdeaa4479f",receipt:{to:null,from:"0x33c36D19Ba06842890cB6b5737Ff85A227D4eA26",contractAddress:"0x3293cB1761B6151a918418cC8eF886e2a7cdc62d",transactionIndex:1,gasUsed:"864657",logsBloom:"0x00000004000000100000008008000004400000000000000000800000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000000000800000000800000000000000000000000480000000000000000000800000000000000020000000080000000000000800000000001000000000000000000000000000000000000000000001000000000000000000020000400000000400000000000000000400404000100000000000020000002000000000800000000000000000000000000000000000000000000080000",blockHash:"0xde80f37ea9d7a8921a03aaa7dd54e00f141fa27a05e0f62e0e36c6a2a52600e9",transactionHash:"0xce9ddc029070c0074018022978ef6aa08bff3b18119702b7511906bdeaa4479f",logs:[{transactionIndex:1,blockNumber:49427753,transactionHash:"0xce9ddc029070c0074018022978ef6aa08bff3b18119702b7511906bdeaa4479f",address:"0x3293cB1761B6151a918418cC8eF886e2a7cdc62d",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000cf1c9cc2fe4fd8fc60e3963211e817a114b1f40b"],data:"0x",logIndex:3,blockHash:"0xde80f37ea9d7a8921a03aaa7dd54e00f141fa27a05e0f62e0e36c6a2a52600e9"},{transactionIndex:1,blockNumber:49427753,transactionHash:"0xce9ddc029070c0074018022978ef6aa08bff3b18119702b7511906bdeaa4479f",address:"0x3293cB1761B6151a918418cC8eF886e2a7cdc62d",topics:["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26"],data:"0x",logIndex:4,blockHash:"0xde80f37ea9d7a8921a03aaa7dd54e00f141fa27a05e0f62e0e36c6a2a52600e9"},{transactionIndex:1,blockNumber:49427753,transactionHash:"0xce9ddc029070c0074018022978ef6aa08bff3b18119702b7511906bdeaa4479f",address:"0x3293cB1761B6151a918418cC8eF886e2a7cdc62d",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26"],data:"0x",logIndex:5,blockHash:"0xde80f37ea9d7a8921a03aaa7dd54e00f141fa27a05e0f62e0e36c6a2a52600e9"},{transactionIndex:1,blockNumber:49427753,transactionHash:"0xce9ddc029070c0074018022978ef6aa08bff3b18119702b7511906bdeaa4479f",address:"0x3293cB1761B6151a918418cC8eF886e2a7cdc62d",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x112b543827e39baa999aa686bf791fe2f6502a00cd4342e25f8c36b543f90f14","0x0000000000000000000000007ef63e2e0ba16ab7e57db8add3cc73c2abe55e34","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26"],data:"0x",logIndex:6,blockHash:"0xde80f37ea9d7a8921a03aaa7dd54e00f141fa27a05e0f62e0e36c6a2a52600e9"},{transactionIndex:1,blockNumber:49427753,transactionHash:"0xce9ddc029070c0074018022978ef6aa08bff3b18119702b7511906bdeaa4479f",address:"0x3293cB1761B6151a918418cC8eF886e2a7cdc62d",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:7,blockHash:"0xde80f37ea9d7a8921a03aaa7dd54e00f141fa27a05e0f62e0e36c6a2a52600e9"},{transactionIndex:1,blockNumber:49427753,transactionHash:"0xce9ddc029070c0074018022978ef6aa08bff3b18119702b7511906bdeaa4479f",address:"0x3293cB1761B6151a918418cC8eF886e2a7cdc62d",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096d62705509059d981870abe4d347def34c4dc88",logIndex:8,blockHash:"0xde80f37ea9d7a8921a03aaa7dd54e00f141fa27a05e0f62e0e36c6a2a52600e9"}],blockNumber:49427753,cumulativeGasUsed:"950942",status:1,byzantium:!0},args:["0xcF1c9cc2Fe4fd8fc60e3963211e817a114B1f40b","0x96D62705509059d981870aBe4D347deF34c4dC88","0xc4d66de80000000000000000000000007ef63e2e0ba16ab7e57db8add3cc73c2abe55e34"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:["0x7eF63E2E0bA16AB7e57DB8Add3cc73c2ABe55e34"]},implementation:"0xcF1c9cc2Fe4fd8fc60e3963211e817a114B1f40b",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};var iTe={address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",abi:[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"admin",outputs:[{internalType:"address",name:"admin_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"implementation",outputs:[{internalType:"address",name:"implementation_",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"},{inputs:[],name:"AccessControlBadConfirmation",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"bytes32",name:"neededRole",type:"bytes32"}],name:"AccessControlUnauthorizedAccount",type:"error"},{inputs:[{internalType:"uint256",name:"required",type:"uint256"},{internalType:"uint256",name:"available",type:"uint256"}],name:"InsufficientContractBalance",type:"error"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAmount",type:"error"},{inputs:[{internalType:"uint256",name:"executionId",type:"uint256"}],name:"InvalidExecutionId",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidNodeAddress",type:"error"},{inputs:[],name:"InvalidNodeRegistryAddress",type:"error"},{inputs:[],name:"InvalidSlashingWallet",type:"error"},{inputs:[],name:"InvalidStakerAddress",type:"error"},{inputs:[],name:"InvalidTokenAddress",type:"error"},{inputs:[],name:"InvalidWatchTowerAddress",type:"error"},{inputs:[],name:"InvalidWithdrawalDelay",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoActiveUnstakeRequest",type:"error"},{inputs:[],name:"NoSlashedTokensAvailable",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoStakeExists",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoStakeToSlash",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoTokensToUnstake",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"NoWithdrawalInProgress",type:"error"},{inputs:[{internalType:"address",name:"currentRegistry",type:"address"}],name:"NodeRegistryAlreadySet",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"address",name:"staker",type:"address"},{internalType:"address",name:"caller",type:"address"}],name:"OnlyStakerCanCancel",type:"error"},{inputs:[{internalType:"address",name:"staker",type:"address"},{internalType:"address",name:"caller",type:"address"}],name:"OnlyStakerCanUnstake",type:"error"},{inputs:[],name:"ReentrancyGuardReentrantCall",type:"error"},{inputs:[],name:"SlashingWalletNotSet",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"StakeAlreadyExists",type:"error"},{inputs:[],name:"TokenTransferFailed",type:"error"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"UnstakeAlreadyInProgress",type:"error"},{inputs:[],name:"WatchTowerNotSet",type:"error"},{inputs:[{internalType:"uint64",name:"withdrawalTime",type:"uint64"},{internalType:"uint256",name:"currentTime",type:"uint256"}],name:"WithdrawalPeriodNotElapsed",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldNodeRegistry",type:"address"},{indexed:!0,internalType:"address",name:"newNodeRegistry",type:"address"}],name:"NodeRegistryUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"previousAdminRole",type:"bytes32"},{indexed:!0,internalType:"bytes32",name:"newAdminRole",type:"bytes32"}],name:"RoleAdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleGranted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"bytes32",name:"role",type:"bytes32"},{indexed:!0,internalType:"address",name:"account",type:"address"},{indexed:!0,internalType:"address",name:"sender",type:"address"}],name:"RoleRevoked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Slashed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"string",name:"executionId",type:"string"}],name:"Slashed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"SlashedCollected",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newAmount",type:"uint256"}],name:"SlashingAmountUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWallet",type:"address"},{indexed:!0,internalType:"address",name:"newWallet",type:"address"}],name:"SlashingWalletUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"timestamp",type:"uint256"}],name:"Staked",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldAmount",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newAmount",type:"uint256"}],name:"StakingAmountUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldWatchTower",type:"address"},{indexed:!0,internalType:"address",name:"newWatchTower",type:"address"}],name:"WatchTowerUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!1,internalType:"string",name:"reason",type:"string"},{indexed:!1,internalType:"uint256",name:"cancelledAmount",type:"uint256"}],name:"WithdrawalCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"originalStaker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"WithdrawalCompleted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"oldDelay",type:"uint256"},{indexed:!0,internalType:"uint256",name:"newDelay",type:"uint256"}],name:"WithdrawalDelayUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"withdrawalTime",type:"uint256"}],name:"WithdrawalInitiated",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"nodeAddress",type:"address"},{indexed:!0,internalType:"address",name:"staker",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdrawn",type:"event"},{inputs:[],name:"DEFAULT_ADMIN_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"SLASHER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"WATCHTOWER_ROLE",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"result",type:"bytes"},{internalType:"string[]",name:"",type:"string[]"},{internalType:"uint256",name:"wtExecutionId",type:"uint256"},{internalType:"uint8",name:"status",type:"uint8"},{internalType:"string",name:"",type:"string"}],name:"callbackTask",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"cancelWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"collectSlashedTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"completeWithdrawal",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"existsStake",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getEffectiveStakeForRegistration",outputs:[{internalType:"uint256",name:"stakeAmount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"}],name:"getRoleAdmin",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getSlashableAmountToCollect",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStake",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"timestamp",type:"uint256"},{internalType:"address",name:"staker",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStakeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getStaker",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getStakingParameters",outputs:[{internalType:"uint256",name:"stakeAmount",type:"uint256"},{internalType:"uint256",name:"slashAmount",type:"uint256"},{internalType:"uint256",name:"withdrawalDelay",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"getUnstakeWithdrawalTime",outputs:[{internalType:"uint64",name:"withdrawalTime",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"grantRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"grantSlasherRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"hasRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token",type:"address"},{internalType:"address",name:"_watchTower",type:"address"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isMyWithdrawalReady",outputs:[{internalType:"bool",name:"ready",type:"bool"},{internalType:"uint256",name:"timeRemaining",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"isUnstakeWithdrawalReady",outputs:[{internalType:"bool",name:"ready",type:"bool"},{internalType:"uint256",name:"timeRemaining",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"isWithdrawalInProgress",outputs:[{internalType:"bool",name:"inProgress",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"callerConfirmation",type:"address"}],name:"renounceRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"role",type:"bytes32"},{internalType:"address",name:"account",type:"address"}],name:"revokeRole",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_nodeRegistry",type:"address"}],name:"setNodeRegistry",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"setSlashingAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"}],name:"setSlashingWallet",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_amount",type:"uint256"}],name:"setStakingAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_watchTower",type:"address"}],name:"setWatchTower",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_withdrawalDelay",type:"uint256"}],name:"setWithdrawalDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"},{internalType:"string",name:"executionId",type:"string"}],name:"slash",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"slashingWallet",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalStaked",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"nodeAddress",type:"address"}],name:"unstakeByAdmin",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"node",type:"address"}],name:"unstakeFor",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"watchTower",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"admin_",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],stateMutability:"payable",type:"constructor"}],transactionHash:"0x44bacc61493abb93816836eef188489b891cff0a113e8f825b116377de94aaee",receipt:{to:null,from:"0x33c36D19Ba06842890cB6b5737Ff85A227D4eA26",contractAddress:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",transactionIndex:102,gasUsed:"976632",logsBloom:"0x00000004000000100000000008000000400000000000000000010000000000000000000000000008000000000000000000000200000000000000000000000000000000000001000000000080000002000002000000000000000000000000000000000000020000000000800000000800000000800000000000000000000000000000000000000000000800000000000000020000000080000000000000800000000001000000000000000000000000000000000000000000001000000000080000000020000400000000400000000000000001000404000100002000000020000002000000000000000000000000000000000000000000000000000000080000",blockHash:"0xee3ac46e80bf8621649a02564120472648d6f2abca86b4eb0195912e5f476f95",transactionHash:"0x44bacc61493abb93816836eef188489b891cff0a113e8f825b116377de94aaee",logs:[{transactionIndex:102,blockNumber:9900078,transactionHash:"0x44bacc61493abb93816836eef188489b891cff0a113e8f825b116377de94aaee",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000007c01b80f227f81604cfa18f73604575129c5096"],data:"0x",logIndex:744,blockHash:"0xee3ac46e80bf8621649a02564120472648d6f2abca86b4eb0195912e5f476f95"},{transactionIndex:102,blockNumber:9900078,transactionHash:"0x44bacc61493abb93816836eef188489b891cff0a113e8f825b116377de94aaee",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x0000000000000000000000000000000000000000000000000000000000000000","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26"],data:"0x",logIndex:745,blockHash:"0xee3ac46e80bf8621649a02564120472648d6f2abca86b4eb0195912e5f476f95"},{transactionIndex:102,blockNumber:9900078,transactionHash:"0x44bacc61493abb93816836eef188489b891cff0a113e8f825b116377de94aaee",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x112b543827e39baa999aa686bf791fe2f6502a00cd4342e25f8c36b543f90f14","0x0000000000000000000000007ef63e2e0ba16ab7e57db8add3cc73c2abe55e34","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26"],data:"0x",logIndex:746,blockHash:"0xee3ac46e80bf8621649a02564120472648d6f2abca86b4eb0195912e5f476f95"},{transactionIndex:102,blockNumber:9900078,transactionHash:"0x44bacc61493abb93816836eef188489b891cff0a113e8f825b116377de94aaee",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","0x12b42e8a160f6064dc959c6f251e3af0750ad213dbecf573b4710d67d6c28e39","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26","0x00000000000000000000000033c36d19ba06842890cb6b5737ff85a227d4ea26"],data:"0x",logIndex:747,blockHash:"0xee3ac46e80bf8621649a02564120472648d6f2abca86b4eb0195912e5f476f95"},{transactionIndex:102,blockNumber:9900078,transactionHash:"0x44bacc61493abb93816836eef188489b891cff0a113e8f825b116377de94aaee",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],data:"0x0000000000000000000000000000000000000000000000000000000000000001",logIndex:748,blockHash:"0xee3ac46e80bf8621649a02564120472648d6f2abca86b4eb0195912e5f476f95"},{transactionIndex:102,blockNumber:9900078,transactionHash:"0x44bacc61493abb93816836eef188489b891cff0a113e8f825b116377de94aaee",address:"0x8B938a936dD83e33f97F2061852d272A1a1BA461",topics:["0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f"],data:"0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096d62705509059d981870abe4d347def34c4dc88",logIndex:749,blockHash:"0xee3ac46e80bf8621649a02564120472648d6f2abca86b4eb0195912e5f476f95"}],blockNumber:9900078,cumulativeGasUsed:"22378019",status:1,byzantium:!0},args:["0x07c01B80f227F81604CFa18f73604575129C5096","0x96D62705509059d981870aBe4D347deF34c4dC88","0x485cc9550000000000000000000000003293cb1761b6151a918418cc8ef886e2a7cdc62d0000000000000000000000007ef63e2e0ba16ab7e57db8add3cc73c2abe55e34"],numDeployments:1,solcInputHash:"0e89febeebc7444140de8e67c9067d2c",metadata:'{"compiler":{"version":"0.8.10+commit.fc410830"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \\"admin cannot fallback to proxy target\\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.","kind":"dev","methods":{"admin()":{"details":"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},"constructor":{"details":"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{"details":"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{"details":"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"london","libraries":{},"metadata":{"bytecodeHash":"ipfs","useLiteralContent":true},"optimizer":{"enabled":true,"runs":999999},"remappings":[]},"sources":{"solc_0.8/openzeppelin/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\\n * proxy whose upgrades are fully controlled by the current implementation.\\n */\\ninterface IERC1822Proxiable {\\n /**\\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\\n * address.\\n *\\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\\n * function revert if invoked through a proxy.\\n */\\n function proxiableUUID() external view returns (bytes32);\\n}\\n","keccak256":"0x93b4e21c931252739a1ec13ea31d3d35a5c068be3163ccab83e4d70c40355f03","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../Proxy.sol\\";\\nimport \\"./ERC1967Upgrade.sol\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn\'t conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it\'s used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.implementation\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n","keccak256":"0x6309f9f39dc6f4f45a24f296543867aa358e32946cd6b2874627a996d606b3a0","license":"MIT"},"solc_0.8/openzeppelin/proxy/ERC1967/ERC1967Upgrade.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/ERC1967/ERC1967Upgrade.sol)\\n\\npragma solidity ^0.8.2;\\n\\nimport \\"../beacon/IBeacon.sol\\";\\nimport \\"../../interfaces/draft-IERC1822.sol\\";\\nimport \\"../../utils/Address.sol\\";\\nimport \\"../../utils/StorageSlot.sol\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\"eip1967.proxy.rollback\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\"eip1967.proxy.implementation\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallUUPS(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n // Upgrades from old implementations will perform a rollback test. This test requires the new\\n // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing\\n // this special case will break upgrade paths from old UUPS implementation to new ones.\\n if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {\\n _setImplementation(newImplementation);\\n } else {\\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\\n require(slot == _IMPLEMENTATION_SLOT, \\"ERC1967Upgrade: unsupported proxiableUUID\\");\\n } catch {\\n revert(\\"ERC1967Upgrade: new implementation is not UUPS\\");\\n }\\n _upgradeToAndCall(newImplementation, data, forceCall);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\"eip1967.proxy.admin\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view virtual returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\"ERC1967: new admin is the zero address\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256(\'eip1967.proxy.beacon\')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\"ERC1967: new beacon is not a contract\\");\\n require(Address.isContract(IBeacon(newBeacon).implementation()), \\"ERC1967: beacon implementation is not a contract\\");\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n","keccak256":"0x17668652127feebed0ce8d9431ef95ccc8c4292f03e3b8cf06c6ca16af396633","license":"MIT"},"solc_0.8/openzeppelin/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internal call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don\'t know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n","keccak256":"0xd5d1fd16e9faff7fcb3a52e02a8d49156f42a38a03f07b5f1810c21c2149a8ab","license":"MIT"},"solc_0.8/openzeppelin/proxy/beacon/IBeacon.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n","keccak256":"0xd50a3421ac379ccb1be435fa646d66a65c986b4924f0849839f08692f39dde61","license":"MIT"},"solc_0.8/openzeppelin/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\"../ERC1967/ERC1967Proxy.sol\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\"admin cannot fallback to proxy target\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it\'s best if it\'s a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\"eip1967.proxy.admin\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\"\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\");\\n super._beforeFallback();\\n }\\n}\\n","keccak256":"0x140055a64cf579d622e04f5a198595832bf2cb193cd0005f4f2d4d61ca906253","license":"MIT"},"solc_0.8/openzeppelin/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.5.0-rc.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn\'t rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity\'s `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\"Address: insufficient balance\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\"\\");\\n require(success, \\"Address: unable to send value, recipient may have reverted\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\"Address: low-level call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\"Address: low-level call with value failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\"Address: insufficient balance for call\\");\\n require(isContract(target), \\"Address: call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\"Address: low-level static call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\"Address: static call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\"Address: low-level delegate call failed\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\"Address: delegate call to non-contract\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verifies that a low level call was successful, and revert if it wasn\'t, either by bubbling the\\n * revert reason using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n","keccak256":"0x3777e696b62134e6177440dbe6e6601c0c156a443f57167194b67e75527439de","license":"MIT"},"solc_0.8/openzeppelin/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\"ERC1967: new implementation is not a contract\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n","keccak256":"0xfe1b7a9aa2a530a9e705b220e26cd584e2fbdc9602a3a1066032b12816b46aca","license":"MIT"}},"version":1}',bytecode:"0x6080604052604051620011b2380380620011b2833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b6000805160206200116b833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b6000805160206200114b83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002ff1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e983836040518060600160405280602781526020016200118b6027913962000381565b9392505050565b60006200021a6000805160206200114b83398151915260001b6200046760201b620002731760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd6000805160206200114b83398151915260001b6200046760201b620002731760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200032b1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd6000805160206200116b83398151915260001b6200046760201b620002731760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b610ab380620006986000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",deployedBytecode:"0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100e6578063f851a440146101065761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61011b565b005b61006b61011b565b34801561008157600080fd5b5061006b61009036600461091f565b610135565b61006b6100a336600461093a565b610196565b3480156100b457600080fd5b506100bd610221565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100f257600080fd5b5061006b61010136600461091f565b610276565b34801561011257600080fd5b506100bd6102ba565b610123610347565b61013361012e610435565b61043f565b565b61013d610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816040518060200160405280600081525060006104a3565b50565b61018b61011b565b61019e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610219576102148383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506104a3915050565b505050565b61021461011b565b600061022b610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610435565b905090565b61027361011b565b90565b61027e610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561018e5761018b816104ce565b60006102c4610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561026b57610266610463565b60606103248383604051806060016040528060278152602001610a576027913961052f565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61034f610463565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6000610266610657565b3660008037600080366000845af43d6000803e80801561045e573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b5473ffffffffffffffffffffffffffffffffffffffff16919050565b6104ac8361067f565b6000825111806104b95750805b15610214576104c883836102ff565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104f7610463565b6040805173ffffffffffffffffffffffffffffffffffffffff928316815291841660208301520160405180910390a161018b816106cc565b606073ffffffffffffffffffffffffffffffffffffffff84163b6105d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161042c565b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516105fd91906109e9565b600060405180830381855af49150503d8060008114610638576040519150601f19603f3d011682016040523d82523d6000602084013e61063d565b606091505b509150915061064d8282866107d8565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610487565b6106888161082b565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b73ffffffffffffffffffffffffffffffffffffffff811661076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161042c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b606083156107e7575081610324565b8251156107f75782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042c9190610a05565b73ffffffffffffffffffffffffffffffffffffffff81163b6108cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161042c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610792565b803573ffffffffffffffffffffffffffffffffffffffff8116811461091a57600080fd5b919050565b60006020828403121561093157600080fd5b610324826108f6565b60008060006040848603121561094f57600080fd5b610958846108f6565b9250602084013567ffffffffffffffff8082111561097557600080fd5b818601915086601f83011261098957600080fd5b81358181111561099857600080fd5b8760208285010111156109aa57600080fd5b6020830194508093505050509250925092565b60005b838110156109d85781810151838201526020016109c0565b838111156104c85750506000910152565b600082516109fb8184602087016109bd565b9190910192915050565b6020815260008251806020840152610a248160408501602087016109bd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b29caa54336b3ee836679675e9732ec5e526fb3f803cca2fe336cc3555aba62264736f6c634300080a0033",execute:{methodName:"initialize",args:["0x3293cB1761B6151a918418cC8eF886e2a7cdc62d","0x7eF63E2E0bA16AB7e57DB8Add3cc73c2ABe55e34"]},implementation:"0x07c01B80f227F81604CFa18f73604575129C5096",devdoc:{details:"This contract implements a proxy that is upgradeable by an admin. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches one of the admin functions exposed by the proxy itself. 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error that says \"admin cannot fallback to proxy target\". These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way, you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.",kind:"dev",methods:{"admin()":{details:"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"changeAdmin(address)":{details:"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}."},constructor:{details:"Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."},"implementation()":{details:"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"upgradeTo(address)":{details:"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}."},"upgradeToAndCall(address,bytes)":{details:"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}."}},version:1},userdoc:{kind:"user",methods:{},version:1},storageLayout:{storage:[],types:null}};function gl(t,e){switch(e){case zt.AVAX:return g7n(t);case zt.ETH:return b7n(t);default:throw new Error(`Unsupported blockchain: ${e}`)}}function b7n(t){switch(t){case yf.LOCAL:return{url:"http://localhost:8546",chainId:"31337",staking:{address:tq.address,abi:tq.abi}};case yf.LOCAL_DOCKER:return{url:"http://hardhat-node:8546",chainId:"31337",staking:{address:tq.address,abi:tq.abi}};case yf.TESTNET:return{url:process.env.RPC_ETH_URL||"https://ethereum-sepolia-rpc.publicnode.com",chainId:"11155111",staking:{address:iTe.address,abi:iTe.abi}};case yf.STAGING:return{url:process.env.RPC_ETH_URL||"https://ethereum-sepolia-rpc.publicnode.com",chainId:"11155111",staking:{address:eTe.address,abi:eTe.abi}};case yf.PRODUCTION:return{url:process.env.RPC_ETH_URL||"https://ethereum-rpc.publicnode.com",chainId:"1",staking:{address:Jxe.address,abi:Jxe.abi}};default:throw new Error(`Unsupported environment: ${t}`)}}function g7n(t){switch(t){case yf.LOCAL:return{url:"http://localhost:8545",chainId:"31337",registry:{address:eq.address,abi:eq.abi},taskRegistry:{address:QR.address,abi:QR.abi},authorization:{address:XR.address,abi:XR.abi},watchTower:{address:h1.address,abi:h1.abi}};case yf.LOCAL_DOCKER:return{url:"http://hardhat-node:8545",chainId:"31337",registry:{address:eq.address,abi:eq.abi},taskRegistry:{address:QR.address,abi:QR.abi},authorization:{address:XR.address,abi:XR.abi},watchTower:{address:h1.address,abi:h1.abi}};case yf.TESTNET:return{url:process.env.RPC_URL||"https://api.avax-test.network/ext/bc/C/rpc",chainId:"43113",registry:{address:nTe.address,abi:nTe.abi},taskRegistry:{address:rTe.address,abi:rTe.abi},authorization:{address:tTe.address,abi:tTe.abi},watchTower:{address:h1.address,abi:h1.abi}};case yf.STAGING:return{url:process.env.RPC_URL||"https://api.avax-test.network/ext/bc/C/rpc",chainId:"43113",registry:{address:Qxe.address,abi:Qxe.abi},taskRegistry:{address:Xxe.address,abi:Xxe.abi},authorization:{address:Zxe.address,abi:Zxe.abi},watchTower:{address:h1.address,abi:h1.abi}};case yf.PRODUCTION:return{url:process.env.RPC_URL||"https://api.avax.network/ext/bc/C/rpc",chainId:"43114",registry:{address:Yxe.address,abi:Yxe.abi},taskRegistry:{address:Kxe.address,abi:Kxe.abi},authorization:{address:Gxe.address,abi:Gxe.abi},watchTower:{address:h1.address,abi:h1.abi}};default:throw new Error(`Unsupported environment: ${t}`)}}import{ethers as YTt}from"ethers";var _G=class{contractAddress;stakingContract;provider;signer;serviceLogger;isReadOnly;constructor(e,r,n){let i=gl(e,zt.ETH);n instanceof YTt.JsonRpcProvider?(this.provider=n,this.signer=null,this.isReadOnly=!0):(this.provider=n.provider,this.signer=n,this.isReadOnly=!1),this.contractAddress=i.staking.address,this.stakingContract=new YTt.Contract(this.contractAddress,i.staking.abi,this.isReadOnly?this.provider:this.signer),this.serviceLogger=r}requireSigner(){if(this.isReadOnly||!this.signer)throw new Error("This operation requires a signer. Ledger was initialized in read-only mode (no private key provided).");return this.signer}getStakingContractAddress(){return this.contractAddress}async existsStake(e){return await this.stakingContract.existsStake(e)}async slash(e,r){return this.requireSigner(),(await this.stakingContract["slash(address, string)"](e,r)).wait()}};import{ethers as v7n}from"ethers";function _7n(t){return t&&typeof t.name=="string"&&typeof t.version=="string"&&typeof t.chainId=="number"&&typeof t.verifyingContract=="string"}var Y9=class{provider;signer;constructor(e,r){this.provider=r.provider,this.signer=r}async signMeta(e,r,n){if(!_7n(e))throw new Error("Invalid EIP712Domain");return await this.signer.signTypedData(e,r,n)}async getCurrentNonce(){return await this.signer.getNonce()}async reSyncNonceManager(){this.signer instanceof v7n.NonceManager&&(this.signer.reset(),await this.signer.getNonce("pending"))}};import{ethers as aTe,FetchRequest as S7n}from"ethers";import{inspect as w7n}from"util";import{ethers as E7n}from"ethers";var Tv=class extends E7n.NonceManager{maxRetries;constructor(e,r=10){super(e),this.maxRetries=r}isNonceError(e){if(e instanceof Error){let r=e.message.toLowerCase();return e.code==="NONCE_EXPIRED"||r.includes("nonce too low")||r.includes("nonce too high")||r.includes("nonce has already been used")}return!1}async resyncNonce(){this.reset(),await this.getNonce("pending")}async sendTransaction(e){let r;for(let n=0;n<=this.maxRetries;n++)try{return await super.sendTransaction(e)}catch(i){if(r=i,this.isNonceError(i)&&n<this.maxRetries){await this.resyncNonce();continue}throw i}throw r}};var A7n=6e4,JR=class extends xv{staking;utils;signer;constructor(e,r,n){super(e,r,n);let i=gl(r,zt.ETH),a=new aTe.Network(r,i.chainId),s=new S7n(`${i.url}`);s.timeout=parseInt(process.env.RPC_TIMEOUT||"",10)||A7n;let o=new aTe.JsonRpcProvider(s,a,{staticNetwork:a});if(n){let u=new aTe.Wallet(n,o);this.signer=new Tv(u)}else this.signer=null;try{let u=this.signer??o;this.staking=new _G(r,this.serviceLogger,u),this.utils=this.signer?new Y9(r,this.signer):null}catch(u){throw new Error(`Failed to initialize Eth contracts: ${w7n(u)}`)}this.serviceLogger?.info(`Eth ledger initialized on network ${r} at ${i.url}${n?"":" (read-only mode)"}`)}};import{ethers as JTt}from"ethers";import{retryAsync as sTe}from"ts-retry";var EG=class{serviceLogger;provider;signer;contractAddress;nodeRegistryContract;transactionSuccess=1;EVENT_NAME="NodeRegistrationRequested";isReadOnly;constructor(e,r,n){this.serviceLogger=e;let i=gl(r,zt.AVAX);n instanceof JTt.JsonRpcProvider?(this.provider=n,this.signer=null,this.isReadOnly=!0):(this.provider=n.provider,this.signer=n,this.isReadOnly=!1),this.contractAddress=i.registry.address,this.nodeRegistryContract=new JTt.Contract(this.contractAddress,i.registry.abi,this.isReadOnly?this.provider:this.signer)}requireSigner(){if(this.isReadOnly||!this.signer)throw new Error("This operation requires a signer. Ledger was initialized in read-only mode (no private key provided).");return this.signer}async getNodeRegistrationStatus(e){return await this.nodeRegistryContract.getNodeRegistrationStatus(e)}async registerNode(){this.requireSigner();let e=await(await this.nodeRegistryContract.registerNode()).wait(),r=BigInt(0);if(e.status==1){let n=e?.logs.find(i=>"eventName"in i&&i.eventName===this.EVENT_NAME);return n&&"args"in n&&(r=BigInt(n.args[1])),r}else throw new Error("Error registering the node")}async getChainId(){let{chainId:e}=await this.provider.getNetwork();return e.toString()}getRegistrationContractAddress(){return this.contractAddress}async getNodes(){return(await this.nodeRegistryContract.getNodes()).map(r=>({nodeAddress:r.nodeAddress,blockNumber:r.blockNumber,timestamp:r.timestamp}))}async getNodeCount(){return await this.nodeRegistryContract.getNodeCount()}async deRegister(e=""){this.requireSigner();let r=await sTe(async()=>await(await this.nodeRegistryContract.deRegister(e)).wait(),{delay:1e3,maxTry:10,until:n=>n.message&&n.message.includes("replacement transaction underpriced")?(this.serviceLogger&&this.serviceLogger.error(`${n.message}`),!1):!0});if(r.status==this.transactionSuccess)return r;throw new Error("Error in deregister node process")}async deRegisterAddress(e,r=""){return this.requireSigner(),(await this.nodeRegistryContract.deRegisterAddress(e,r)).wait()}async getNodeAtIndex(e){let r=await this.nodeRegistryContract.getNodeAtIndex(e);return{nodeAddress:r.nodeAddress,blockNumber:r.blockNumber,timestamp:r.timestamp}}async getNodeIndexByAddress(e){return await this.nodeRegistryContract.getNodeIndexByAddress(e)}async isNodeRegistered(e){return await this.nodeRegistryContract.isNodeRegistered(e)}async deRegisterAll(){this.requireSigner(),await this.nodeRegistryContract.deRegisterAll()}async getBlockInfo(){let e=await this.provider.getBlock("latest");if(!e)throw"Couldn't get latest block information";if(!e.hash)throw"Couldn't get block hash";return{hash:e.hash,number:e.number,timestamp:e.timestamp}}async getBlockHash(){let e=await this.provider.getBlock("latest");return e?e.hash:null}async waitForBlocks(e){let n=(await sTe(async()=>await this.provider.getBlock("latest"),{delay:2e3,maxTry:Number.MAX_SAFE_INTEGER,until:i=>i!=null})).number+e;await sTe(async()=>await this.provider.getBlock("latest"),{delay:2e3,maxTry:Number.MAX_SAFE_INTEGER,until:i=>i!=null&&i.number>=n})}async sendSignedTransaction(e){let i=await(await this.requireSigner().sendTransaction({data:e})).wait();if(i)return i.blockHash;throw new Error("Transaction receipt is null")}async signTransaction(e){return await this.requireSigner().signTransaction(e)}async estimateGas(e){try{return await this.provider.estimateGas(e)}catch(r){throw console.error("Error estimating gas:",r),r}}};import{ethers as SG}from"ethers";import{retryAsync as ZTt}from"ts-retry";var wG=class{serviceLogger;provider;signer;taskRegistryAddress;taskRegistryContract;transactionSuccess=1;isReadOnly;constructor(e,r,n){this.serviceLogger=e;let i=gl(r,zt.AVAX);n instanceof SG.JsonRpcProvider?(this.provider=n,this.signer=null,this.isReadOnly=!0):(this.provider=n.provider,this.signer=n,this.isReadOnly=!1),this.taskRegistryAddress=i.taskRegistry.address,this.taskRegistryContract=new SG.Contract(this.taskRegistryAddress,i.taskRegistry.abi,this.isReadOnly?this.provider:this.signer)}requireSigner(){if(this.isReadOnly||!this.signer)throw new Error("This operation requires a signer. Ledger was initialized in read-only mode (no private key provided).");return this.signer}getTaskRegistryContractAddress(){return this.taskRegistryAddress}async getEIP712Domain(){return{name:"TaskRegistry",version:"1",chainId:Number(await this.provider.getNetwork().then(e=>e.chainId)),verifyingContract:this.taskRegistryAddress}}async registerTaskNamespace(e){if(this.requireSigner(),(await(await this.taskRegistryContract.registerTaskNamespace(e)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error registering task namespace")}async nonces(e){try{return await this.taskRegistryContract.nonces(e)}catch(r){return this.serviceLogger&&this.serviceLogger.info(`Nonces not found for address ${e}, treating as first use: ${r}`),0}}async getNamespaceOwner(e){return await this.taskRegistryContract.namespaceOwners(e)}async registerTaskNamespaceWithSignature(e){let r=this.requireSigner(),n=await this.provider.getFeeData(),i=null;n.gasPrice&&(i=n.gasPrice*2n);let s=await this.taskRegistryContract.registerTaskNamespaceWithSignature.estimateGas(e.user,e.namespace,e.deadline,e.signatureMeta,{gasPrice:i})*2n,o=await ZTt(async()=>await(await this.taskRegistryContract.registerTaskNamespaceWithSignature(e.user,e.namespace,e.deadline,e.signatureMeta,{gasPrice:i,gasLimit:s})).wait(),{delay:1e3,maxTry:10,until:u=>u.messages&&(u.messages.includes("nonce too")||u.messages.includes("replacement transaction underpriced"))?(this.serviceLogger&&this.serviceLogger.error(`${u.messages}`),r instanceof SG.NonceManager&&r.reset(),!1):!0});if(o.status==this.transactionSuccess)return o;throw new Error("Error registering task namespace")}async transferTaskNamespace(e,r){if(this.requireSigner(),(await(await this.taskRegistryContract.transferTaskNamespace(e,r)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error transferring task namespace")}async grantNamespaceAccess(e,r){if(this.requireSigner(),(await(await this.taskRegistryContract.grantNamespaceAccess(e,r)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error granting task namespace")}async revokeNamespaceAccess(e,r){if(this.requireSigner(),(await(await this.taskRegistryContract.revokeNamespaceAccess(e,r)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error revoking task namespace")}async setTaskLabel(e,r,n,i){if(this.requireSigner(),i.length>128)throw new Error("Label exceeds maximum length of 128 chars");if((await(await this.taskRegistryContract.setTaskLabel(e,r,n,i)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error setting task label")}async registerTask(e,r,n){if(this.requireSigner(),(await(await this.taskRegistryContract.registerTask(e,r,n)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error registering task")}async registerTaskWithSignature(e){let r=this.requireSigner(),n=await this.provider.getFeeData(),i=null;n.gasPrice&&(i=n.gasPrice*2n);let s=await this.taskRegistryContract.registerTaskWithSignature.estimateGas(e.user,e.namespace,e.taskName,e.task,e.deadline,e.signatureMeta,{gasPrice:i})*2n,o=await ZTt(async()=>await(await this.taskRegistryContract.registerTaskWithSignature(e.user,e.namespace,e.taskName,e.task,e.deadline,e.signatureMeta,{gasPrice:i,gasLimit:s})).wait(),{delay:1e3,maxTry:10,until:u=>u.messages&&(u.messages.includes("nonce too")||u.messages.includes("replacement transaction underpriced"))?(this.serviceLogger&&this.serviceLogger.error(`${u.messages}`),r instanceof SG.NonceManager&&r.reset(),!1):!0});if(o.status==this.transactionSuccess)return o;throw new Error("Error registering task")}async getTask(e,r){let n=await this.taskRegistryContract.getTask(e,r);return{namespace:e,taskId:n[0][0],version:Number(n[2]),meta:n[0][1],nameSpaceOwner:n[1]}}async getTaskByLabel(e,r,n){let i=await this.taskRegistryContract.getTaskByLabel(e,r,n);return{namespace:e,taskId:i[0][0],version:Number(i[2]),label:n,meta:i[0][1],nameSpaceOwner:i[1]}}async getTaskByVersion(e,r,n){let i=await this.taskRegistryContract.getTaskByVersion(e,r,n);return{namespace:e,taskId:i[0][0],version:Number(n),meta:i[0][1],nameSpaceOwner:i[1]}}async disableTask(e,r,n){if(this.requireSigner(),(await(await this.taskRegistryContract.disableTask(e,r,n)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error disabling task")}async enableTask(e,r,n){if(this.requireSigner(),(await(await this.taskRegistryContract.enableTask(e,r,n)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error enabling task")}async isTaskRevoked(e){return await this.taskRegistryContract.isTaskRevoked(e)}async getLatestVersion(e,r){let n=Number(await this.taskRegistryContract.getLatestVersion(e,r));if(n==0)throw`Task (${r}) not found in namespace (${e})`;return n}async getLatestActiveVersion(e,r){return Number(await this.taskRegistryContract.getLatestActiveVersion(e,r))}};import{ethers as J9}from"ethers";import{retryAsync as AG}from"ts-retry";var xG=class{serviceLogger;provider;signer;authorizationAddress;authorizationContract;transactionSuccess=1;isReadOnly;constructor(e,r,n){this.serviceLogger=e;let i=gl(r,zt.AVAX);n instanceof J9.JsonRpcProvider?(this.provider=n,this.signer=null,this.isReadOnly=!0):(this.provider=n.provider,this.signer=n,this.isReadOnly=!1),this.authorizationAddress=i.authorization.address,this.authorizationContract=new J9.Contract(this.authorizationAddress,i.authorization.abi,this.isReadOnly?this.provider:this.signer)}requireSigner(){if(this.isReadOnly||!this.signer)throw new Error("This operation requires a signer. Ledger was initialized in read-only mode (no private key provided).");return this.signer}getAuthorizationContractAddress(){return this.authorizationAddress}async getEIP712Domain(){return{name:"Authorization",version:"1",chainId:Number(await this.provider.getNetwork().then(e=>e.chainId)),verifyingContract:this.authorizationAddress}}async nonces(e){try{return await this.authorizationContract.nonces(e)}catch(r){return this.serviceLogger&&this.serviceLogger.info(`Nonces not found for address ${e}, treating as first use: ${r}`),0}}async grantAuthorization(e,r){if(this.requireSigner(),(await(await this.authorizationContract.grant(e,r)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error granting authorization")}async grantAuthorizationWithSignature(e){let r=this.requireSigner(),n=await this.provider.getFeeData(),i=null;if(n.gasPrice&&(i=n.gasPrice*2n),(await AG(async()=>await(await this.authorizationContract.grantWithSignature(e.user,e.namespace,e.deadline,e.signatureMeta,{gasPrice:i})).wait(),{delay:1e3,maxTry:10,until:s=>s.messages&&(s.messages.includes("Nonce too")||s.messages.includes("replacement transaction underpriced"))?(this.serviceLogger&&this.serviceLogger.error(`${s.messages}`),r instanceof J9.NonceManager&&r.reset(),!1):!0})).status==this.transactionSuccess)return!0;throw new Error("Error granting authorization with signature")}async revokeAuthorization(e,r){if(this.requireSigner(),(await(await this.authorizationContract.revoke(e,r)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error revoking authorization")}async revokeAuthorizationWithSignature(e){let r=this.requireSigner();if((await AG(async()=>await(await this.authorizationContract.revokeWithSignature(e.user,e.namespace,e.deadline,e.signatureMeta)).wait(),{delay:1e3,maxTry:10,until:i=>i.messages&&(i.messages.includes("Nonce too")||i.messages.includes("replacement transaction underpriced"))?(this.serviceLogger&&this.serviceLogger.error(`${i.messages}`),r instanceof J9.NonceManager&&r.reset(),!1):!0})).status==this.transactionSuccess)return!0;throw new Error("Error revoking authorization with signature")}async registerAuthorization(e){if(this.requireSigner(),(await(await this.authorizationContract.register(e)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error registering authorization")}async registerAuthorizationWithSignature(e){let r=this.requireSigner(),n=await this.provider.getFeeData(),i=null;n.gasPrice&&(i=n.gasPrice*2n);let s=await this.authorizationContract.registerWithSignature.estimateGas(e.user,e.apiKeyHash,e.deadline,e.signatureMeta,{gasPrice:i})*2n,o=await AG(async()=>await(await this.authorizationContract.registerWithSignature(e.user,e.apiKeyHash,e.deadline,e.signatureMeta,{gasPrice:i,gasLimit:s})).wait(),{delay:1e3,maxTry:10,until:u=>u.messages&&(u.messages.includes("Nonce too")||u.messages.includes("replacement transaction underpriced"))?(this.serviceLogger&&this.serviceLogger.error(`${u.messages}`),r instanceof J9.NonceManager&&r.reset(),!1):!0});if(o.status==this.transactionSuccess)return o;throw new Error("Error registering authorization with signature")}async deRegisterAuthorization(e){if(this.requireSigner(),(await(await this.authorizationContract.deregister(e)).wait()).status==this.transactionSuccess)return!0;throw new Error("Error deregistering authorization")}async deRegisterAuthorizationWithSignature(e){let r=this.requireSigner();if((await AG(async()=>await(await this.authorizationContract.deregisterWithSignature(e.user,e.apiKeyHash,e.deadline,e.signatureMeta)).wait(),{delay:1e3,maxTry:10,until:i=>i.messages&&(i.messages.includes("Nonce too")||i.messages.includes("replacement transaction underpriced"))?(this.serviceLogger&&this.serviceLogger.error(`${i.messages}`),r instanceof J9.NonceManager&&r.reset(),!1):!0})).status==this.transactionSuccess)return!0;throw new Error("Error deregistering authorization with signature")}async isAuthorized(e,r){return await this.authorizationContract.isAuthorized(e,r)}async getPayerAddress(e){return await this.authorizationContract.getPayer(e)}};import{ethers as oTe,FetchRequest as x7n}from"ethers";import{inspect as T7n}from"util";var O7n=6e4,ZR=class extends xv{nodeRegistry;taskRegistry;authorization;utils;signer;constructor(e,r,n){super(e,r,n);let i=gl(r,zt.AVAX),a=new oTe.Network(r,i.chainId),s=new x7n(`${i.url}`);s.timeout=parseInt(process.env.RPC_TIMEOUT||"",10)||O7n;let o=new oTe.JsonRpcProvider(s,a,{staticNetwork:a});if(n){let u=new oTe.Wallet(n,o);this.signer=new Tv(u)}else this.signer=null;try{let u=this.signer??o;this.nodeRegistry=new EG(this.serviceLogger,r,u),this.taskRegistry=new wG(this.serviceLogger,r,u),this.authorization=new xG(this.serviceLogger,r,u),this.utils=this.signer?new Y9(r,this.signer):null}catch(u){throw new Error(`Failed to initialize Avalanche contracts: ${T7n(u)}`)}this.serviceLogger?.info(`Avalanche ledger initialized on network ${r} at ${i.url}${n?"":" (read-only mode)"}`)}};import{Command as ala,Option as sla}from"commander";import ola from"figlet";var Sc=class{constructor(){}};import*as OG from"fs";import*as uTe from"path";var TG=class extends Sc{async build(e,r){let n=uTe.join(process.cwd(),e,"main.js");if(!OG.existsSync(n))throw`File doesn't exist: ${n} `;OG.copyFileSync(n,uTe.join(process.cwd(),`${r}/main.js`))}};import*as IG from"fs";import*as fTe from"path";var CG=class extends Sc{async build(e,r){let n=fTe.join(process.cwd(),e,"task.py");if(!IG.existsSync(n))throw`File doesn't exist: ${n} `;IG.copyFileSync(n,fTe.join(process.cwd(),`${r}/task.py`))}};import{exec as C7n}from"child_process";import*as Ov from"fs";import*as MG from"path";var PG=class extends Sc{async build(e,r){let n=MG.join(process.cwd(),e),i=MG.join(n,"task.wasm");if(Ov.existsSync(i)&&Ov.rmSync(i),await new Promise((a,s)=>{C7n(`cd ${n} && sh compile.sh`,(o,u,f)=>{o&&s(f),a(u)})}),!Ov.existsSync(i))throw`File doesn't exist: ${i}`;Ov.copyFileSync(i,MG.join(process.cwd(),`${r}/task.wasm`))}};import{exec as XTt}from"child_process";import*as qG from"fs";import*as Z9 from"path";var RG=class extends Sc{async build(e,r){await new Promise((s,o)=>{XTt("rustc --version",(u,f,c)=>{u&&o(`Rust ${c.split("error: ")[1]}`);let d=f.split(" ")[1];d!=="1.81.0"?o(`Rust version detected is: ${d}. Version must be 1.81`):XTt(`cargo build --manifest-path ${Z9.join(process.cwd(),e,"Cargo.toml")} --target wasm32-wasip1`,(h,p,m)=>{h&&o(`Cargo ${m.split("error: ")[1]}`),s(p)})})});let n=e.split("/"),i=n[n.length-1]||n[n.length-2];if(!qG.existsSync(Z9.join(process.cwd(),e,`/target/wasm32-wasip1/debug/${i}.wasm`)))throw`File doesn't exist: ${Z9.join(process.cwd(),e,`/target/wasm32-wasip1/debug/${i}.wasm`)}. Please check that your Cargo.toml file has the same name of the directory of the task. `;qG.copyFileSync(Z9.join(process.cwd(),e,`/target/wasm32-wasip1/debug/${i}.wasm`),Z9.join(process.cwd(),`${r}/task.wasm`))}};import*as X9 from"fs";import*as lTe from"path";import I7n from"openapi-enforcer";var NG=class extends Sc{async build(e,r){let n="manifest.json",i=lTe.join(process.cwd(),e);if(!X9.existsSync(i))throw`File doesn't exist: ${i}`;try{let s=X9.readFileSync(i,"utf-8"),[o,u,f]=await I7n(JSON.parse(s),{fullResult:!0});if(u!==void 0)throw console.error(u),new Error(u);f!==void 0&&console.warn(f),o!==void 0&&console.log("OpenAPI manifest is valid!")}catch{throw"Error validating OpenAPI manifest"}X9.copyFileSync(i,lTe.join(process.cwd(),`${r}/${n}`))}};var DG=class{static createBuild(e){switch(e){case zs.RUST:return new RG;case zs.C:return new PG;case zs.JS:return new TG;case Y5.API:return new NG;case zs.PYTHON:return new CG;default:throw"Invalid language"}}};import*as gf from"fs";import*as iE from"path";import{v4 as MEn}from"uuid";var mIt=pr(MTe(),1);vl();import*as nE from"fs";import IEn from"path";import TEn from"axios";import{publicIp as OEn}from"public-ip";w0();ng();import{ethers as CEn}from"ethers";var Ac=t=>{throw TEn.isAxiosError(t)?t.response?t.response.data.message.includes("Entitlement Validation Error")?Pi.USER_NO_REGISTERED:`${t.response.data.message||t.response.data}`:t.request?`Server is not responding: ${t.message}
501
- ${t.config?.method} - ${t.config?.url}`:t.message:t.message};function A0(t,e){if(t!==t.toLowerCase())throw new Error(`${e} must be lowercase.`)}function gi(t,e){switch(e){case zt.ETH:return K9.create(null,ph.EVM,t,zt.ETH,Dn("privateKey"));case zt.AVAX:return K9.create(null,ph.EVM,t,zt.AVAX,Dn("privateKey"));default:throw new Error(`Unsupported blockchain: ${e}`)}}function uq(t){if(!CEn.isAddress(t)||t.length!==42||!t.startsWith("0x"))throw new Error("Must be a valid ethereum address. (ENS not supported yet)")}async function ZG(){try{return await OEn({onlyHttps:!0})}catch{return"unknown"}}function us(){return new Date().toUTCString().replace(",","")}function uIt(t,e,r,n,i){let a=Dn("address");return{distinct_id:a,user_ip:r,date_time:us(),os_version:n,node_version:process.version,cli_version:i,taskId:t,input:e,wallet_address:a}}function fIt(t,e,r){let n=Dn("address");return{distinct_id:n,user_ip:t,date_time:us(),os_version:e,node_version:process.version,cli_version:r,wallet_address:n}}function lIt(t,e,r,n,i,a,s){let o=Dn("address");return{distinct_id:o,user_ip:i,date_time:us(),os_version:a,node_version:process.version,cli_version:s,taskId:t,task_name:e,namespace:r,label:n,wallet_address:o}}function cIt(t,e,r,n,i){let a=Dn("address");return{distinct_id:a,user_ip:r,date_time:us(),os_version:n,node_version:process.version,cli_version:i,manifest:t,authType:e,wallet_address:a}}function dIt(t,e,r,n){let i=Dn("address");return{distinct_id:i,user_ip:e,date_time:us(),os_version:r,node_version:process.version,cli_version:n,manifest:t,wallet_address:i}}function pIt(t,e,r,n,i,a,s){let o=Dn("address");return{distinct_id:o,user_ip:i,date_time:us(),os_version:a,node_version:process.version,cli_version:s,taskId:t,namespace:e,taskname:r,authType:n,wallet_address:o}}function Iv(t,e,r,n,i){let a=Dn("address"),s={distinct_id:a,user_ip:e,date_time:us(),os_version:r,node_version:process.version,cli_version:n,namespace:t,wallet_address:a};return i&&(s.address_to=i),s}function fq(t,e,r,n,i,a,s){let o=Dn("address");return{distinct_id:o,user_ip:r,date_time:us(),os_version:n,node_version:process.version,cli_version:i,namespace:t,wallet_address:o,taskname:e,label:a,version:s}}function XG(t,e,r,n){let i=Dn("address");return{distinct_id:i,user_ip:e,date_time:us(),os_version:r,node_version:process.version,cli_version:n,api_key:t,wallet_address:i}}function hIt(t,e,r,n,i){let a=Dn("address");return{distinct_id:a,user_ip:r,date_time:us(),os_version:n,node_version:process.version,cli_version:i,namespace:t,address_check:e,wallet_address:a}}function Mu(){let t="production";return process.env.TRUEBIT_ENV==="local"?t="local":process.env.TRUEBIT_ENV==="staging"?t="staging":process.env.TRUEBIT_ENV==="testnet"&&(t="testnet"),t}ng();w0();u6();function xc(t){let e=S0(),r=e!==null,n=0;switch(!r||r&&(!e.privateKey||!e.address)?n=1:n=2,n){case 1:console.error(Pi.USER_NO_REGISTERED),process.exit(1);break;case 2:{t=Yf.createSignedBody(t,e.privateKey,e.address);break}}return t}async function yIt(t,e){if(!nE.existsSync(t))throw"Invalid source code path";let n=nE.readdirSync(t);if(n.length===0)throw"No files found in directory";let i=new mIt.default;for(let f of n){let c=t+`/${f}`,d=nE.readFileSync(c),h=IEn.basename(c);i.append("files",d,h)}i.append("lang",e);let a={files:n,lang:e},s=xc(a),o=await Fh();return i.append("walletAddress",s.walletAddress),i.append("signature",JSON.stringify(s.signature)),i.append("fmpayload",JSON.stringify(a)),(await o.post("api/filesystem/pushLocal",i,{headers:{...i.getHeaders()}}).catch(f=>{Ac(f)})).data}var RTe=async(t,e)=>{let n=`./tmp.${MEn()}`;try{gf.mkdirSync(n);let i=iE.join(process.cwd(),e);if(!gf.existsSync(i))throw"Task path doesn't exist";if(t===zs.C||t===zs.RUST||t===zs.JS||t===zs.PYTHON){let u="config.json",f=iE.join(i,u);gf.existsSync(f)||gf.writeFileSync(f,JSON.stringify({run:{limits:{call:bit,frame:git,gas:yit,memory:vit}}})),gf.copyFileSync(f,iE.join(n,u));let c="fs.tar",d=iE.join(i,c);gf.existsSync(d)&&gf.copyFileSync(d,iE.join(n,c))}await DG.createBuild(t).build(e,n);let o=await yIt(n,t);return gf.rmSync(n,{recursive:!0}),o}catch(i){throw gf.rmSync(n,{recursive:!0}),i}};import*as t_r from"node:fs";var tvr=pr(MTe(),1);import dKe from"axios";import Nua from"node:https";var{parse:PEn,stringify:REn}=JSON,{keys:JTa}=Object,qEn=String,NEn="string";var bIt="object",DEn=(t,e)=>e;var gIt=(t,e,r)=>{let n=qEn(e.push(r)-1);return t.set(r,n),n};var kEn=(t,e,r)=>{let n=e&&typeof e===bIt?(c,d)=>c===""||-1<e.indexOf(c)?d:void 0:e||DEn,i=new Map,a=[],s=[],o=+gIt(i,a,n.call({"":t},"",t)),u=!o;for(;o<a.length;)u=!0,s[o]=REn(a[o++],f,r);return"["+s.join(",")+"]";function f(c,d){if(u)return u=!u,d;let h=n.call(this,c,d);switch(typeof h){case bIt:if(h===null)return h;case NEn:return i.get(h)||gIt(i,a,h)}return h}},qTe=t=>PEn(kEn(t));var Dua=pr(W8(),1),v5s=pr(Fme(),1),w5s=pr(W8(),1);gO();import"ethers";gO();import"ethers";var W5s=pr(fye(),1),kvr=pr(xF(),1),PKe=pr(u0(),1),Z5s=pr(G6(),1),o5=pr(Y6(),1),Ye=pr(u0(),1),jf=pr(u0(),1),Q5s=pr(G6(),1),je=pr(u0(),1),$1=pr(Y6(),1),e3s=pr(G6(),1),at=pr(u0(),1),oo=pr(Y6(),1),t3s=pr(G6(),1),kl=pr(u0(),1),NKe=pr(Y6(),1),wt=pr(u0(),1);import"node:os";import{v4 as Xua}from"uuid";import"axios";var Vvr=pr(Wxe(),1),Wvr=pr($3r(),1);import"axios";import zvr from"openapi-enforcer";import{isIP as l0a}from"node:net";var qua=Object.defineProperty,Ce=(t,e)=>qua(t,"name",{value:e,configurable:!0}),{format:_5s,createLogger:E5s,transports:S5s}=Dua;process.setMaxListeners(0);function rvr(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}Ce(rvr,"isBytes");function Zx(t,e=""){if(!Number.isSafeInteger(t)||t<0){let r=e&&`"${e}" `;throw new Error(`${r}expected integer >= 0, got ${t}`)}}Ce(Zx,"anumber");function Xx(t,e,r=""){let n=rvr(t),i=t?.length,a=e!==void 0;if(!n||a&&i!==e){let s=r&&`"${r}" `,o=a?` of length ${e}`:"",u=n?`length=${i}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+o+", got "+u)}return t}Ce(Xx,"abytes");function nvr(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash must wrapped by utils.createHasher");Zx(t.outputLen),Zx(t.blockLen)}Ce(nvr,"ahash");function hKe(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}Ce(hKe,"aexists");function ivr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}Ce(ivr,"clean");var avr=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",kua=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function wKe(t){if(Xx(t),avr)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=kua[t[r]];return e}Ce(wKe,"bytesToHex");var v2={_0:48,_9:57,A:65,F:70,a:97,f:102};function mKe(t){if(t>=v2._0&&t<=v2._9)return t-v2._0;if(t>=v2.A&&t<=v2.F)return t-(v2.A-10);if(t>=v2.a&&t<=v2.f)return t-(v2.a-10)}Ce(mKe,"asciiToBase16");function svr(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(avr)return Uint8Array.fromHex(t);let e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(r);for(let i=0,a=0;i<r;i++,a+=2){let s=mKe(t.charCodeAt(a)),o=mKe(t.charCodeAt(a+1));if(s===void 0||o===void 0){let u=t[a]+t[a+1];throw new Error('hex string expected, got non-hex character "'+u+'" at index '+a)}n[i]=s*16+o}return n}Ce(svr,"hexToBytes");var $5s=BigInt(2**32-1),ovr=BigInt(0);function uvr(t){if(typeof t=="bigint"){if(!$ua(t))throw new Error("positive bigint expected, got "+t)}else Zx(t);return t}Ce(uvr,"abignumber");function AKe(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?ovr:BigInt("0x"+t)}Ce(AKe,"hexToNumber");function fvr(t){return AKe(wKe(t))}Ce(fvr,"bytesToNumberBE");function lvr(t){return AKe(wKe(dvr(Xx(t)).reverse()))}Ce(lvr,"bytesToNumberLE");function xKe(t,e){Zx(e),t=uvr(t);let r=svr(t.toString(16).padStart(e*2,"0"));if(r.length!==e)throw new Error("number too large");return r}Ce(xKe,"numberToBytesBE");function cvr(t,e){return xKe(t,e).reverse()}Ce(cvr,"numberToBytesLE");function dvr(t){return Uint8Array.from(t)}Ce(dvr,"copyBytes");var $ua=Ce(t=>typeof t=="bigint"&&ovr<=t,"isPosBig"),P0=BigInt(0),Lf=BigInt(1),z_=BigInt(2),pvr=BigInt(3),hvr=BigInt(4),mvr=BigInt(5),Bua=BigInt(7),yvr=BigInt(8),Fua=BigInt(9),bvr=BigInt(16);function k1(t,e){let r=t%e;return r>=P0?r:e+r}Ce(k1,"mod");function Dl(t,e,r){let n=t;for(;e-- >P0;)n*=n,n%=r;return n}Ce(Dl,"pow2");function yKe(t,e){if(t===P0)throw new Error("invert: expected non-zero number");if(e<=P0)throw new Error("invert: expected positive modulus, got "+e);let r=k1(t,e),n=e,i=P0,a=Lf,s=Lf,o=P0;for(;r!==P0;){let u=n/r,f=n%r,c=i-s*u,d=a-o*u;n=r,r=f,i=s,a=o,s=c,o=d}if(n!==Lf)throw new Error("invert: does not exist");return k1(i,e)}Ce(yKe,"invert");function Tpe(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}Ce(Tpe,"assertIsSquare");function TKe(t,e){let r=(t.ORDER+Lf)/hvr,n=t.pow(e,r);return Tpe(t,n,e),n}Ce(TKe,"sqrt3mod4");function gvr(t,e){let r=(t.ORDER-mvr)/yvr,n=t.mul(e,z_),i=t.pow(n,r),a=t.mul(e,i),s=t.mul(t.mul(a,z_),i),o=t.mul(a,t.sub(s,t.ONE));return Tpe(t,o,e),o}Ce(gvr,"sqrt5mod8");function vvr(t){let e=Ope(t),r=OKe(t),n=r(e,e.neg(e.ONE)),i=r(e,n),a=r(e,e.neg(n)),s=(t+Bua)/bvr;return(o,u)=>{let f=o.pow(u,s),c=o.mul(f,n),d=o.mul(f,i),h=o.mul(f,a),p=o.eql(o.sqr(c),u),m=o.eql(o.sqr(d),u);f=o.cmov(f,c,p),c=o.cmov(h,d,m);let y=o.eql(o.sqr(c),u),b=o.cmov(f,c,y);return Tpe(o,b,u),b}}Ce(vvr,"sqrt9mod16");function OKe(t){if(t<pvr)throw new Error("sqrt is not defined for small field");let e=t-Lf,r=0;for(;e%z_===P0;)e/=z_,r++;let n=z_,i=Ope(t);for(;bKe(i,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return TKe;let a=i.pow(n,e),s=(e+Lf)/z_;return Ce(function(o,u){if(o.is0(u))return u;if(bKe(o,u)!==1)throw new Error("Cannot find square root");let f=r,c=o.mul(o.ONE,a),d=o.pow(u,e),h=o.pow(u,s);for(;!o.eql(d,o.ONE);){if(o.is0(d))return o.ZERO;let p=1,m=o.sqr(d);for(;!o.eql(m,o.ONE);)if(p++,m=o.sqr(m),p===f)throw new Error("Cannot find square root");let y=Lf<<BigInt(f-p-1),b=o.pow(c,y);f=p,c=o.sqr(b),d=o.mul(d,c),h=o.mul(h,b)}return h},"tonelliSlow")}Ce(OKe,"tonelliShanks");function _vr(t){return t%hvr===pvr?TKe:t%yvr===mvr?gvr:t%bvr===Fua?vvr(t):OKe(t)}Ce(_vr,"FpSqrt");function Evr(t,e,r){if(r<P0)throw new Error("invalid exponent, negatives unsupported");if(r===P0)return t.ONE;if(r===Lf)return e;let n=t.ONE,i=e;for(;r>P0;)r&Lf&&(n=t.mul(n,i)),i=t.sqr(i),r>>=Lf;return n}Ce(Evr,"FpPow");function Svr(t,e,r=!1){let n=new Array(e.length).fill(r?t.ZERO:void 0),i=e.reduce((s,o,u)=>t.is0(o)?s:(n[u]=s,t.mul(s,o)),t.ONE),a=t.inv(i);return e.reduceRight((s,o,u)=>t.is0(o)?s:(n[u]=t.mul(s,n[u]),t.mul(s,o)),a),n}Ce(Svr,"FpInvertBatch");function bKe(t,e){let r=(t.ORDER-Lf)/z_,n=t.pow(e,r),i=t.eql(n,t.ONE),a=t.eql(n,t.ZERO),s=t.eql(n,t.neg(t.ONE));if(!i&&!a&&!s)throw new Error("invalid Legendre symbol result");return i?1:a?0:-1}Ce(bKe,"FpLegendre");function wvr(t,e){e!==void 0&&Zx(e);let r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}Ce(wvr,"nLength");var Lua=class{static{Ce(this,"_Field")}ORDER;BITS;BYTES;isLE;ZERO=P0;ONE=Lf;_lengths;_sqrt;_mod;constructor(t,e={}){if(t<=P0)throw new Error("invalid field: expected ORDER > 0, got "+t);let r;this.isLE=!1,e!=null&&typeof e=="object"&&(typeof e.BITS=="number"&&(r=e.BITS),typeof e.sqrt=="function"&&(this.sqrt=e.sqrt),typeof e.isLE=="boolean"&&(this.isLE=e.isLE),e.allowedLengths&&(this._lengths=e.allowedLengths?.slice()),typeof e.modFromBytes=="boolean"&&(this._mod=e.modFromBytes));let{nBitLength:n,nByteLength:i}=wvr(t,r);if(i>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=t,this.BITS=n,this.BYTES=i,this._sqrt=void 0,Object.preventExtensions(this)}create(t){return k1(t,this.ORDER)}isValid(t){if(typeof t!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof t);return P0<=t&&t<this.ORDER}is0(t){return t===P0}isValidNot0(t){return!this.is0(t)&&this.isValid(t)}isOdd(t){return(t&Lf)===Lf}neg(t){return k1(-t,this.ORDER)}eql(t,e){return t===e}sqr(t){return k1(t*t,this.ORDER)}add(t,e){return k1(t+e,this.ORDER)}sub(t,e){return k1(t-e,this.ORDER)}mul(t,e){return k1(t*e,this.ORDER)}pow(t,e){return Evr(this,t,e)}div(t,e){return k1(t*yKe(e,this.ORDER),this.ORDER)}sqrN(t){return t*t}addN(t,e){return t+e}subN(t,e){return t-e}mulN(t,e){return t*e}inv(t){return yKe(t,this.ORDER)}sqrt(t){return this._sqrt||(this._sqrt=_vr(this.ORDER)),this._sqrt(this,t)}toBytes(t){return this.isLE?cvr(t,this.BYTES):xKe(t,this.BYTES)}fromBytes(t,e=!1){Xx(t);let{_lengths:r,BYTES:n,isLE:i,ORDER:a,_mod:s}=this;if(r){if(!r.includes(t.length)||t.length>n)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+t.length);let u=new Uint8Array(n);u.set(t,i?0:u.length-t.length),t=u}if(t.length!==n)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+t.length);let o=i?lvr(t):fvr(t);if(s&&(o=k1(o,a)),!e&&!this.isValid(o))throw new Error("invalid field element: outside of range 0..ORDER");return o}invertBatch(t){return Svr(this,t)}cmov(t,e,r){return r?e:t}};function Ope(t,e={}){return new Lua(t,e)}Ce(Ope,"Field");var Avr=class{static{Ce(this,"_HMAC")}oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(t,e){if(nvr(t),Xx(e,void 0,"key"),this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let r=this.blockLen,n=new Uint8Array(r);n.set(e.length>r?t.create().update(e).digest():e);for(let i=0;i<n.length;i++)n[i]^=54;this.iHash.update(n),this.oHash=t.create();for(let i=0;i<n.length;i++)n[i]^=106;this.oHash.update(n),ivr(n)}update(t){return hKe(this),this.iHash.update(t),this}digestInto(t){hKe(this),Xx(t,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||=Object.create(Object.getPrototypeOf(this),{});let{oHash:e,iHash:r,finished:n,destroyed:i,blockLen:a,outputLen:s}=this;return t=t,t.finished=n,t.destroyed=i,t.blockLen=a,t.outputLen=s,t.oHash=e._cloneInto(t.oHash),t.iHash=r._cloneInto(t.iHash),t}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},jua=Ce((t,e,r)=>new Avr(t,e).update(r).digest(),"hmac");jua.create=(t,e)=>new Avr(t,e);var B5s=BigInt(0),F5s=BigInt(1),L5s=BigInt(2),j5s=BigInt(3),U5s=BigInt(4),xvr={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},V5s={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},B3r=BigInt(2);function Tvr(t){let e=xvr.p,r=BigInt(3),n=BigInt(6),i=BigInt(11),a=BigInt(22),s=BigInt(23),o=BigInt(44),u=BigInt(88),f=t*t*t%e,c=f*f*t%e,d=Dl(c,r,e)*c%e,h=Dl(d,r,e)*c%e,p=Dl(h,B3r,e)*f%e,m=Dl(p,i,e)*p%e,y=Dl(m,a,e)*m%e,b=Dl(y,o,e)*y%e,_=Dl(b,u,e)*b%e,E=Dl(_,o,e)*y%e,A=Dl(E,r,e)*c%e,x=Dl(A,s,e)*m%e,q=Dl(x,n,e)*f%e,N=Dl(q,B3r,e);if(!F3r.eql(F3r.sqr(N),t))throw new Error("Cannot find square root");return N}Ce(Tvr,"sqrtMod");var F3r=Ope(xvr.p,{sqrt:Tvr});function Ovr(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}Ce(Ovr,"isBytes2");function bk(t,e,r=""){let n=Ovr(t),i=t?.length,a=e!==void 0;if(!n||a&&i!==e){let s=r&&`"${r}" `,o=a?` of length ${e}`:"",u=n?`length=${i}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+o+", got "+u)}return t}Ce(bk,"abytes2");function CKe(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}Ce(CKe,"u32");function gk(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}Ce(gk,"clean2");function Cvr(t){return t.byteOffset%4===0}Ce(Cvr,"isAligned32");function Ivr(t){return Uint8Array.from(t)}Ce(Ivr,"copyBytes2");var Am=16,Uua=283;function IKe(t){if(![16,24,32].includes(t.length))throw new Error('"aes key" expected Uint8Array of length 16/24/32, got length='+t.length)}Ce(IKe,"validateKeyLength");function Cpe(t){return t<<1^Uua&-(t>>7)}Ce(Cpe,"mul2");function gKe(t,e){let r=0;for(;e>0;e>>=1)r^=t&-(e&1),t=Cpe(t);return r}Ce(gKe,"mul");var Vua=(()=>{let t=new Uint8Array(256);for(let r=0,n=1;r<256;r++,n^=Cpe(n))t[r]=n;let e=new Uint8Array(256);e[0]=99;for(let r=0;r<255;r++){let n=t[255-r];n|=n<<8,e[t[r]]=(n^n>>4^n>>5^n>>6^n>>7^99)&255}return gk(t),e})(),Hua=Ce(t=>t<<24|t>>>8,"rotr32_8"),pKe=Ce(t=>t<<8|t>>>24,"rotl32_8");function Mvr(t,e){if(t.length!==256)throw new Error("Wrong sbox length");let r=new Uint32Array(256).map((f,c)=>e(t[c])),n=r.map(pKe),i=n.map(pKe),a=i.map(pKe),s=new Uint32Array(256*256),o=new Uint32Array(256*256),u=new Uint16Array(256*256);for(let f=0;f<256;f++)for(let c=0;c<256;c++){let d=f*256+c;s[d]=r[f]^n[c],o[d]=i[f]^a[c],u[d]=t[f]<<8|t[c]}return{sbox:t,sbox2:u,T0:r,T1:n,T2:i,T3:a,T01:s,T23:o}}Ce(Mvr,"genTtable");var Pvr=Mvr(Vua,t=>gKe(t,3)<<24|t<<16|t<<8|gKe(t,2)),zua=(()=>{let t=new Uint8Array(16);for(let e=0,r=1;e<16;e++,r=Cpe(r))t[e]=r;return t})();function Rvr(t){bk(t);let e=t.length;IKe(t);let{sbox2:r}=Pvr,n=[];Cvr(t)||n.push(t=Ivr(t));let i=CKe(t),a=i.length,s=Ce(u=>Yx(r,u,u,u,u),"subByte"),o=new Uint32Array(e+28);o.set(i);for(let u=a;u<o.length;u++){let f=o[u-1];u%a===0?f=s(Hua(f))^zua[u/a-1]:a>6&&u%a===4&&(f=s(f)),o[u]=o[u-a]^f}return gk(...n),o}Ce(Rvr,"expandKeyLE");function mk(t,e,r,n,i,a){return t[r<<8&65280|n>>>8&255]^e[i>>>8&65280|a>>>24&255]}Ce(mk,"apply0123");function Yx(t,e,r,n,i){return t[e&255|r&65280]|t[n>>>16&255|i>>>16&65280]<<16}Ce(Yx,"applySbox");function qvr(t,e,r,n,i){let{sbox2:a,T01:s,T23:o}=Pvr,u=0;e^=t[u++],r^=t[u++],n^=t[u++],i^=t[u++];let f=t.length/4-2;for(let m=0;m<f;m++){let y=t[u++]^mk(s,o,e,r,n,i),b=t[u++]^mk(s,o,r,n,i,e),_=t[u++]^mk(s,o,n,i,e,r),E=t[u++]^mk(s,o,i,e,r,n);e=y,r=b,n=_,i=E}let c=t[u++]^Yx(a,e,r,n,i),d=t[u++]^Yx(a,r,n,i,e),h=t[u++]^Yx(a,n,i,e,r),p=t[u++]^Yx(a,i,e,r,n);return{s0:c,s1:d,s2:h,s3:p}}Ce(qvr,"encrypt");function Nvr(t){return t instanceof Uint32Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint32Array"}Ce(Nvr,"isBytes32");function Epe(t,e){if(bk(e,16,"block"),!Nvr(t))throw new Error("_encryptBlock accepts result of expandKeyLE");let r=CKe(e),{s0:n,s1:i,s2:a,s3:s}=qvr(t,r[0],r[1],r[2],r[3]);return r[0]=n,r[1]=i,r[2]=a,r[3]=s,e}Ce(Epe,"encryptBlock");function vKe(t){let e=0;for(let r=Am-1;r>=0;r--){let n=(t[r]&128)>>>7;t[r]=t[r]<<1|e,e=n}return e&&(t[Am-1]^=135),t}Ce(vKe,"dbl");function yk(t,e){if(t.length!==e.length)throw new Error("xorBlock: blocks must have same length");for(let r=0;r<t.length;r++)t[r]=t[r]^e[r];return t}Ce(yk,"xorBlock");var Dvr=class{static{Ce(this,"_CMAC")}buffer;destroyed;k1;k2;xk;constructor(t){bk(t),IKe(t),this.xk=Rvr(t),this.buffer=new Uint8Array(0),this.destroyed=!1;let e=new Uint8Array(Am);Epe(this.xk,e),this.k1=vKe(e),this.k2=vKe(new Uint8Array(this.k1))}update(t){let{destroyed:e,buffer:r}=this;if(e)throw new Error("CMAC instance was destroyed");bk(t);let n=new Uint8Array(r.length+t.length);return n.set(r),n.set(t,r.length),this.buffer=n,this}digest(){if(this.destroyed)throw new Error("CMAC instance was destroyed");let{buffer:t}=this,e=t.length,r=Math.ceil(e/Am),n;r===0?(r=1,n=!1):n=e%Am===0;let i=(r-1)*Am,a=t.subarray(i),s;if(n)s=yk(new Uint8Array(a),this.k1);else{let u=new Uint8Array(Am);u.set(a),u[a.length]=128,s=yk(u,this.k2)}let o=new Uint8Array(Am);for(let u=0;u<r-1;u++){let f=t.subarray(u*Am,(u+1)*Am);yk(o,f),Epe(this.xk,o)}return yk(o,s),Epe(this.xk,o),gk(s),o}destroy(){let{buffer:t,destroyed:e,xk:r,k1:n,k2:i}=this;e||(this.destroyed=!0,gk(t,r,n,i))}},Wua=Ce((t,e)=>new Dvr(t).update(e).digest(),"cmac");Wua.create=t=>new Dvr(t);var Spe;(function(t){t.RUST="rs",t.C="c",t.JS="js",t.API="api",t.PYTHON="py"})(Spe||(Spe={}));var _Ke;(function(t){t.API="api"})(_Ke||(_Ke={}));var Gua={...Spe,..._Ke},H5s=Object.values(Gua),z5s=Object.values(Spe),L3r;(function(t){t.JSON="application/json",t.WASM="application/wasm",t.PLAIN_TXT="text/plain",t.JS="application/x-javascript",t.TAR="application/x-tar"})(L3r||(L3r={}));var j3r;(function(t){t.JSON="json",t.WASM="wasm",t.PLAIN_TXT="txt",t.JS="js",t.DTA="dta",t.PY="py",t.TAR="tar"})(j3r||(j3r={}));var U3r;(function(t){t.LEDGER="ledger",t.HTTP_ADAPTER="http-adapter",t.EVENTS_ADAPTER="events-adapter",t.FILESYSTEM_ADAPTER="filesystem-adapter",t.WASM_CHECKPOINTER="wasm-checkpointer",t.WASM_INSTRUMENTER="wasm-instrumenter",t.WASM_RUNNER="wasm-runner"})(U3r||(U3r={}));var _2;(function(t){t.FAILED="failed",t.SUCCEED="succeed",t.RUNNING="running"})(_2||(_2={}));var V3r;(function(t){t.MINIO="minio",t.S3="s3"})(V3r||(V3r={}));var MKe=class{static{Ce(this,"AuthMethod")}tokens=[];authInputs;parse(t,e){let r=this.parseKeyValuePairs(e);if(t.length==0){this.authInputs=r;return}let n=Object.keys(r);if(t.every(i=>n.includes(i))){let i={};for(let a of t)i[a]=r[a];this.authInputs=i}else throw new Error(`Invalid authString: ${t} are required`)}parseKeyValuePairs(t){try{let e=t.split(","),r={};for(let n of e){let[i,a]=n.split(":");r[i.trim()]=a.trim()}return r}catch{throw new Error("Invalid auth string")}}},Kua=class extends MKe{static{Ce(this,"AwsSignature")}tokens=["accessKey","secretKey"];constructor(t){super(),this.parse(this.tokens,t)}authHeaders(t){return kvr.default.sign(t,{accessKeyId:this.authInputs.accessKey,secretAccessKey:this.authInputs.secretKey}).headers||{}}},Yua=class extends MKe{static{Ce(this,"BasicAuth")}tokens=["username","password"];constructor(t){super(),this.parse(this.tokens,t)}authHeaders(t){return{Authorization:`Basic ${btoa(`${this.authInputs.username}:${this.authInputs.password}`)}`}}},Jua=class extends MKe{static{Ce(this,"CustomHeader")}tokens=[];constructor(t){super(),this.parse([],t)}authHeaders(t){return{...this.authInputs}}},Jx;(function(t){t.AWS_SIGNATURE="aws-signature",t.BASIC_AUTH="basic-auth",t.CUSTOM_HEADER="custom-header"})(Jx||(Jx={}));var Zua=Ce((t,e)=>{switch(t){case Jx.AWS_SIGNATURE:return new Kua(e);case Jx.BASIC_AUTH:return new Yua(e);case Jx.CUSTOM_HEADER:return new Jua(e);default:throw new Error(`Invalid authentication method specified. Should be one of <${Object.values(Jx)}>`)}},"createApiAuthParser"),H3r;(function(t){t.TASK_CREATED="task_created",t.TASK_SOLVED="task_solved",t.FILE_SYSTEM="file_system",t.DISPATCH_TASK="dispatch_task",t.DISPATCH_API_TASK="dispatch_api_task",t.MESSAGE_SAVED="message_saved",t.COMPUTED_OUTCOME="computed_outcome",t.API_FETCH="api_fetch",t.API_OUTCOME="api_outcome",t.API_SOLVED="api_solved",t.READY_TO_SHUTDOWN="ready_to_shutdown",t.INVOICE="invoice",t.REQUEST_SLASH="request_slash",t.RETRY_SLASH="retry_slash",t.RETRY_DEREGISTER="retry_deregister",t.ENTITLEMENT="entitlement",t.HEALTH_CHECK="health_check",t.RUNNER_TASK_EXECUTED="runner_task_executed",t.DEPLOYER_EXECUTE_TASK="deployer_execute_task",t.DEPLOYER_TASK_EXECUTED="deployer_task_executed",t.HTTP_ADAPTER_TASK_EXECUTED="http_adapter_task_executed",t.HTTP_ADAPTER_TASK_INSTRUMENTED="http_adapter_task_instrumented",t.HTTP_ADAPTER_TASK_PUSHED="http_adapter_task_pushed",t.HTTP_ADAPTER_TASK_PULLED="http_adapter_task_pulled",t.HTTP_ADAPTER_TASK_CHECKPOINTED="http_adapter_task_checkpointed",t.HTTP_ADAPTER_TASK_CHECKPOINTS_LISTED="http_adapter_task_checkpoints_listed",t.HTTP_ADAPTER_READY_TO_SHUTDOWN="http_adapter_ready_to_shutdown",t.EVENTS_ADAPTER_TASK_EXECUTED="events_adapter_task_executed",t.EVENTS_ADAPTER_TASK_INSTRUMENTED="events_adapter_task_instrumented",t.EVENTS_ADAPTER_TASK_PUSHED="events_adapter_task_pushed",t.EVENTS_ADAPTER_TASK_PULLED="events_adapter_task_pulled",t.EVENTS_ADAPTER_TASK_CHECKPOINTED="events_adapter_task_checkpointed",t.EVENTS_ADAPTER_TASK_CHECKPOINTS_LISTED="events_adapter_task_checkpoints_listed",t.EVENTS_ADAPTER_COMPUTED_OUTCOME="events_adapter_compute_outcome",t.EVENTS_ADAPTER_TASK_CREATED="events_adapter_task_created",t.EVENTS_ADAPTER_NODE_DEREGISTERED="events_adapter_node_deregistered",t.EVENTS_ADAPTER_SERVICE_STARTED_CHECK="events_adapter_service_started_check",t.DISPATCHER_TASK_SOLVED_CLEAR="dispatcher_task_solved_clear",t.DISPATCHER_TASK_CREATED="dispatcher_task_created",t.WASM_INSTRUMENTER_INSTRUMENT_TASK="wasm_instrumenter_instrument_task",t.WASM_INSTRUMENTER_TASK_INSTRUMENTED="wasm_instrumenter_task_instrumented",t.FILESYSTEM_ADAPTER_PUSH_TASK="filesystem_adapter_push_task",t.FILESYSTEM_ADAPTER_TASK_PUSHED="filesystem_adapter_task_pushed",t.FILESYSTEM_ADAPTER_PULL_TASK="filesystem_adapter_pull_task",t.FILESYSTEM_ADAPTER_TASK_PULLED="filesystem_adapter_task_pulled",t.FILESYSTEM_ADAPTER_SERVICE_STARTED_CHECK="filesystem_adapter_service_started_check",t.WASM_CHECKPOINTER_CHECKPOINT_TASK="wasm_checkpointer_checkpoint_task",t.WASM_CHECKPOINTER_LIST_TASK_CHECKPOINTS="wasm_checkpointer_list_task_checkpoints",t.TRANSCRIPT_WRITER_SAVE_MESSAGE="transcript_writer_save_message",t.TRANSCRIPT_WRITER_INVOICE="transcript_writer_save_invoice",t.SEQUENCER_MESSAGE_SAVED="sequencer_message_saved",t.VERIFICATION_MESSAGE_SAVED="verification_message_saved",t.VERIFICATION_VALIDATE_MESSAGE="verification_validate_message",t.VERIFICATION_REVEAL_SOLUTION="verification_reveal_solution",t.VERIFICATION_ADJUDICATION_OUTCOME="verification_adjudication_outcome",t.VERIFICATION_ERRORS="verification_errors",t.LEDGER_SHUTDOWN="ledger_shutdown",t.LEDGER_SERVICE_STARTED="ledger_service_started"})(H3r||(H3r={}));var Vc;(function(t){t.TASK_INSTRUMENTED="task_instrumented",t.TASK_CREATED="task_created",t.API_TASK_CREATED="api_task_created",t.TASK_EXECUTED="task_executed",t.TASK_PUSHED="task_pushed",t.TASK_PULLED="task_pulled",t.TASK_CHECKPOINTED="task_checkpointed",t.TASK_CHECKPOINTS_LISTED="task_checkpoints_listed",t.COMPUTED_OUTCOME="computed_outcome",t.ADJUDICATION_OUTCOME="adjudication_outcome",t.MESSAGE_SAVED="message_saved",t.TASK_SOLVED="task_solved",t.TASK_SOLVED_CLEAR="task_solved_clear",t.NODE_OUTCOME="node_outcome",t.PLATFORM_ERRORS="errors",t.REVEAL_SOLUTIONS="reveal_solutions",t.SOLUTIONS_REVEALED="solutions_revealed",t.API_FETCHER_OUTCOME="api_fetcher_outcome",t.API_SOLVED="api_solved",t.API_OUTCOME="api_outcome",t.NODE_DEREGISTERED="node_deregistered",t.READY_TO_SHUTDOWN="ready_to_shutdown",t.EXECUTION_COMPLETED="execution_completed",t.SERVICE_STARTED="service_started",t.INVOICE="invoice",t.ENTITLEMENT_REQ="entitlement_req",t.ENTITLEMENT_RES="entitlement_res",t.HEALTH_CHECK="health_check",t.EXECUTION_METADATA="execution_metadata",t.REQUEST_SLASH="request_slash",t.RETRY_SLASH="retry_slash",t.RETRY_DEREGISTER="retry_deregister"})(Vc||(Vc={}));var z3r;(function(t){t.SHUTDOWN="shutdown",t.LIST_TASK_CHECKPOINTS="list_task_checkpoints",t.EXECUTE_TASK="execute_task",t.CHECKPOINT_TASK="checkpoint_task",t.INSTRUMENT_TASK="instrument_task",t.PUSH_TASK="push_task",t.PULL_TASK="pull_task",t.DISPATCH_TASK="dispatch_task",t.DISPATCH_API_TASK="dispatch_api_task",t.SAVE_MESSAGE="save_message",t.REVEAL_SOLUTION="reveal_solution",t.VALIDATE_MESSAGE="validate_message",t.API_FETCH="api_fetch",t.ENTITLEMENT="entitlement",t.HEALTH_CHECK="health_check",t.ADJUDICATION_OUTCOME="adjudication_outcome"})(z3r||(z3r={}));var W3r;(function(t){t.ERRORS="errors",t.TASK_INSTRUMENTED="task_instrumented",t.TASK_CREATED="task_created",t.API_TASK_CREATED="api_task_created",t.TASK_EXECUTED="task_executed",t.TASK_PUSHED="task_pushed",t.TASK_SOLVED="task_solved",t.TASK_SOLVED_CLEAR="task_solved_clear",t.TASK_PULLED="task_pulled",t.TASK_CHECKPOINTED="task_checkpointed",t.TASK_CHECKPOINTS_LISTED="task_checkpoints_listed",t.COMPUTED_OUTCOME="computed_outcome",t.ADJUDICATION_OUTCOME="adjudication_outcome",t.MESSAGE_SAVED="message_saved",t.API_FETCHER_OUTCOME="api_fetcher_outcome",t.API_SOLVED="api_solved",t.API_OUTCOME="api_outcome",t.NODE_DEREGISTERED="node_deregistered",t.READY_TO_SHUTDOWN="ready_to_shutdown",t.SERVICE_STARTED="service_started",t.INVOICES="invoice",t.ENTITLEMENTS_REQ="entitlement_req",t.ENTITLEMENTS_RES="entitlement_res",t.HEALTH_CHECK="health_check",t.REQUEST_SLASH="request_slash",t.RETRY_SLASH="retry_slash",t.RETRY_DEREGISTER="retry_deregister",t.SHUTDOWN="shutdown",t.LIST_TASK_CHECKPOINTS="list_task_checkpoints",t.EXECUTE_TASK="execute_task",t.CHECKPOINT_TASK="checkpoint_task",t.INSTRUMENT_TASK="instrument_task",t.PUSH_TASK="push_task",t.PULL_TASK="pull_task",t.DISPATCH_TASK="dispatch_task",t.DISPATCH_API_TASK="dispatch_api_task",t.SAVE_MESSAGE="save_message",t.REVEAL_SOLUTION="reveal_solution",t.VALIDATE_MESSAGE="validate_message",t.API_FETCH="api_fetch",t.DUMMY="DUMMY"})(W3r||(W3r={}));var G3r;(function(t){t.VALIDATION_ERROR="validation_error"})(G3r||(G3r={}));var wpe;(function(t){t.GAME_PENDING="GamePending",t.READY_FOR_INVOICE="ReadyForInvoice",t.CONTROL_NODE_TIMEOUT="ControlNodeTimeout",t.ERROR="Error"})(wpe||(wpe={}));var K3r;(function(t){let e;(function(n){n.Pay="pay",n.Charge="charge",n.Penalty="penalty"})(e=t.Operation||(t.Operation={}));let r;(function(n){n.IS_USER_REGISTER="isUserRegister"})(r=t.EntitlementOperation||(t.EntitlementOperation={}))})(K3r||(K3r={}));var Y3r;(function(t){t.Pay="pay",t.Charge="charge",t.Penalty="penalty"})(Y3r||(Y3r={}));var J5s=[Vc.TASK_SOLVED,Vc.TASK_CREATED,Vc.API_TASK_CREATED,Vc.NODE_OUTCOME,Vc.SOLUTIONS_REVEALED,Vc.REVEAL_SOLUTIONS,Vc.API_OUTCOME,Vc.EXECUTION_COMPLETED,Vc.EXECUTION_METADATA,Vc.ADJUDICATION_OUTCOME],J3r;(function(t){t.EXECUTE_TRANSACTION="EXECUTE_TRANSACTION",t.GET_TRANSACTION="GET_TRANSACTION",t.REGISTER_USER="REGISTER_USER"})(J3r||(J3r={}));var Z3r;(function(t){t.AUTHORIZATION_REGISTER="authorization.register",t.AUTHORIZATION_DEREGISTER="authorization.deregister",t.TASKREGISTRY_REGISTER_NAMESPACE="taskregistry.registerNamespace",t.TASKREGISTRY_REGISTER_TASK="taskregistry.registerTask",t.STAKING_SLASH="staking.slash",t.NODEREGISTRY_DEREGISTER="noderegistry.deregister",t.WATCHTOWER_CALLBACK="watchtower.callback"})(Z3r||(Z3r={}));function s5(){return function(t,e){(0,PKe.registerDecorator)({name:"IsUnixTimestamp",target:t.constructor,propertyName:e,validator:{validate(r){let n=r,i=new Date(n);return!isNaN(i.getTime())&&n>16725312e5}}})}}Ce(s5,"IsUnixTimestamp");function RKe(){return function(t,e){(0,PKe.registerDecorator)({name:"IsUnixTimestamp",target:t.constructor,propertyName:e,validator:{validate(r){let n=r,i=new Date(n);return!isNaN(i.getTime())&&n>1672531200}}})}}Ce(RKe,"IsUnixTimestampSeconds");var xr=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Tr=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},X3r;(function(t){t.FREE="free",t.DEV="dev",t.UNLIMITED="unlimited"})(X3r||(X3r={}));var EKe;(function(t){t.FAILED="failed",t.SUCCEED="succeed",t.RUNNING="running"})(EKe||(EKe={}));var i5=class{static{Ce(this,"EncryptedSolution")}iv;ephemPublicKey;ciphertext;mac;constructor(t,e,r,n){this.iv=t,this.ephemPublicKey=e,this.ciphertext=r,this.mac=n}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],i5.prototype,"iv",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],i5.prototype,"ephemPublicKey",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],i5.prototype,"ciphertext",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],i5.prototype,"mac",void 0);var Xn=class{static{Ce(this,"Signature")}v;r;s;constructor(t,e,r){this.v=t,this.r=e,this.s=r}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Xn.prototype,"v",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],Xn.prototype,"r",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],Xn.prototype,"s",void 0);var Qx=class{static{Ce(this,"ExecutionOutputMeteringLast")}memoryGrowDelta;call;frame;steps;constructor(t,e,r,n){this.call=t,this.frame=e,this.steps=r,this.memoryGrowDelta=n}};xr([(0,Ye.IsNumber)(),(0,Ye.IsOptional)(),Tr("design:type",Number)],Qx.prototype,"memoryGrowDelta",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],Qx.prototype,"call",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],Qx.prototype,"frame",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],Qx.prototype,"steps",void 0);var eT=class{static{Ce(this,"ExecutionOutputMeteringLimits")}call;frame;gas;memory;constructor(t,e,r,n){this.call=t,this.frame=e,this.gas=r,this.memory=n}};xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],eT.prototype,"call",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],eT.prototype,"frame",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],eT.prototype,"gas",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],eT.prototype,"memory",void 0);var vk=class{static{Ce(this,"ExecutionOutputMeteringPeak")}call;frame;memory;constructor(t,e,r){this.call=t,this.frame=e,this.memory=r}};xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],vk.prototype,"call",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],vk.prototype,"frame",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],vk.prototype,"memory",void 0);var SKe=class{static{Ce(this,"ExecutionOutputMeteringVersions")}protocol;constructor(t){this.protocol=t}};xr([(0,Ye.IsString)(),(0,Ye.IsNotEmpty)(),Tr("design:type",String)],SKe.prototype,"protocol",void 0);var a5=class{static{Ce(this,"ExecutionOutputMetering")}last;limits;peak;versions;constructor(t,e,r,n){this.last=t,this.limits=e,this.peak=r,this.versions=n}};xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>Qx),Tr("design:type",Qx)],a5.prototype,"last",void 0);xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>eT),Tr("design:type",eT)],a5.prototype,"limits",void 0);xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>vk),Tr("design:type",vk)],a5.prototype,"peak",void 0);xr([(0,Ye.IsOptional)(),(0,Ye.ValidateNested)(),(0,o5.Type)(()=>SKe),Tr("design:type",SKe)],a5.prototype,"versions",void 0);var tT=class{static{Ce(this,"ClearTextSolution")}senderAddress;status;output;metering;constructor(t,e,r,n){this.senderAddress=t,this.status=e,this.output=r,this.metering=n}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsEthereumAddress)(),Tr("design:type",String)],tT.prototype,"senderAddress",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsEnum)(EKe),Tr("design:type",String)],tT.prototype,"status",void 0);xr([(0,Ye.IsOptional)(),(0,Ye.IsString)(),Tr("design:type",String)],tT.prototype,"output",void 0);xr([(0,Ye.IsOptional)(),(0,Ye.ValidateNested)(),(0,o5.Type)(()=>a5),Tr("design:type",a5)],tT.prototype,"metering",void 0);var qKe=class{static{Ce(this,"ClearTextSolutionSigned")}signature;clearTextSolution;constructor(t,e){this.signature=t,this.clearTextSolution=e}};xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>Xn),Tr("design:type",Xn)],qKe.prototype,"signature",void 0);xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>tT),Tr("design:type",tT)],qKe.prototype,"clearTextSolution",void 0);var E2=class{static{Ce(this,"WorkersParams")}blockNumber;selectionStrategy;setNodes;constructor(t,e,r){this.blockNumber=t,this.selectionStrategy=e,this.setNodes=r}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.Min)(0),Tr("design:type",Number)],E2.prototype,"blockNumber",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],E2.prototype,"selectionStrategy",void 0);xr([(0,Ye.ArrayNotEmpty)(),(0,Ye.IsNotEmpty)({each:!0}),(0,Ye.IsEthereumAddress)({each:!0}),Tr("design:type",Array)],E2.prototype,"setNodes",void 0);var xm=class{static{Ce(this,"TaskExecutionLimitsParams")}gas;call;frame;memory;constructor(t,e,r,n){this.gas=t,this.call=e,this.frame=r,this.memory=n}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],xm.prototype,"gas",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],xm.prototype,"call",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],xm.prototype,"frame",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],xm.prototype,"memory",void 0);var Tm=class{static{Ce(this,"EconParams")}reward;requiredSolutions;totalSolutions;executionTimeout;constructor(t,e,r,n){this.reward=t,this.requiredSolutions=e,this.totalSolutions=r,this.executionTimeout=n}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],Tm.prototype,"reward",void 0);xr([(0,Ye.Min)(1),(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Tm.prototype,"requiredSolutions",void 0);xr([(0,Ye.Min)(1),(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Tm.prototype,"totalSolutions",void 0);xr([(0,Ye.Min)(1),(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Tm.prototype,"executionTimeout",void 0);var Ape=class{static{Ce(this,"TotalTransferredBytes")}request;response;constructor(t,e){this.request=t,this.response=e}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Ape.prototype,"request",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Ape.prototype,"response",void 0);var Q3r;(function(t){t.MINIO="minio",t.S3="s3"})(Q3r||(Q3r={}));var rT=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},nT=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},iT=class{static{Ce(this,"BaseMessage")}msgType;messageId;payload;msgTimestamp=Date.now();constructor(t,e){this.msgType=this.constructor.name,this.messageId=e||Xua(),this.payload=t}};rT([(0,jf.IsNotEmpty)(),(0,jf.IsString)(),nT("design:type",String)],iT.prototype,"msgType",void 0);rT([(0,jf.IsOptional)(),(0,jf.IsUUID)(),nT("design:type",String)],iT.prototype,"messageId",void 0);rT([(0,jf.ValidateNested)(),nT("design:type",Object)],iT.prototype,"payload",void 0);rT([s5(),nT("design:type",Number)],iT.prototype,"msgTimestamp",void 0);var Qua=class extends iT{static{Ce(this,"FailedMessage")}error;constructor(t,e,r){super(e,r),this.error=t}};rT([(0,jf.IsNotEmpty)(),(0,jf.IsString)(),nT("design:type",String)],Qua.prototype,"error",void 0);var e0a=class extends iT{static{Ce(this,"InvalidMessage")}error;constructor(t,e,r){super(e,r),this.error=t}};rT([(0,jf.IsNotEmpty)(),(0,jf.IsString)(),nT("design:type",String)],e0a.prototype,"error",void 0);var xpe;(function(t){t.EVM="evm",t.AVALANCHE="avalanche"})(xpe||(xpe={}));var $t=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Bt=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},Om;(function(t){t.TASK_CREATED="task_created",t.API_TASK_CREATED="api_task_created",t.NODE_OUTCOME="node_outcome",t.TASK_SOLVED="task_solved",t.API_OUTCOME="api_outcome",t.SOLUTIONS_REVEALED="solutions_revealed",t.EXECUTION_COMPLETED="execution_completed",t.ADJUDICATION_OUTCOME="adjudication_outcome"})(Om||(Om={}));var B1=class{static{Ce(this,"BaseTranscriptRecord")}type;executionId;message;msgHash;signature;sequencerAddress;timestamp;constructor(t,e,r,n,i,a,s){this.type=t,this.executionId=e,this.message=n,this.msgHash=r,this.signature=i,this.timestamp=s,this.sequencerAddress=a}};$t([(0,je.IsNotEmpty)(),(0,je.IsEnum)(Om),Bt("design:type",String)],B1.prototype,"type",void 0);$t([(0,je.IsUUID)(),(0,je.IsNotEmpty)(),Bt("design:type",String)],B1.prototype,"executionId",void 0);$t([(0,je.ValidateNested)(),Bt("design:type",Object)],B1.prototype,"message",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],B1.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],B1.prototype,"signature",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],B1.prototype,"sequencerAddress",void 0);$t([s5(),(0,je.IsNotEmpty)(),Bt("design:type",Number)],B1.prototype,"timestamp",void 0);var ca=class{static{Ce(this,"TaskCreatedMessageParams")}type="dispatch_task";taskId;executionId;msgHash;signature;limits;econParams;workers;dispatcherTimestamp;taskRequesterTimestamp;ledgerName;blockHash;blockNumber;chainId;nodeRegistryContractAddress;taskRegistryContractAddress;taskAuthorizationContractAddress;taskRequesterAddress;taskPath;taskVersion;signedRequestBody;senderAddress;input;constructor(t,e,r,n,i,a,s,o,u,f,c,d,h,p,m,y,b,_,E,A,x,q){this.taskId=t,this.executionId=e,this.msgHash=r,this.signature=n,this.limits=i,this.econParams=a,this.workers=s,this.dispatcherTimestamp=o,this.taskRequesterTimestamp=u,this.ledgerName=f,this.blockHash=c,this.blockNumber=d,this.chainId=h,this.nodeRegistryContractAddress=p,this.taskRegistryContractAddress=m,this.taskAuthorizationContractAddress=y,this.taskRequesterAddress=b,this.taskPath=_,this.taskVersion=E,this.signedRequestBody=q,this.senderAddress=A,this.input=x}};$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],ca.prototype,"taskId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsUUID)(),Bt("design:type",String)],ca.prototype,"executionId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],ca.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],ca.prototype,"signature",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>xm),Bt("design:type",xm)],ca.prototype,"limits",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Tm),Bt("design:type",Tm)],ca.prototype,"econParams",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>E2),Bt("design:type",E2)],ca.prototype,"workers",void 0);$t([(0,je.IsNotEmpty)(),RKe(),Bt("design:type",Number)],ca.prototype,"dispatcherTimestamp",void 0);$t([(0,je.IsNotEmpty)(),RKe(),Bt("design:type",Number)],ca.prototype,"taskRequesterTimestamp",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEnum)(xpe),Bt("design:type",String)],ca.prototype,"ledgerName",void 0);$t([(0,je.IsNotEmpty)(),Bt("design:type",String)],ca.prototype,"blockHash",void 0);$t([(0,je.IsNotEmpty)(),(0,je.Min)(0),Bt("design:type",Number)],ca.prototype,"blockNumber",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],ca.prototype,"chainId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"nodeRegistryContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"taskRegistryContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"taskAuthorizationContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"taskRequesterAddress",void 0);$t([(0,je.IsOptional)(),Bt("design:type",String)],ca.prototype,"taskPath",void 0);$t([(0,je.IsOptional)(),(0,je.Min)(0),Bt("design:type",Number)],ca.prototype,"taskVersion",void 0);$t([(0,je.IsOptional)(),Bt("design:type",Object)],ca.prototype,"signedRequestBody",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"senderAddress",void 0);$t([(0,je.IsOptional)(),(0,je.Allow)(),Bt("design:type",String)],ca.prototype,"input",void 0);var To=class{static{Ce(this,"APITaskCreatedMessageParams")}type="dispatch_task";taskId;executionId;msgHash;signature;ledgerName;blockHash;blockNumber;chainId;taskRegistryContractAddress;taskAuthorizationContractAddress;taskRequesterAddress;taskPath;taskVersion;senderAddress;executionTimeout;input;constructor(t,e,r,n,i,a,s,o,u,f,c,d,h,p,m,y){this.taskId=t,this.executionId=e,this.msgHash=r,this.signature=n,this.executionTimeout=m,this.ledgerName=a,this.blockHash=s,this.blockNumber=o,this.chainId=u,this.taskRegistryContractAddress=f,this.taskAuthorizationContractAddress=c,this.taskRequesterAddress=d,this.taskPath=h,this.taskVersion=p,this.senderAddress=i,this.input=y}};$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],To.prototype,"taskId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsUUID)(),Bt("design:type",String)],To.prototype,"executionId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],To.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],To.prototype,"signature",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEnum)(xpe),Bt("design:type",String)],To.prototype,"ledgerName",void 0);$t([(0,je.IsNotEmpty)(),Bt("design:type",String)],To.prototype,"blockHash",void 0);$t([(0,je.IsNotEmpty)(),(0,je.Min)(0),Bt("design:type",Number)],To.prototype,"blockNumber",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],To.prototype,"chainId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],To.prototype,"taskRegistryContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],To.prototype,"taskAuthorizationContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],To.prototype,"taskRequesterAddress",void 0);$t([(0,je.IsOptional)(),Bt("design:type",String)],To.prototype,"taskPath",void 0);$t([(0,je.IsOptional)(),(0,je.Min)(0),Bt("design:type",Number)],To.prototype,"taskVersion",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],To.prototype,"senderAddress",void 0);$t([(0,je.IsNumber)(),Bt("design:type",Number)],To.prototype,"executionTimeout",void 0);$t([(0,je.IsOptional)(),(0,je.Allow)(),Bt("design:type",String)],To.prototype,"input",void 0);var W_=class{static{Ce(this,"NodeOutcomeMessageParams")}executionId;senderAddress;encryptedSolution;msgHash;signature;constructor(t,e,r,n,i){this.executionId=t,this.signature=i,this.encryptedSolution=r,this.senderAddress=e,this.msgHash=n}};$t([(0,je.IsUUID)(),(0,je.IsNotEmpty)(),Bt("design:type",String)],W_.prototype,"executionId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],W_.prototype,"senderAddress",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>i5),Bt("design:type",i5)],W_.prototype,"encryptedSolution",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],W_.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],W_.prototype,"signature",void 0);var S2=class{static{Ce(this,"ApiOutcomeMessageParams")}executionId;senderAddress;bodyResponse;msgHash;signature;tlsHandshakeHash;status;totalTransferredBytes;constructor(t,e,r,n,i,a,s,o){this.executionId=t,this.signature=i,this.bodyResponse=r,this.tlsHandshakeHash=a,this.senderAddress=e,this.msgHash=n,this.status=s,this.totalTransferredBytes=o}};$t([(0,je.IsUUID)(),(0,je.IsNotEmpty)(),Bt("design:type",String)],S2.prototype,"executionId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],S2.prototype,"senderAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],S2.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],S2.prototype,"signature",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],S2.prototype,"tlsHandshakeHash",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],S2.prototype,"status",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Ape),Bt("design:type",Ape)],S2.prototype,"totalTransferredBytes",void 0);var er=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},tr=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},u5=class{static{Ce(this,"DispatchTaskPayload")}executionId;msgHash;signature;limits;econParams;workers;senderAddress;input;constructor(t,e,r,n,i,a,s,o){this.executionId=t,this.msgHash=e,this.signature=r,this.limits=n,this.econParams=i,this.workers=a,this.senderAddress=s,this.input=o}};er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],u5.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],u5.prototype,"msgHash",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],u5.prototype,"signature",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>xm),tr("design:type",xm)],u5.prototype,"limits",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Tm),tr("design:type",Tm)],u5.prototype,"econParams",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>E2),tr("design:type",E2)],u5.prototype,"workers",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],u5.prototype,"senderAddress",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],u5.prototype,"input",void 0);var Ipe=class{static{Ce(this,"UnsignedDispatchTaskPayload")}executionId;limits;econParams;workers;input;constructor(t,e,r,n,i){this.executionId=t,this.limits=e,this.econParams=r,this.workers=n,this.input=i}};er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],Ipe.prototype,"executionId",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>xm),tr("design:type",xm)],Ipe.prototype,"limits",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Tm),tr("design:type",Tm)],Ipe.prototype,"econParams",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>E2),tr("design:type",E2)],Ipe.prototype,"workers",void 0);var t0a=class extends B1{static{Ce(this,"NodeOutcomePayload")}message;constructor(t,e,r,n,i,a){super(Om.NODE_OUTCOME,t,e,r,n,i,a),this.message=r,this.executionId=t,this.msgHash=e,this.signature=n,this.timestamp=a,this.sequencerAddress=i,this.message=r}};er([(0,at.ValidateNested)(),(0,oo.Type)(()=>W_),tr("design:type",W_)],t0a.prototype,"message",void 0);var r0a=class extends B1{static{Ce(this,"ApiOutcomePayload")}message;constructor(t,e,r,n,i,a){super(Om.API_OUTCOME,t,e,r,n,i,a),this.message=r,this.executionId=t,this.msgHash=e,this.signature=n,this.timestamp=a,this.sequencerAddress=i}};er([(0,at.ValidateNested)(),(0,oo.Type)(()=>S2),tr("design:type",S2)],r0a.prototype,"message",void 0);var G_=class{static{Ce(this,"ExecutionCompletedPayload")}type;executionId;transcriptHash;status;signature;signerAddress;timestamp;constructor(t,e,r,n,i,a){this.type=Om.EXECUTION_COMPLETED,this.executionId=t,this.transcriptHash=e,this.status=r,this.signature=n,this.signerAddress=i,this.timestamp=a}};er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],G_.prototype,"type",void 0);er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],G_.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],G_.prototype,"transcriptHash",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEnum)(wpe),tr("design:type",String)],G_.prototype,"status",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],G_.prototype,"signature",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],G_.prototype,"signerAddress",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],G_.prototype,"timestamp",void 0);var w2=class{static{Ce(this,"AdjudicationOutcomePayload")}type;executionId;status;signature;senderAddress;timestamp;output;metering;error;constructor(t,e,r,n,i,a,s,o){this.type=Om.ADJUDICATION_OUTCOME,this.executionId=t,this.status=e,this.signature=r,this.senderAddress=n,this.output=a,this.metering=s,this.timestamp=i,this.error=o}};er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],w2.prototype,"type",void 0);er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],w2.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEnum)(wpe),tr("design:type",String)],w2.prototype,"status",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],w2.prototype,"signature",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],w2.prototype,"senderAddress",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],w2.prototype,"timestamp",void 0);er([(0,at.IsOptional)(),(0,at.IsString)(),tr("design:type",String)],w2.prototype,"output",void 0);er([(0,at.IsOptional)(),(0,at.ValidateNested)(),(0,oo.Type)(()=>a5),tr("design:type",a5)],w2.prototype,"metering",void 0);er([(0,at.IsOptional)(),(0,at.IsString)(),tr("design:type",String)],w2.prototype,"error",void 0);var aT=class{static{Ce(this,"SolutionsRevealedPayload")}type;executionId;signature;clearTextSolutions;sequencerAddress;msgHash;timestamp;constructor(t,e,r,n,i,a){this.type=Om.SOLUTIONS_REVEALED,this.executionId=t,this.signature=e,this.clearTextSolutions=r,this.sequencerAddress=n,this.msgHash=i,this.timestamp=a}};er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],aT.prototype,"executionId",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],aT.prototype,"signature",void 0);er([(0,at.ValidateNested)({each:!0}),(0,oo.Type)(()=>qKe),tr("design:type",Array)],aT.prototype,"clearTextSolutions",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEthereumAddress)(),tr("design:type",String)],aT.prototype,"sequencerAddress",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],aT.prototype,"msgHash",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],aT.prototype,"timestamp",void 0);var K_=class extends B1{static{Ce(this,"TaskCreatedPayload")}executionId;msgHash;message;signature;publicKey;sequencerAddress;timestamp;constructor(t,e,r,n,i,a,s){super(Om.TASK_CREATED,t,e,r,n,a,s),this.message=r,this.executionId=t,this.msgHash=e,this.signature=n,this.timestamp=s,this.sequencerAddress=a,this.publicKey=i,this.message=r}};er([(0,at.IsNotEmpty)(),(0,at.IsUUID)(),tr("design:type",String)],K_.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],K_.prototype,"msgHash",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>ca),tr("design:type",ca)],K_.prototype,"message",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],K_.prototype,"signature",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],K_.prototype,"publicKey",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEthereumAddress)(),tr("design:type",String)],K_.prototype,"sequencerAddress",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],K_.prototype,"timestamp",void 0);var Y_=class extends B1{static{Ce(this,"APITaskCreatedPayload")}executionId;msgHash;message;signature;publicKey;sequencerAddress;timestamp;constructor(t,e,r,n,i,a,s){super(Om.API_TASK_CREATED,t,e,r,n,a,s),this.message=r,this.executionId=t,this.msgHash=e,this.signature=n,this.timestamp=s,this.sequencerAddress=a,this.publicKey=i,this.message=r}};er([(0,at.IsNotEmpty)(),(0,at.IsUUID)(),tr("design:type",String)],Y_.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],Y_.prototype,"msgHash",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>To),tr("design:type",To)],Y_.prototype,"message",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],Y_.prototype,"signature",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],Y_.prototype,"publicKey",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEthereumAddress)(),tr("design:type",String)],Y_.prototype,"sequencerAddress",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],Y_.prototype,"timestamp",void 0);var _k=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Ek=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},Sk=class{static{Ce(this,"ComputedOutcomePayload")}executionId;msgHash;signature;senderAddress;encryptedSolution;constructor(t,e,r,n,i){this.executionId=t,this.msgHash=e,this.signature=r,this.senderAddress=n,this.encryptedSolution=i}};_k([(0,kl.IsUUID)(),(0,kl.IsNotEmpty)(),Ek("design:type",String)],Sk.prototype,"executionId",void 0);_k([(0,kl.IsNotEmpty)(),(0,kl.IsHash)("sha256"),Ek("design:type",String)],Sk.prototype,"msgHash",void 0);_k([(0,kl.ValidateNested)(),(0,NKe.Type)(()=>Xn),Ek("design:type",Xn)],Sk.prototype,"signature",void 0);_k([(0,kl.IsNotEmpty)(),(0,kl.IsEthereumAddress)(),Ek("design:type",String)],Sk.prototype,"senderAddress",void 0);_k([(0,kl.ValidateNested)(),(0,NKe.Type)(()=>i5),Ek("design:type",i5)],Sk.prototype,"encryptedSolution",void 0);var qn=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Nn=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},n0a=class{static{Ce(this,"PushTaskPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],n0a.prototype,"taskId",void 0);var i0a=class{static{Ce(this,"PullTaskPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],i0a.prototype,"taskId",void 0);var DKe=class{static{Ce(this,"CheckpointTaskPayload")}input;checkpoint;taskId;constructor(t,e,r){this.taskId=t,this.checkpoint=e,this.input=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],DKe.prototype,"input",void 0);qn([(0,wt.IsNotEmpty)(),Nn("design:type",Object)],DKe.prototype,"checkpoint",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],DKe.prototype,"taskId",void 0);var $vr=class{static{Ce(this,"ListTaskCheckpointPayload")}input;taskId;constructor(t,e){this.taskId=t,this.input=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],$vr.prototype,"input",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],$vr.prototype,"taskId",void 0);var kKe=class{static{Ce(this,"ExecuteTaskPayload")}executionId;input;taskId;constructor(t,e,r){this.taskId=t,this.executionId=e,this.input=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],kKe.prototype,"executionId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],kKe.prototype,"input",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],kKe.prototype,"taskId",void 0);var Bvr=class{static{Ce(this,"InstrumentTaskPayload")}instrumentationId;taskId;constructor(t,e){this.taskId=t,this.instrumentationId=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],Bvr.prototype,"instrumentationId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Bvr.prototype,"taskId",void 0);var a0a=class{static{Ce(this,"TaskPushedPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],a0a.prototype,"taskId",void 0);var s0a=class{static{Ce(this,"TaskPulledPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],s0a.prototype,"taskId",void 0);var o0a=class{static{Ce(this,"TaskPulledFailedPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],o0a.prototype,"taskId",void 0);var Fvr=class{static{Ce(this,"TaskCheckpointedPayload")}checkpointHash;taskId;constructor(t,e){this.taskId=t,this.checkpointHash=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Fvr.prototype,"checkpointHash",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Fvr.prototype,"taskId",void 0);var u0a=class{static{Ce(this,"TaskCheckpointedFailedPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],u0a.prototype,"taskId",void 0);var Lvr=class{static{Ce(this,"TaskCheckpointsListedPayload")}checkpointCount;taskId;constructor(t,e){this.taskId=t,this.checkpointCount=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsNumber)(),Nn("design:type",Number)],Lvr.prototype,"checkpointCount",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Lvr.prototype,"taskId",void 0);var f0a=class{static{Ce(this,"TaskCheckpointsListFailedPayload")}taskId;constructor(t,e){this.taskId=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],f0a.prototype,"taskId",void 0);var $Ke=class{static{Ce(this,"TaskExecutedPayload")}executionId;output;taskId;constructor(t,e,r){this.taskId=t,this.executionId=e,this.output=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],$Ke.prototype,"executionId",void 0);qn([(0,wt.IsOptional)(),(0,wt.IsString)(),Nn("design:type",String)],$Ke.prototype,"output",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],$Ke.prototype,"taskId",void 0);var jvr=class{static{Ce(this,"TaskExecutionFailedPayload")}executionId;taskId;constructor(t,e,r){this.taskId=e,this.executionId=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],jvr.prototype,"executionId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],jvr.prototype,"taskId",void 0);var Mpe=class{static{Ce(this,"TaskInstrumentedPayload")}instrumentationId;output;taskId;instrumentedTaskId;constructor(t,e,r,n){this.taskId=t,this.instrumentationId=e,this.output=n,this.instrumentedTaskId=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],Mpe.prototype,"instrumentationId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Mpe.prototype,"output",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Mpe.prototype,"taskId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Mpe.prototype,"instrumentedTaskId",void 0);var Uvr=class{static{Ce(this,"TaskInstrumentedFailedPayload")}instrumentationId;taskId;constructor(t,e,r){this.taskId=e,this.instrumentationId=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],Uvr.prototype,"instrumentationId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Uvr.prototype,"taskId",void 0);var evr;(function(t){t.ACTIVE="active",t.INACTIVE="inactive"})(evr||(evr={}));var s3s=Vvr.default.default;async function BKe(t,e,r,n,i,a,s){let o={},u=0,f=0,c={...e.headers,"x-service-name":"truebit-api-adapter"},d=dKe.create({headers:{Connection:"keep-alive"},httpsAgent:new Nua.Agent({keepAlive:!0}).on("keylog",(h,p)=>{let m=p.getSession(),y=Buffer.from(m).toString("hex").toUpperCase();o={tlsCert:qTe(p.getPeerCertificate(!0)),localCertificate:qTe(p.getCertificate()),ephemeral:p.getEphemeralKeyInfo(),cipher:p.getCipher(),session:y,ticket:p.getTLSTicket(),localAddress:p.localAddress,sharedSigAlgs:p.getSharedSigalgs(),remoteAddress:p.remoteAddress,protocol:p.getProtocol()}}),maxContentLength:1/0,maxBodyLength:1/0});d.interceptors.request.use(h=>{let p=h.data?JSON.stringify(h.data):"";return u=(h.url?.length||0)+(p.length||0)+JSON.stringify(h.headers).length,h}),d.interceptors.response.use(h=>(f=JSON.stringify(h.data).length+JSON.stringify(h.headers).length,h));try{let h;if(t=="cli"||Hvr(e.url))switch(e.method.toLowerCase()){case"get":h=await d.get(e.url,{headers:c,timeout:r});break;case"patch":h=await d.patch(e.url,e.body,{headers:c,timeout:r});break;case"post":h=await d.post(e.url,e.body,{headers:c,timeout:r});break;case"put":h=await d.put(e.url,e.body,{headers:c,timeout:r});break;case"delete":h=await d.delete(e.url,{headers:c,timeout:r});break;default:throw new Error("Unsupported HTTP method")}else{let p=new tvr.default;p.append("taskId",t),s&&p.append("executionId",s),n&&p.append("namespace",n),i&&p.append("taskname",i),p.append("url",e.url),p.append("method",e.method.toLowerCase()),p.append("headers",JSON.stringify(c)),p.append("body",typeof e.body=="object"?JSON.stringify(e.body):e.body??void 0),p.append("timeout",r.toString()),a&&p.append("manifest",Buffer.from(a),{filename:"manifest.json",contentType:"application/json"}),h=await dKe.post(`${process.env.NITRO_URL}/callAPI`,p,{timeout:12e4,headers:{...p.getHeaders()}})}return[h.data,JSON.stringify(o),_2.SUCCEED,u,f]}catch(h){let p,m;return h.response?.data?m=JSON.stringify(h.response.data):m=h.message,dKe.isAxiosError(h)?p=h.response||{data:m,status:500,statusText:"",headers:{},config:{headers:{}}}:p={data:m,status:500,statusText:"",headers:{},config:{headers:{}}},[p.data,JSON.stringify(o),_2.FAILED,u,f]}}Ce(BKe,"handleAxiosCall");function Hvr(t){let e=new Set(["localhost","127.0.0.1","hardhat-node","n8n-node","dispatcher"]),r=!!process.env.ENABLE_AXIOS_LOCAL_CALL;try{let n=new URL(t).hostname;return e.has(n)&&r}catch{return!1}}Ce(Hvr,"isAxiosLocalCall");function Gvr(t){let e=t.split(".").map(Number);return e.length!==4||e.some(r=>Number.isNaN(r)||r<0||r>255)?!1:e[0]===10||e[0]===172&&e[1]>=16&&e[1]<=31||e[0]===192&&e[1]===168||e[0]===127||e[0]===169&&e[1]===254}Ce(Gvr,"isPrivateIP");function Kvr(t){if(["local","testnet","staging"].includes(process.env.TRUEBIT_ENV))return[!0,""];try{let e=new URL(t),r=e.hostname;if(!["http:","https:"].includes(e.protocol))return[!1,"Only HTTP and HTTPS protocols are allowed"];if(l0a(r)){if(Gvr(r))return[!1,"Internal IP addresses are not allowed"]}else{let n=[".local",".internal",".cluster.local","localhost","kubernetes","kubernetes.default","kubernetes.default.svc","kubernetes.default.svc.cluster.local"],i=r.toLowerCase();for(let a of n)if(i===a||i.endsWith(a))return[!1,"Internal domains are not allowed"]}return[!0,""]}catch{return[!1,"Invalid URL format"]}}Ce(Kvr,"validateExternalUrl");function FKe(t){let e=t.servers;if(e&&e.length>0){let r=e[0],n=r.url;return r.variables&&Object.keys(r.variables).forEach(i=>{let a=r.variables[i],s=a.default||a.enum?.[0];if(s===void 0)throw new Error(`No default value found for variable ${i}`);n=n.replace(`{${i}}`,s)}),n}else throw new Error("No servers defined in OpenAPI document")}Ce(FKe,"getBaseURLFromOpenAPI");function Yvr(t,e,r){let n=t.paths?.[e];if(!n)return null;let i=n[r.toLowerCase()];return i&&i.operationId||null}Ce(Yvr,"findOperationId");function Jvr(t,e,r){let n=e;r&&Object.entries(r).forEach(([s,o])=>{n=n.replace(`{${s}}`,encodeURIComponent(String(o)))});let i=t.endsWith("/")?t.slice(0,-1):t,a=n.startsWith("/")?n:`/${n}`;return`${i}${a}`}Ce(Jvr,"buildUrlWithPathParams");function Ppe(t,e,r){let n=new Map,i=t.paths?.[e];if(!i)return n;let a=i.parameters||[],s=i[r.toLowerCase()]?.parameters||[],o=[...a,...s];for(let f of o)"name"in f&&"in"in f&&n.set(f.name,f.in);let u=e.match(/\{([^}]+)\}/g);return u&&u.forEach(f=>{let c=f.slice(1,-1);n.has(c)||n.set(c,"path")}),n}Ce(Ppe,"categorizeParameters");function Zvr(t,e,r,n){if(!n||Object.keys(n).length===0)return"";let i=Ppe(t,e,r),a=Object.entries(n).filter(([s])=>{let o=i.get(s);return o==="query"||!o}).map(([s,o])=>Array.isArray(o)?o.map(u=>`${encodeURIComponent(s)}=${encodeURIComponent(String(u))}`).join("&"):`${encodeURIComponent(s)}=${encodeURIComponent(String(o))}`).join("&");return a?`?${a}`:""}Ce(Zvr,"buildQueryString");function Xvr(t,e,r,n){let i={};if(!n||Object.keys(n).length===0)return i;let a=Ppe(t,e,r);for(let[s,o]of Object.entries(n))a.get(s)==="header"&&(i[s]=String(o));return i}Ce(Xvr,"extractHeaderParams");function Qvr(t,e,r,n){if(!n||Object.keys(n).length===0)return null;let i=Ppe(t,e,r),a=[];for(let[s,o]of Object.entries(n))i.get(s)==="cookie"&&a.push(`${encodeURIComponent(s)}=${encodeURIComponent(String(o))}`);return a.length>0?a.join("; "):null}Ce(Qvr,"extractCookieParams");async function Rpe(t,e){let r=await zvr(t),n=Yvr(r,e.path,e.method);if(n){let i=e.body;if(typeof e.body=="string"&&e.body.includes("=")){let u=new URLSearchParams(e.body);i=Object.fromEntries(u.entries())}let a={spec:r,operationId:n,parameters:e.params||{},requestBody:i,securities:e.securities,server:e.server,serverVariables:e.serverVariables,responseContentType:e.responseContentType};e.requestContentType&&(a.requestContentType=e.requestContentType);let s=Wvr.default.buildRequest(a),o={...s.headers,...e.headers};return{url:s.url,method:s.method.toUpperCase(),headers:o,body:s.body}}else{let i=FKe(r),a=Jvr(i,e.path,e.params),s=Zvr(r,e.path,e.method,e.params),o=Xvr(r,e.path,e.method,e.params),u=Qvr(r,e.path,e.method,e.params),f=e.requestContentType||"application/json",c={...o,...e.headers};e.body&&(c["Content-Type"]=f),e.responseContentType&&(c.Accept=e.responseContentType),u&&(c.Cookie=c.Cookie?`${c.Cookie}; ${u}`:u);let d;return e.body&&(typeof e.body=="string"?d=e.body:f==="application/x-www-form-urlencoded"?d=new URLSearchParams(e.body).toString():d=JSON.stringify(e.body)),{url:`${a}${s}`,method:e.method.toUpperCase(),headers:c,body:d}}}Ce(Rpe,"createRequest");async function LKe(t,e){try{let r=await zvr(t),n=FKe(r),[i,a]=Kvr(n);return i?(await Rpe(t,e),[n,"",_2.SUCCEED]):(console.warn(`Manifest-based call blocked: ${a} - baseURL: ${n}`),["",`Security: ${a}`,_2.FAILED])}catch(r){return console.log(r),["",r,_2.FAILED]}}Ce(LKe,"handleEnforcerManifestCheck");async function jKe(t){try{let e=JSON.parse(t);return[{path:e.path.toString(),method:e.method.toString(),body:e.body,params:e.params,headers:e.headers||{}},"",_2.SUCCEED]}catch(e){return console.error("Invalid JSON format:",e),[null,"Api_Adapter create request input format",_2.FAILED]}}Ce(jKe,"createRequestInput");var e_r=Ce((t,e,r)=>Zua(t,e).authHeaders(r),"handleGetAuthHeaders");import F1 from"chalk";var UKe=async(t,e,r,n)=>{let i="",a=t_r.readFileSync(e,"utf8"),s=JSON.parse(a).input,o=JSON.parse(a).executionTimeout,[u,f,c]=await jKe(JSON.stringify(s));if(i+=`${F1.cyanBright(`
501
+ ${t.config?.method} - ${t.config?.url}`:t.message:t.message};function A0(t,e){if(t!==t.toLowerCase())throw new Error(`${e} must be lowercase.`)}function gi(t,e){switch(e){case zt.ETH:return K9.create(null,ph.EVM,t,zt.ETH,Dn("privateKey"));case zt.AVAX:return K9.create(null,ph.EVM,t,zt.AVAX,Dn("privateKey"));default:throw new Error(`Unsupported blockchain: ${e}`)}}function uq(t){if(!CEn.isAddress(t)||t.length!==42||!t.startsWith("0x"))throw new Error("Must be a valid ethereum address. (ENS not supported yet)")}async function ZG(){try{return await OEn({onlyHttps:!0})}catch{return"unknown"}}function us(){return new Date().toUTCString().replace(",","")}function uIt(t,e,r,n,i){let a=Dn("address");return{distinct_id:a,user_ip:r,date_time:us(),os_version:n,node_version:process.version,cli_version:i,taskId:t,input:e,wallet_address:a}}function fIt(t,e,r){let n=Dn("address");return{distinct_id:n,user_ip:t,date_time:us(),os_version:e,node_version:process.version,cli_version:r,wallet_address:n}}function lIt(t,e,r,n,i,a,s){let o=Dn("address");return{distinct_id:o,user_ip:i,date_time:us(),os_version:a,node_version:process.version,cli_version:s,taskId:t,task_name:e,namespace:r,label:n,wallet_address:o}}function cIt(t,e,r,n,i){let a=Dn("address");return{distinct_id:a,user_ip:r,date_time:us(),os_version:n,node_version:process.version,cli_version:i,manifest:t,authType:e,wallet_address:a}}function dIt(t,e,r,n){let i=Dn("address");return{distinct_id:i,user_ip:e,date_time:us(),os_version:r,node_version:process.version,cli_version:n,manifest:t,wallet_address:i}}function pIt(t,e,r,n,i,a,s){let o=Dn("address");return{distinct_id:o,user_ip:i,date_time:us(),os_version:a,node_version:process.version,cli_version:s,taskId:t,namespace:e,taskname:r,authType:n,wallet_address:o}}function Iv(t,e,r,n,i){let a=Dn("address"),s={distinct_id:a,user_ip:e,date_time:us(),os_version:r,node_version:process.version,cli_version:n,namespace:t,wallet_address:a};return i&&(s.address_to=i),s}function fq(t,e,r,n,i,a,s){let o=Dn("address");return{distinct_id:o,user_ip:r,date_time:us(),os_version:n,node_version:process.version,cli_version:i,namespace:t,wallet_address:o,taskname:e,label:a,version:s}}function XG(t,e,r,n){let i=Dn("address");return{distinct_id:i,user_ip:e,date_time:us(),os_version:r,node_version:process.version,cli_version:n,api_key:t,wallet_address:i}}function hIt(t,e,r,n,i){let a=Dn("address");return{distinct_id:a,user_ip:r,date_time:us(),os_version:n,node_version:process.version,cli_version:i,namespace:t,address_check:e,wallet_address:a}}function Mu(){let t="production";return process.env.TRUEBIT_ENV==="local"?t="local":process.env.TRUEBIT_ENV==="staging"?t="staging":process.env.TRUEBIT_ENV==="testnet"&&(t="testnet"),t}ng();w0();u6();function xc(t){let e=S0(),r=e!==null,n=0;switch(!r||r&&(!e.privateKey||!e.address)?n=1:n=2,n){case 1:console.error(Pi.USER_NO_REGISTERED),process.exit(1);break;case 2:{t=Yf.createSignedBody(t,e.privateKey,e.address);break}}return t}async function yIt(t,e){if(!nE.existsSync(t))throw"Invalid source code path";let n=nE.readdirSync(t);if(n.length===0)throw"No files found in directory";let i=new mIt.default;for(let f of n){let c=t+`/${f}`,d=nE.readFileSync(c),h=IEn.basename(c);i.append("files",d,h)}i.append("lang",e);let a={files:n,lang:e},s=xc(a),o=await Fh();return i.append("walletAddress",s.walletAddress),i.append("signature",JSON.stringify(s.signature)),i.append("fmpayload",JSON.stringify(a)),(await o.post("api/filesystem/pushLocal",i,{headers:{...i.getHeaders()}}).catch(f=>{Ac(f)})).data}var RTe=async(t,e)=>{let n=`./tmp.${MEn()}`;try{gf.mkdirSync(n);let i=iE.join(process.cwd(),e);if(!gf.existsSync(i))throw"Task path doesn't exist";if(t===zs.C||t===zs.RUST||t===zs.JS||t===zs.PYTHON){let u="config.json",f=iE.join(i,u);gf.existsSync(f)||gf.writeFileSync(f,JSON.stringify({run:{limits:{call:bit,frame:git,gas:yit,memory:vit}}})),gf.copyFileSync(f,iE.join(n,u));let c="fs.tar",d=iE.join(i,c);gf.existsSync(d)&&gf.copyFileSync(d,iE.join(n,c))}await DG.createBuild(t).build(e,n);let o=await yIt(n,t);return gf.rmSync(n,{recursive:!0}),o}catch(i){throw gf.rmSync(n,{recursive:!0}),i}};import*as t_r from"node:fs";var tvr=pr(MTe(),1);import dKe from"axios";import Nua from"node:https";var{parse:PEn,stringify:REn}=JSON,{keys:JTa}=Object,qEn=String,NEn="string";var bIt="object",DEn=(t,e)=>e;var gIt=(t,e,r)=>{let n=qEn(e.push(r)-1);return t.set(r,n),n};var kEn=(t,e,r)=>{let n=e&&typeof e===bIt?(c,d)=>c===""||-1<e.indexOf(c)?d:void 0:e||DEn,i=new Map,a=[],s=[],o=+gIt(i,a,n.call({"":t},"",t)),u=!o;for(;o<a.length;)u=!0,s[o]=REn(a[o++],f,r);return"["+s.join(",")+"]";function f(c,d){if(u)return u=!u,d;let h=n.call(this,c,d);switch(typeof h){case bIt:if(h===null)return h;case NEn:return i.get(h)||gIt(i,a,h)}return h}},qTe=t=>PEn(kEn(t));var Dua=pr(W8(),1),v5s=pr(Fme(),1),w5s=pr(W8(),1);gO();import"ethers";gO();import"ethers";var W5s=pr(fye(),1),kvr=pr(xF(),1),PKe=pr(u0(),1),Z5s=pr(G6(),1),o5=pr(Y6(),1),Ye=pr(u0(),1),jf=pr(u0(),1),Q5s=pr(G6(),1),je=pr(u0(),1),$1=pr(Y6(),1),e3s=pr(G6(),1),at=pr(u0(),1),oo=pr(Y6(),1),t3s=pr(G6(),1),kl=pr(u0(),1),NKe=pr(Y6(),1),wt=pr(u0(),1);import"node:os";import{v4 as Xua}from"uuid";import"axios";var Vvr=pr(Wxe(),1),Wvr=pr($3r(),1);import"axios";import zvr from"openapi-enforcer";import{isIP as l0a}from"node:net";var qua=Object.defineProperty,Ce=(t,e)=>qua(t,"name",{value:e,configurable:!0}),{format:_5s,createLogger:E5s,transports:S5s}=Dua;process.setMaxListeners(0);function rvr(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}Ce(rvr,"isBytes");function Zx(t,e=""){if(!Number.isSafeInteger(t)||t<0){let r=e&&`"${e}" `;throw new Error(`${r}expected integer >= 0, got ${t}`)}}Ce(Zx,"anumber");function Xx(t,e,r=""){let n=rvr(t),i=t?.length,a=e!==void 0;if(!n||a&&i!==e){let s=r&&`"${r}" `,o=a?` of length ${e}`:"",u=n?`length=${i}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+o+", got "+u)}return t}Ce(Xx,"abytes");function nvr(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash must wrapped by utils.createHasher");Zx(t.outputLen),Zx(t.blockLen)}Ce(nvr,"ahash");function hKe(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}Ce(hKe,"aexists");function ivr(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}Ce(ivr,"clean");var avr=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",kua=Array.from({length:256},(t,e)=>e.toString(16).padStart(2,"0"));function wKe(t){if(Xx(t),avr)return t.toHex();let e="";for(let r=0;r<t.length;r++)e+=kua[t[r]];return e}Ce(wKe,"bytesToHex");var v2={_0:48,_9:57,A:65,F:70,a:97,f:102};function mKe(t){if(t>=v2._0&&t<=v2._9)return t-v2._0;if(t>=v2.A&&t<=v2.F)return t-(v2.A-10);if(t>=v2.a&&t<=v2.f)return t-(v2.a-10)}Ce(mKe,"asciiToBase16");function svr(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);if(avr)return Uint8Array.fromHex(t);let e=t.length,r=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(r);for(let i=0,a=0;i<r;i++,a+=2){let s=mKe(t.charCodeAt(a)),o=mKe(t.charCodeAt(a+1));if(s===void 0||o===void 0){let u=t[a]+t[a+1];throw new Error('hex string expected, got non-hex character "'+u+'" at index '+a)}n[i]=s*16+o}return n}Ce(svr,"hexToBytes");var $5s=BigInt(2**32-1),ovr=BigInt(0);function uvr(t){if(typeof t=="bigint"){if(!$ua(t))throw new Error("positive bigint expected, got "+t)}else Zx(t);return t}Ce(uvr,"abignumber");function AKe(t){if(typeof t!="string")throw new Error("hex string expected, got "+typeof t);return t===""?ovr:BigInt("0x"+t)}Ce(AKe,"hexToNumber");function fvr(t){return AKe(wKe(t))}Ce(fvr,"bytesToNumberBE");function lvr(t){return AKe(wKe(dvr(Xx(t)).reverse()))}Ce(lvr,"bytesToNumberLE");function xKe(t,e){Zx(e),t=uvr(t);let r=svr(t.toString(16).padStart(e*2,"0"));if(r.length!==e)throw new Error("number too large");return r}Ce(xKe,"numberToBytesBE");function cvr(t,e){return xKe(t,e).reverse()}Ce(cvr,"numberToBytesLE");function dvr(t){return Uint8Array.from(t)}Ce(dvr,"copyBytes");var $ua=Ce(t=>typeof t=="bigint"&&ovr<=t,"isPosBig"),P0=BigInt(0),Lf=BigInt(1),z_=BigInt(2),pvr=BigInt(3),hvr=BigInt(4),mvr=BigInt(5),Bua=BigInt(7),yvr=BigInt(8),Fua=BigInt(9),bvr=BigInt(16);function k1(t,e){let r=t%e;return r>=P0?r:e+r}Ce(k1,"mod");function Dl(t,e,r){let n=t;for(;e-- >P0;)n*=n,n%=r;return n}Ce(Dl,"pow2");function yKe(t,e){if(t===P0)throw new Error("invert: expected non-zero number");if(e<=P0)throw new Error("invert: expected positive modulus, got "+e);let r=k1(t,e),n=e,i=P0,a=Lf,s=Lf,o=P0;for(;r!==P0;){let u=n/r,f=n%r,c=i-s*u,d=a-o*u;n=r,r=f,i=s,a=o,s=c,o=d}if(n!==Lf)throw new Error("invert: does not exist");return k1(i,e)}Ce(yKe,"invert");function Tpe(t,e,r){if(!t.eql(t.sqr(e),r))throw new Error("Cannot find square root")}Ce(Tpe,"assertIsSquare");function TKe(t,e){let r=(t.ORDER+Lf)/hvr,n=t.pow(e,r);return Tpe(t,n,e),n}Ce(TKe,"sqrt3mod4");function gvr(t,e){let r=(t.ORDER-mvr)/yvr,n=t.mul(e,z_),i=t.pow(n,r),a=t.mul(e,i),s=t.mul(t.mul(a,z_),i),o=t.mul(a,t.sub(s,t.ONE));return Tpe(t,o,e),o}Ce(gvr,"sqrt5mod8");function vvr(t){let e=Ope(t),r=OKe(t),n=r(e,e.neg(e.ONE)),i=r(e,n),a=r(e,e.neg(n)),s=(t+Bua)/bvr;return(o,u)=>{let f=o.pow(u,s),c=o.mul(f,n),d=o.mul(f,i),h=o.mul(f,a),p=o.eql(o.sqr(c),u),m=o.eql(o.sqr(d),u);f=o.cmov(f,c,p),c=o.cmov(h,d,m);let y=o.eql(o.sqr(c),u),b=o.cmov(f,c,y);return Tpe(o,b,u),b}}Ce(vvr,"sqrt9mod16");function OKe(t){if(t<pvr)throw new Error("sqrt is not defined for small field");let e=t-Lf,r=0;for(;e%z_===P0;)e/=z_,r++;let n=z_,i=Ope(t);for(;bKe(i,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return TKe;let a=i.pow(n,e),s=(e+Lf)/z_;return Ce(function(o,u){if(o.is0(u))return u;if(bKe(o,u)!==1)throw new Error("Cannot find square root");let f=r,c=o.mul(o.ONE,a),d=o.pow(u,e),h=o.pow(u,s);for(;!o.eql(d,o.ONE);){if(o.is0(d))return o.ZERO;let p=1,m=o.sqr(d);for(;!o.eql(m,o.ONE);)if(p++,m=o.sqr(m),p===f)throw new Error("Cannot find square root");let y=Lf<<BigInt(f-p-1),b=o.pow(c,y);f=p,c=o.sqr(b),d=o.mul(d,c),h=o.mul(h,b)}return h},"tonelliSlow")}Ce(OKe,"tonelliShanks");function _vr(t){return t%hvr===pvr?TKe:t%yvr===mvr?gvr:t%bvr===Fua?vvr(t):OKe(t)}Ce(_vr,"FpSqrt");function Evr(t,e,r){if(r<P0)throw new Error("invalid exponent, negatives unsupported");if(r===P0)return t.ONE;if(r===Lf)return e;let n=t.ONE,i=e;for(;r>P0;)r&Lf&&(n=t.mul(n,i)),i=t.sqr(i),r>>=Lf;return n}Ce(Evr,"FpPow");function Svr(t,e,r=!1){let n=new Array(e.length).fill(r?t.ZERO:void 0),i=e.reduce((s,o,u)=>t.is0(o)?s:(n[u]=s,t.mul(s,o)),t.ONE),a=t.inv(i);return e.reduceRight((s,o,u)=>t.is0(o)?s:(n[u]=t.mul(s,n[u]),t.mul(s,o)),a),n}Ce(Svr,"FpInvertBatch");function bKe(t,e){let r=(t.ORDER-Lf)/z_,n=t.pow(e,r),i=t.eql(n,t.ONE),a=t.eql(n,t.ZERO),s=t.eql(n,t.neg(t.ONE));if(!i&&!a&&!s)throw new Error("invalid Legendre symbol result");return i?1:a?0:-1}Ce(bKe,"FpLegendre");function wvr(t,e){e!==void 0&&Zx(e);let r=e!==void 0?e:t.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}Ce(wvr,"nLength");var Lua=class{static{Ce(this,"_Field")}ORDER;BITS;BYTES;isLE;ZERO=P0;ONE=Lf;_lengths;_sqrt;_mod;constructor(t,e={}){if(t<=P0)throw new Error("invalid field: expected ORDER > 0, got "+t);let r;this.isLE=!1,e!=null&&typeof e=="object"&&(typeof e.BITS=="number"&&(r=e.BITS),typeof e.sqrt=="function"&&(this.sqrt=e.sqrt),typeof e.isLE=="boolean"&&(this.isLE=e.isLE),e.allowedLengths&&(this._lengths=e.allowedLengths?.slice()),typeof e.modFromBytes=="boolean"&&(this._mod=e.modFromBytes));let{nBitLength:n,nByteLength:i}=wvr(t,r);if(i>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=t,this.BITS=n,this.BYTES=i,this._sqrt=void 0,Object.preventExtensions(this)}create(t){return k1(t,this.ORDER)}isValid(t){if(typeof t!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof t);return P0<=t&&t<this.ORDER}is0(t){return t===P0}isValidNot0(t){return!this.is0(t)&&this.isValid(t)}isOdd(t){return(t&Lf)===Lf}neg(t){return k1(-t,this.ORDER)}eql(t,e){return t===e}sqr(t){return k1(t*t,this.ORDER)}add(t,e){return k1(t+e,this.ORDER)}sub(t,e){return k1(t-e,this.ORDER)}mul(t,e){return k1(t*e,this.ORDER)}pow(t,e){return Evr(this,t,e)}div(t,e){return k1(t*yKe(e,this.ORDER),this.ORDER)}sqrN(t){return t*t}addN(t,e){return t+e}subN(t,e){return t-e}mulN(t,e){return t*e}inv(t){return yKe(t,this.ORDER)}sqrt(t){return this._sqrt||(this._sqrt=_vr(this.ORDER)),this._sqrt(this,t)}toBytes(t){return this.isLE?cvr(t,this.BYTES):xKe(t,this.BYTES)}fromBytes(t,e=!1){Xx(t);let{_lengths:r,BYTES:n,isLE:i,ORDER:a,_mod:s}=this;if(r){if(!r.includes(t.length)||t.length>n)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+t.length);let u=new Uint8Array(n);u.set(t,i?0:u.length-t.length),t=u}if(t.length!==n)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+t.length);let o=i?lvr(t):fvr(t);if(s&&(o=k1(o,a)),!e&&!this.isValid(o))throw new Error("invalid field element: outside of range 0..ORDER");return o}invertBatch(t){return Svr(this,t)}cmov(t,e,r){return r?e:t}};function Ope(t,e={}){return new Lua(t,e)}Ce(Ope,"Field");var Avr=class{static{Ce(this,"_HMAC")}oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(t,e){if(nvr(t),Xx(e,void 0,"key"),this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let r=this.blockLen,n=new Uint8Array(r);n.set(e.length>r?t.create().update(e).digest():e);for(let i=0;i<n.length;i++)n[i]^=54;this.iHash.update(n),this.oHash=t.create();for(let i=0;i<n.length;i++)n[i]^=106;this.oHash.update(n),ivr(n)}update(t){return hKe(this),this.iHash.update(t),this}digestInto(t){hKe(this),Xx(t,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||=Object.create(Object.getPrototypeOf(this),{});let{oHash:e,iHash:r,finished:n,destroyed:i,blockLen:a,outputLen:s}=this;return t=t,t.finished=n,t.destroyed=i,t.blockLen=a,t.outputLen=s,t.oHash=e._cloneInto(t.oHash),t.iHash=r._cloneInto(t.iHash),t}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},jua=Ce((t,e,r)=>new Avr(t,e).update(r).digest(),"hmac");jua.create=(t,e)=>new Avr(t,e);var B5s=BigInt(0),F5s=BigInt(1),L5s=BigInt(2),j5s=BigInt(3),U5s=BigInt(4),xvr={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},V5s={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]},B3r=BigInt(2);function Tvr(t){let e=xvr.p,r=BigInt(3),n=BigInt(6),i=BigInt(11),a=BigInt(22),s=BigInt(23),o=BigInt(44),u=BigInt(88),f=t*t*t%e,c=f*f*t%e,d=Dl(c,r,e)*c%e,h=Dl(d,r,e)*c%e,p=Dl(h,B3r,e)*f%e,m=Dl(p,i,e)*p%e,y=Dl(m,a,e)*m%e,b=Dl(y,o,e)*y%e,_=Dl(b,u,e)*b%e,E=Dl(_,o,e)*y%e,A=Dl(E,r,e)*c%e,x=Dl(A,s,e)*m%e,q=Dl(x,n,e)*f%e,N=Dl(q,B3r,e);if(!F3r.eql(F3r.sqr(N),t))throw new Error("Cannot find square root");return N}Ce(Tvr,"sqrtMod");var F3r=Ope(xvr.p,{sqrt:Tvr});function Ovr(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}Ce(Ovr,"isBytes2");function bk(t,e,r=""){let n=Ovr(t),i=t?.length,a=e!==void 0;if(!n||a&&i!==e){let s=r&&`"${r}" `,o=a?` of length ${e}`:"",u=n?`length=${i}`:`type=${typeof t}`;throw new Error(s+"expected Uint8Array"+o+", got "+u)}return t}Ce(bk,"abytes2");function CKe(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}Ce(CKe,"u32");function gk(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}Ce(gk,"clean2");function Cvr(t){return t.byteOffset%4===0}Ce(Cvr,"isAligned32");function Ivr(t){return Uint8Array.from(t)}Ce(Ivr,"copyBytes2");var Am=16,Uua=283;function IKe(t){if(![16,24,32].includes(t.length))throw new Error('"aes key" expected Uint8Array of length 16/24/32, got length='+t.length)}Ce(IKe,"validateKeyLength");function Cpe(t){return t<<1^Uua&-(t>>7)}Ce(Cpe,"mul2");function gKe(t,e){let r=0;for(;e>0;e>>=1)r^=t&-(e&1),t=Cpe(t);return r}Ce(gKe,"mul");var Vua=(()=>{let t=new Uint8Array(256);for(let r=0,n=1;r<256;r++,n^=Cpe(n))t[r]=n;let e=new Uint8Array(256);e[0]=99;for(let r=0;r<255;r++){let n=t[255-r];n|=n<<8,e[t[r]]=(n^n>>4^n>>5^n>>6^n>>7^99)&255}return gk(t),e})(),Hua=Ce(t=>t<<24|t>>>8,"rotr32_8"),pKe=Ce(t=>t<<8|t>>>24,"rotl32_8");function Mvr(t,e){if(t.length!==256)throw new Error("Wrong sbox length");let r=new Uint32Array(256).map((f,c)=>e(t[c])),n=r.map(pKe),i=n.map(pKe),a=i.map(pKe),s=new Uint32Array(256*256),o=new Uint32Array(256*256),u=new Uint16Array(256*256);for(let f=0;f<256;f++)for(let c=0;c<256;c++){let d=f*256+c;s[d]=r[f]^n[c],o[d]=i[f]^a[c],u[d]=t[f]<<8|t[c]}return{sbox:t,sbox2:u,T0:r,T1:n,T2:i,T3:a,T01:s,T23:o}}Ce(Mvr,"genTtable");var Pvr=Mvr(Vua,t=>gKe(t,3)<<24|t<<16|t<<8|gKe(t,2)),zua=(()=>{let t=new Uint8Array(16);for(let e=0,r=1;e<16;e++,r=Cpe(r))t[e]=r;return t})();function Rvr(t){bk(t);let e=t.length;IKe(t);let{sbox2:r}=Pvr,n=[];Cvr(t)||n.push(t=Ivr(t));let i=CKe(t),a=i.length,s=Ce(u=>Yx(r,u,u,u,u),"subByte"),o=new Uint32Array(e+28);o.set(i);for(let u=a;u<o.length;u++){let f=o[u-1];u%a===0?f=s(Hua(f))^zua[u/a-1]:a>6&&u%a===4&&(f=s(f)),o[u]=o[u-a]^f}return gk(...n),o}Ce(Rvr,"expandKeyLE");function mk(t,e,r,n,i,a){return t[r<<8&65280|n>>>8&255]^e[i>>>8&65280|a>>>24&255]}Ce(mk,"apply0123");function Yx(t,e,r,n,i){return t[e&255|r&65280]|t[n>>>16&255|i>>>16&65280]<<16}Ce(Yx,"applySbox");function qvr(t,e,r,n,i){let{sbox2:a,T01:s,T23:o}=Pvr,u=0;e^=t[u++],r^=t[u++],n^=t[u++],i^=t[u++];let f=t.length/4-2;for(let m=0;m<f;m++){let y=t[u++]^mk(s,o,e,r,n,i),b=t[u++]^mk(s,o,r,n,i,e),_=t[u++]^mk(s,o,n,i,e,r),E=t[u++]^mk(s,o,i,e,r,n);e=y,r=b,n=_,i=E}let c=t[u++]^Yx(a,e,r,n,i),d=t[u++]^Yx(a,r,n,i,e),h=t[u++]^Yx(a,n,i,e,r),p=t[u++]^Yx(a,i,e,r,n);return{s0:c,s1:d,s2:h,s3:p}}Ce(qvr,"encrypt");function Nvr(t){return t instanceof Uint32Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint32Array"}Ce(Nvr,"isBytes32");function Epe(t,e){if(bk(e,16,"block"),!Nvr(t))throw new Error("_encryptBlock accepts result of expandKeyLE");let r=CKe(e),{s0:n,s1:i,s2:a,s3:s}=qvr(t,r[0],r[1],r[2],r[3]);return r[0]=n,r[1]=i,r[2]=a,r[3]=s,e}Ce(Epe,"encryptBlock");function vKe(t){let e=0;for(let r=Am-1;r>=0;r--){let n=(t[r]&128)>>>7;t[r]=t[r]<<1|e,e=n}return e&&(t[Am-1]^=135),t}Ce(vKe,"dbl");function yk(t,e){if(t.length!==e.length)throw new Error("xorBlock: blocks must have same length");for(let r=0;r<t.length;r++)t[r]=t[r]^e[r];return t}Ce(yk,"xorBlock");var Dvr=class{static{Ce(this,"_CMAC")}buffer;destroyed;k1;k2;xk;constructor(t){bk(t),IKe(t),this.xk=Rvr(t),this.buffer=new Uint8Array(0),this.destroyed=!1;let e=new Uint8Array(Am);Epe(this.xk,e),this.k1=vKe(e),this.k2=vKe(new Uint8Array(this.k1))}update(t){let{destroyed:e,buffer:r}=this;if(e)throw new Error("CMAC instance was destroyed");bk(t);let n=new Uint8Array(r.length+t.length);return n.set(r),n.set(t,r.length),this.buffer=n,this}digest(){if(this.destroyed)throw new Error("CMAC instance was destroyed");let{buffer:t}=this,e=t.length,r=Math.ceil(e/Am),n;r===0?(r=1,n=!1):n=e%Am===0;let i=(r-1)*Am,a=t.subarray(i),s;if(n)s=yk(new Uint8Array(a),this.k1);else{let u=new Uint8Array(Am);u.set(a),u[a.length]=128,s=yk(u,this.k2)}let o=new Uint8Array(Am);for(let u=0;u<r-1;u++){let f=t.subarray(u*Am,(u+1)*Am);yk(o,f),Epe(this.xk,o)}return yk(o,s),Epe(this.xk,o),gk(s),o}destroy(){let{buffer:t,destroyed:e,xk:r,k1:n,k2:i}=this;e||(this.destroyed=!0,gk(t,r,n,i))}},Wua=Ce((t,e)=>new Dvr(t).update(e).digest(),"cmac");Wua.create=t=>new Dvr(t);var Spe;(function(t){t.RUST="rs",t.C="c",t.JS="js",t.API="api",t.PYTHON="py"})(Spe||(Spe={}));var _Ke;(function(t){t.API="api"})(_Ke||(_Ke={}));var Gua={...Spe,..._Ke},H5s=Object.values(Gua),z5s=Object.values(Spe),L3r;(function(t){t.JSON="application/json",t.WASM="application/wasm",t.PLAIN_TXT="text/plain",t.JS="application/x-javascript",t.TAR="application/x-tar"})(L3r||(L3r={}));var j3r;(function(t){t.JSON="json",t.WASM="wasm",t.PLAIN_TXT="txt",t.JS="js",t.DTA="dta",t.PY="py",t.TAR="tar"})(j3r||(j3r={}));var U3r;(function(t){t.LEDGER="ledger",t.HTTP_ADAPTER="http-adapter",t.EVENTS_ADAPTER="events-adapter",t.FILESYSTEM_ADAPTER="filesystem-adapter",t.WASM_CHECKPOINTER="wasm-checkpointer",t.WASM_INSTRUMENTER="wasm-instrumenter",t.WASM_RUNNER="wasm-runner"})(U3r||(U3r={}));var _2;(function(t){t.FAILED="failed",t.SUCCEED="succeed",t.RUNNING="running"})(_2||(_2={}));var V3r;(function(t){t.MINIO="minio",t.S3="s3"})(V3r||(V3r={}));var MKe=class{static{Ce(this,"AuthMethod")}tokens=[];authInputs;parse(t,e){let r=this.parseKeyValuePairs(e);if(t.length==0){this.authInputs=r;return}let n=Object.keys(r);if(t.every(i=>n.includes(i))){let i={};for(let a of t)i[a]=r[a];this.authInputs=i}else throw new Error(`Invalid authString: ${t} are required`)}parseKeyValuePairs(t){try{let e=t.split(","),r={};for(let n of e){let[i,a]=n.split(":");r[i.trim()]=a.trim()}return r}catch{throw new Error("Invalid auth string")}}},Kua=class extends MKe{static{Ce(this,"AwsSignature")}tokens=["accessKey","secretKey"];constructor(t){super(),this.parse(this.tokens,t)}authHeaders(t){return kvr.default.sign(t,{accessKeyId:this.authInputs.accessKey,secretAccessKey:this.authInputs.secretKey}).headers||{}}},Yua=class extends MKe{static{Ce(this,"BasicAuth")}tokens=["username","password"];constructor(t){super(),this.parse(this.tokens,t)}authHeaders(t){return{Authorization:`Basic ${btoa(`${this.authInputs.username}:${this.authInputs.password}`)}`}}},Jua=class extends MKe{static{Ce(this,"CustomHeader")}tokens=[];constructor(t){super(),this.parse([],t)}authHeaders(t){return{...this.authInputs}}},Jx;(function(t){t.AWS_SIGNATURE="aws-signature",t.BASIC_AUTH="basic-auth",t.CUSTOM_HEADER="custom-header"})(Jx||(Jx={}));var Zua=Ce((t,e)=>{switch(t){case Jx.AWS_SIGNATURE:return new Kua(e);case Jx.BASIC_AUTH:return new Yua(e);case Jx.CUSTOM_HEADER:return new Jua(e);default:throw new Error(`Invalid authentication method specified. Should be one of <${Object.values(Jx)}>`)}},"createApiAuthParser"),H3r;(function(t){t.TASK_CREATED="task_created",t.TASK_SOLVED="task_solved",t.FILE_SYSTEM="file_system",t.DISPATCH_TASK="dispatch_task",t.DISPATCH_API_TASK="dispatch_api_task",t.MESSAGE_SAVED="message_saved",t.COMPUTED_OUTCOME="computed_outcome",t.API_FETCH="api_fetch",t.API_OUTCOME="api_outcome",t.API_SOLVED="api_solved",t.READY_TO_SHUTDOWN="ready_to_shutdown",t.INVOICE="invoice",t.REQUEST_SLASH="request_slash",t.RETRY_SLASH="retry_slash",t.RETRY_DEREGISTER="retry_deregister",t.ENTITLEMENT="entitlement",t.HEALTH_CHECK="health_check",t.RUNNER_TASK_EXECUTED="runner_task_executed",t.DEPLOYER_EXECUTE_TASK="deployer_execute_task",t.DEPLOYER_TASK_EXECUTED="deployer_task_executed",t.HTTP_ADAPTER_TASK_EXECUTED="http_adapter_task_executed",t.HTTP_ADAPTER_TASK_INSTRUMENTED="http_adapter_task_instrumented",t.HTTP_ADAPTER_TASK_PUSHED="http_adapter_task_pushed",t.HTTP_ADAPTER_TASK_PULLED="http_adapter_task_pulled",t.HTTP_ADAPTER_TASK_CHECKPOINTED="http_adapter_task_checkpointed",t.HTTP_ADAPTER_TASK_CHECKPOINTS_LISTED="http_adapter_task_checkpoints_listed",t.HTTP_ADAPTER_READY_TO_SHUTDOWN="http_adapter_ready_to_shutdown",t.EVENTS_ADAPTER_TASK_EXECUTED="events_adapter_task_executed",t.EVENTS_ADAPTER_TASK_INSTRUMENTED="events_adapter_task_instrumented",t.EVENTS_ADAPTER_TASK_PUSHED="events_adapter_task_pushed",t.EVENTS_ADAPTER_TASK_PULLED="events_adapter_task_pulled",t.EVENTS_ADAPTER_TASK_CHECKPOINTED="events_adapter_task_checkpointed",t.EVENTS_ADAPTER_TASK_CHECKPOINTS_LISTED="events_adapter_task_checkpoints_listed",t.EVENTS_ADAPTER_COMPUTED_OUTCOME="events_adapter_compute_outcome",t.EVENTS_ADAPTER_TASK_CREATED="events_adapter_task_created",t.EVENTS_ADAPTER_NODE_DEREGISTERED="events_adapter_node_deregistered",t.EVENTS_ADAPTER_SERVICE_STARTED_CHECK="events_adapter_service_started_check",t.DISPATCHER_TASK_SOLVED_CLEAR="dispatcher_task_solved_clear",t.DISPATCHER_TASK_CREATED="dispatcher_task_created",t.WASM_INSTRUMENTER_INSTRUMENT_TASK="wasm_instrumenter_instrument_task",t.WASM_INSTRUMENTER_TASK_INSTRUMENTED="wasm_instrumenter_task_instrumented",t.FILESYSTEM_ADAPTER_PUSH_TASK="filesystem_adapter_push_task",t.FILESYSTEM_ADAPTER_TASK_PUSHED="filesystem_adapter_task_pushed",t.FILESYSTEM_ADAPTER_PULL_TASK="filesystem_adapter_pull_task",t.FILESYSTEM_ADAPTER_TASK_PULLED="filesystem_adapter_task_pulled",t.FILESYSTEM_ADAPTER_SERVICE_STARTED_CHECK="filesystem_adapter_service_started_check",t.WASM_CHECKPOINTER_CHECKPOINT_TASK="wasm_checkpointer_checkpoint_task",t.WASM_CHECKPOINTER_LIST_TASK_CHECKPOINTS="wasm_checkpointer_list_task_checkpoints",t.TRANSCRIPT_WRITER_SAVE_MESSAGE="transcript_writer_save_message",t.TRANSCRIPT_WRITER_INVOICE="transcript_writer_save_invoice",t.SEQUENCER_MESSAGE_SAVED="sequencer_message_saved",t.VERIFICATION_MESSAGE_SAVED="verification_message_saved",t.VERIFICATION_VALIDATE_MESSAGE="verification_validate_message",t.VERIFICATION_REVEAL_SOLUTION="verification_reveal_solution",t.VERIFICATION_ADJUDICATION_OUTCOME="verification_adjudication_outcome",t.VERIFICATION_ERRORS="verification_errors",t.LEDGER_SHUTDOWN="ledger_shutdown",t.LEDGER_SERVICE_STARTED="ledger_service_started"})(H3r||(H3r={}));var Vc;(function(t){t.TASK_INSTRUMENTED="task_instrumented",t.TASK_CREATED="task_created",t.API_TASK_CREATED="api_task_created",t.TASK_EXECUTED="task_executed",t.TASK_PUSHED="task_pushed",t.TASK_PULLED="task_pulled",t.TASK_CHECKPOINTED="task_checkpointed",t.TASK_CHECKPOINTS_LISTED="task_checkpoints_listed",t.COMPUTED_OUTCOME="computed_outcome",t.ADJUDICATION_OUTCOME="adjudication_outcome",t.MESSAGE_SAVED="message_saved",t.TASK_SOLVED="task_solved",t.TASK_SOLVED_CLEAR="task_solved_clear",t.NODE_OUTCOME="node_outcome",t.PLATFORM_ERRORS="errors",t.REVEAL_SOLUTIONS="reveal_solutions",t.SOLUTIONS_REVEALED="solutions_revealed",t.API_FETCHER_OUTCOME="api_fetcher_outcome",t.API_SOLVED="api_solved",t.API_OUTCOME="api_outcome",t.NODE_DEREGISTERED="node_deregistered",t.READY_TO_SHUTDOWN="ready_to_shutdown",t.EXECUTION_COMPLETED="execution_completed",t.SERVICE_STARTED="service_started",t.INVOICE="invoice",t.ENTITLEMENT_REQ="entitlement_req",t.ENTITLEMENT_RES="entitlement_res",t.HEALTH_CHECK="health_check",t.EXECUTION_METADATA="execution_metadata",t.REQUEST_SLASH="request_slash",t.RETRY_SLASH="retry_slash",t.RETRY_DEREGISTER="retry_deregister"})(Vc||(Vc={}));var z3r;(function(t){t.SHUTDOWN="shutdown",t.LIST_TASK_CHECKPOINTS="list_task_checkpoints",t.EXECUTE_TASK="execute_task",t.CHECKPOINT_TASK="checkpoint_task",t.INSTRUMENT_TASK="instrument_task",t.PUSH_TASK="push_task",t.PULL_TASK="pull_task",t.DISPATCH_TASK="dispatch_task",t.DISPATCH_API_TASK="dispatch_api_task",t.SAVE_MESSAGE="save_message",t.REVEAL_SOLUTION="reveal_solution",t.VALIDATE_MESSAGE="validate_message",t.API_FETCH="api_fetch",t.ENTITLEMENT="entitlement",t.HEALTH_CHECK="health_check",t.ADJUDICATION_OUTCOME="adjudication_outcome"})(z3r||(z3r={}));var W3r;(function(t){t.ERRORS="errors",t.TASK_INSTRUMENTED="task_instrumented",t.TASK_CREATED="task_created",t.API_TASK_CREATED="api_task_created",t.TASK_EXECUTED="task_executed",t.TASK_PUSHED="task_pushed",t.TASK_SOLVED="task_solved",t.TASK_SOLVED_CLEAR="task_solved_clear",t.TASK_PULLED="task_pulled",t.TASK_CHECKPOINTED="task_checkpointed",t.TASK_CHECKPOINTS_LISTED="task_checkpoints_listed",t.COMPUTED_OUTCOME="computed_outcome",t.ADJUDICATION_OUTCOME="adjudication_outcome",t.MESSAGE_SAVED="message_saved",t.API_FETCHER_OUTCOME="api_fetcher_outcome",t.API_SOLVED="api_solved",t.API_OUTCOME="api_outcome",t.NODE_DEREGISTERED="node_deregistered",t.READY_TO_SHUTDOWN="ready_to_shutdown",t.SERVICE_STARTED="service_started",t.INVOICES="invoice",t.ENTITLEMENTS_REQ="entitlement_req",t.ENTITLEMENTS_RES="entitlement_res",t.HEALTH_CHECK="health_check",t.REQUEST_SLASH="request_slash",t.RETRY_SLASH="retry_slash",t.RETRY_DEREGISTER="retry_deregister",t.SHUTDOWN="shutdown",t.LIST_TASK_CHECKPOINTS="list_task_checkpoints",t.EXECUTE_TASK="execute_task",t.CHECKPOINT_TASK="checkpoint_task",t.INSTRUMENT_TASK="instrument_task",t.PUSH_TASK="push_task",t.PULL_TASK="pull_task",t.DISPATCH_TASK="dispatch_task",t.DISPATCH_API_TASK="dispatch_api_task",t.SAVE_MESSAGE="save_message",t.REVEAL_SOLUTION="reveal_solution",t.VALIDATE_MESSAGE="validate_message",t.API_FETCH="api_fetch",t.DUMMY="DUMMY"})(W3r||(W3r={}));var G3r;(function(t){t.VALIDATION_ERROR="validation_error"})(G3r||(G3r={}));var wpe;(function(t){t.GAME_PENDING="GamePending",t.READY_FOR_INVOICE="ReadyForInvoice",t.CONTROL_NODE_TIMEOUT="ControlNodeTimeout",t.ERROR="Error"})(wpe||(wpe={}));var K3r;(function(t){let e;(function(n){n.Pay="pay",n.Charge="charge",n.Penalty="penalty"})(e=t.Operation||(t.Operation={}));let r;(function(n){n.IS_USER_REGISTER="isUserRegister"})(r=t.EntitlementOperation||(t.EntitlementOperation={}))})(K3r||(K3r={}));var Y3r;(function(t){t.Pay="pay",t.Charge="charge",t.Penalty="penalty"})(Y3r||(Y3r={}));var J5s=[Vc.TASK_SOLVED,Vc.TASK_CREATED,Vc.API_TASK_CREATED,Vc.NODE_OUTCOME,Vc.SOLUTIONS_REVEALED,Vc.REVEAL_SOLUTIONS,Vc.API_OUTCOME,Vc.EXECUTION_COMPLETED,Vc.EXECUTION_METADATA,Vc.ADJUDICATION_OUTCOME],J3r;(function(t){t.EXECUTE_TRANSACTION="EXECUTE_TRANSACTION",t.GET_TRANSACTION="GET_TRANSACTION",t.REGISTER_USER="REGISTER_USER"})(J3r||(J3r={}));var Z3r;(function(t){t.AUTHORIZATION_REGISTER="authorization.register",t.AUTHORIZATION_DEREGISTER="authorization.deregister",t.TASKREGISTRY_REGISTER_NAMESPACE="taskregistry.registerNamespace",t.TASKREGISTRY_REGISTER_TASK="taskregistry.registerTask",t.STAKING_SLASH="staking.slash",t.NODEREGISTRY_DEREGISTER="noderegistry.deregister",t.WATCHTOWER_CALLBACK="watchtower.callback"})(Z3r||(Z3r={}));function s5(){return function(t,e){(0,PKe.registerDecorator)({name:"IsUnixTimestamp",target:t.constructor,propertyName:e,validator:{validate(r){let n=r,i=new Date(n);return!isNaN(i.getTime())&&n>16725312e5}}})}}Ce(s5,"IsUnixTimestamp");function RKe(){return function(t,e){(0,PKe.registerDecorator)({name:"IsUnixTimestamp",target:t.constructor,propertyName:e,validator:{validate(r){let n=r,i=new Date(n);return!isNaN(i.getTime())&&n>1672531200}}})}}Ce(RKe,"IsUnixTimestampSeconds");var xr=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Tr=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},X3r;(function(t){t.FREE="free",t.DEV="dev",t.UNLIMITED="unlimited"})(X3r||(X3r={}));var EKe;(function(t){t.FAILED="failed",t.SUCCEED="succeed",t.RUNNING="running"})(EKe||(EKe={}));var i5=class{static{Ce(this,"EncryptedSolution")}iv;ephemPublicKey;ciphertext;mac;constructor(t,e,r,n){this.iv=t,this.ephemPublicKey=e,this.ciphertext=r,this.mac=n}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],i5.prototype,"iv",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],i5.prototype,"ephemPublicKey",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],i5.prototype,"ciphertext",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],i5.prototype,"mac",void 0);var Xn=class{static{Ce(this,"Signature")}v;r;s;constructor(t,e,r){this.v=t,this.r=e,this.s=r}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Xn.prototype,"v",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],Xn.prototype,"r",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],Xn.prototype,"s",void 0);var Qx=class{static{Ce(this,"ExecutionOutputMeteringLast")}memoryGrowDelta;call;frame;steps;constructor(t,e,r,n){this.call=t,this.frame=e,this.steps=r,this.memoryGrowDelta=n}};xr([(0,Ye.IsNumber)(),(0,Ye.IsOptional)(),Tr("design:type",Number)],Qx.prototype,"memoryGrowDelta",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],Qx.prototype,"call",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],Qx.prototype,"frame",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],Qx.prototype,"steps",void 0);var eT=class{static{Ce(this,"ExecutionOutputMeteringLimits")}call;frame;gas;memory;constructor(t,e,r,n){this.call=t,this.frame=e,this.gas=r,this.memory=n}};xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],eT.prototype,"call",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],eT.prototype,"frame",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],eT.prototype,"gas",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],eT.prototype,"memory",void 0);var vk=class{static{Ce(this,"ExecutionOutputMeteringPeak")}call;frame;memory;constructor(t,e,r){this.call=t,this.frame=e,this.memory=r}};xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],vk.prototype,"call",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],vk.prototype,"frame",void 0);xr([(0,Ye.IsNumber)(),(0,Ye.IsNotEmpty)(),Tr("design:type",Number)],vk.prototype,"memory",void 0);var SKe=class{static{Ce(this,"ExecutionOutputMeteringVersions")}protocol;constructor(t){this.protocol=t}};xr([(0,Ye.IsString)(),(0,Ye.IsNotEmpty)(),Tr("design:type",String)],SKe.prototype,"protocol",void 0);var a5=class{static{Ce(this,"ExecutionOutputMetering")}last;limits;peak;versions;constructor(t,e,r,n){this.last=t,this.limits=e,this.peak=r,this.versions=n}};xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>Qx),Tr("design:type",Qx)],a5.prototype,"last",void 0);xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>eT),Tr("design:type",eT)],a5.prototype,"limits",void 0);xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>vk),Tr("design:type",vk)],a5.prototype,"peak",void 0);xr([(0,Ye.IsOptional)(),(0,Ye.ValidateNested)(),(0,o5.Type)(()=>SKe),Tr("design:type",SKe)],a5.prototype,"versions",void 0);var tT=class{static{Ce(this,"ClearTextSolution")}senderAddress;status;output;metering;constructor(t,e,r,n){this.senderAddress=t,this.status=e,this.output=r,this.metering=n}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsEthereumAddress)(),Tr("design:type",String)],tT.prototype,"senderAddress",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsEnum)(EKe),Tr("design:type",String)],tT.prototype,"status",void 0);xr([(0,Ye.IsOptional)(),(0,Ye.IsString)(),Tr("design:type",String)],tT.prototype,"output",void 0);xr([(0,Ye.IsOptional)(),(0,Ye.ValidateNested)(),(0,o5.Type)(()=>a5),Tr("design:type",a5)],tT.prototype,"metering",void 0);var qKe=class{static{Ce(this,"ClearTextSolutionSigned")}signature;clearTextSolution;constructor(t,e){this.signature=t,this.clearTextSolution=e}};xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>Xn),Tr("design:type",Xn)],qKe.prototype,"signature",void 0);xr([(0,Ye.ValidateNested)(),(0,o5.Type)(()=>tT),Tr("design:type",tT)],qKe.prototype,"clearTextSolution",void 0);var E2=class{static{Ce(this,"WorkersParams")}blockNumber;selectionStrategy;setNodes;constructor(t,e,r){this.blockNumber=t,this.selectionStrategy=e,this.setNodes=r}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.Min)(0),Tr("design:type",Number)],E2.prototype,"blockNumber",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],E2.prototype,"selectionStrategy",void 0);xr([(0,Ye.ArrayNotEmpty)(),(0,Ye.IsNotEmpty)({each:!0}),(0,Ye.IsEthereumAddress)({each:!0}),Tr("design:type",Array)],E2.prototype,"setNodes",void 0);var xm=class{static{Ce(this,"TaskExecutionLimitsParams")}gas;call;frame;memory;constructor(t,e,r,n){this.gas=t,this.call=e,this.frame=r,this.memory=n}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],xm.prototype,"gas",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],xm.prototype,"call",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],xm.prototype,"frame",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],xm.prototype,"memory",void 0);var Tm=class{static{Ce(this,"EconParams")}reward;requiredSolutions;totalSolutions;executionTimeout;constructor(t,e,r,n){this.reward=t,this.requiredSolutions=e,this.totalSolutions=r,this.executionTimeout=n}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsString)(),Tr("design:type",String)],Tm.prototype,"reward",void 0);xr([(0,Ye.Min)(1),(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Tm.prototype,"requiredSolutions",void 0);xr([(0,Ye.Min)(1),(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Tm.prototype,"totalSolutions",void 0);xr([(0,Ye.Min)(1),(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Tm.prototype,"executionTimeout",void 0);var Ape=class{static{Ce(this,"TotalTransferredBytes")}request;response;constructor(t,e){this.request=t,this.response=e}};xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Ape.prototype,"request",void 0);xr([(0,Ye.IsNotEmpty)(),(0,Ye.IsNumber)(),Tr("design:type",Number)],Ape.prototype,"response",void 0);var Q3r;(function(t){t.MINIO="minio",t.S3="s3"})(Q3r||(Q3r={}));var rT=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},nT=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},iT=class{static{Ce(this,"BaseMessage")}msgType;messageId;payload;msgTimestamp=Date.now();constructor(t,e){this.msgType=this.constructor.name,this.messageId=e||Xua(),this.payload=t}};rT([(0,jf.IsNotEmpty)(),(0,jf.IsString)(),nT("design:type",String)],iT.prototype,"msgType",void 0);rT([(0,jf.IsOptional)(),(0,jf.IsUUID)(),nT("design:type",String)],iT.prototype,"messageId",void 0);rT([(0,jf.ValidateNested)(),nT("design:type",Object)],iT.prototype,"payload",void 0);rT([s5(),nT("design:type",Number)],iT.prototype,"msgTimestamp",void 0);var Qua=class extends iT{static{Ce(this,"FailedMessage")}error;constructor(t,e,r){super(e,r),this.error=t}};rT([(0,jf.IsNotEmpty)(),(0,jf.IsString)(),nT("design:type",String)],Qua.prototype,"error",void 0);var e0a=class extends iT{static{Ce(this,"InvalidMessage")}error;constructor(t,e,r){super(e,r),this.error=t}};rT([(0,jf.IsNotEmpty)(),(0,jf.IsString)(),nT("design:type",String)],e0a.prototype,"error",void 0);var xpe;(function(t){t.EVM="evm",t.AVALANCHE="avalanche"})(xpe||(xpe={}));var $t=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Bt=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},Om;(function(t){t.TASK_CREATED="task_created",t.API_TASK_CREATED="api_task_created",t.NODE_OUTCOME="node_outcome",t.TASK_SOLVED="task_solved",t.API_OUTCOME="api_outcome",t.SOLUTIONS_REVEALED="solutions_revealed",t.EXECUTION_COMPLETED="execution_completed",t.ADJUDICATION_OUTCOME="adjudication_outcome"})(Om||(Om={}));var B1=class{static{Ce(this,"BaseTranscriptRecord")}type;executionId;message;msgHash;signature;sequencerAddress;timestamp;constructor(t,e,r,n,i,a,s){this.type=t,this.executionId=e,this.message=n,this.msgHash=r,this.signature=i,this.timestamp=s,this.sequencerAddress=a}};$t([(0,je.IsNotEmpty)(),(0,je.IsEnum)(Om),Bt("design:type",String)],B1.prototype,"type",void 0);$t([(0,je.IsUUID)(),(0,je.IsNotEmpty)(),Bt("design:type",String)],B1.prototype,"executionId",void 0);$t([(0,je.ValidateNested)(),Bt("design:type",Object)],B1.prototype,"message",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],B1.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],B1.prototype,"signature",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],B1.prototype,"sequencerAddress",void 0);$t([s5(),(0,je.IsNotEmpty)(),Bt("design:type",Number)],B1.prototype,"timestamp",void 0);var ca=class{static{Ce(this,"TaskCreatedMessageParams")}type="dispatch_task";taskId;executionId;msgHash;signature;limits;econParams;workers;dispatcherTimestamp;taskRequesterTimestamp;ledgerName;blockHash;blockNumber;chainId;nodeRegistryContractAddress;taskRegistryContractAddress;taskAuthorizationContractAddress;taskRequesterAddress;taskPath;taskVersion;signedRequestBody;senderAddress;input;constructor(t,e,r,n,i,a,s,o,u,f,c,d,h,p,m,y,b,_,E,A,x,q){this.taskId=t,this.executionId=e,this.msgHash=r,this.signature=n,this.limits=i,this.econParams=a,this.workers=s,this.dispatcherTimestamp=o,this.taskRequesterTimestamp=u,this.ledgerName=f,this.blockHash=c,this.blockNumber=d,this.chainId=h,this.nodeRegistryContractAddress=p,this.taskRegistryContractAddress=m,this.taskAuthorizationContractAddress=y,this.taskRequesterAddress=b,this.taskPath=_,this.taskVersion=E,this.signedRequestBody=q,this.senderAddress=A,this.input=x}};$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],ca.prototype,"taskId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsUUID)(),Bt("design:type",String)],ca.prototype,"executionId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],ca.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],ca.prototype,"signature",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>xm),Bt("design:type",xm)],ca.prototype,"limits",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Tm),Bt("design:type",Tm)],ca.prototype,"econParams",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>E2),Bt("design:type",E2)],ca.prototype,"workers",void 0);$t([(0,je.IsNotEmpty)(),RKe(),Bt("design:type",Number)],ca.prototype,"dispatcherTimestamp",void 0);$t([(0,je.IsNotEmpty)(),RKe(),Bt("design:type",Number)],ca.prototype,"taskRequesterTimestamp",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEnum)(xpe),Bt("design:type",String)],ca.prototype,"ledgerName",void 0);$t([(0,je.IsNotEmpty)(),Bt("design:type",String)],ca.prototype,"blockHash",void 0);$t([(0,je.IsNotEmpty)(),(0,je.Min)(0),Bt("design:type",Number)],ca.prototype,"blockNumber",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],ca.prototype,"chainId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"nodeRegistryContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"taskRegistryContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"taskAuthorizationContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"taskRequesterAddress",void 0);$t([(0,je.IsOptional)(),Bt("design:type",String)],ca.prototype,"taskPath",void 0);$t([(0,je.IsOptional)(),(0,je.Min)(0),Bt("design:type",Number)],ca.prototype,"taskVersion",void 0);$t([(0,je.IsOptional)(),Bt("design:type",Object)],ca.prototype,"signedRequestBody",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],ca.prototype,"senderAddress",void 0);$t([(0,je.IsOptional)(),(0,je.Allow)(),Bt("design:type",String)],ca.prototype,"input",void 0);var To=class{static{Ce(this,"APITaskCreatedMessageParams")}type="dispatch_task";taskId;executionId;msgHash;signature;ledgerName;blockHash;blockNumber;chainId;taskRegistryContractAddress;taskAuthorizationContractAddress;taskRequesterAddress;taskPath;taskVersion;senderAddress;executionTimeout;input;constructor(t,e,r,n,i,a,s,o,u,f,c,d,h,p,m,y){this.taskId=t,this.executionId=e,this.msgHash=r,this.signature=n,this.executionTimeout=m,this.ledgerName=a,this.blockHash=s,this.blockNumber=o,this.chainId=u,this.taskRegistryContractAddress=f,this.taskAuthorizationContractAddress=c,this.taskRequesterAddress=d,this.taskPath=h,this.taskVersion=p,this.senderAddress=i,this.input=y}};$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],To.prototype,"taskId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsUUID)(),Bt("design:type",String)],To.prototype,"executionId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],To.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],To.prototype,"signature",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEnum)(xpe),Bt("design:type",String)],To.prototype,"ledgerName",void 0);$t([(0,je.IsNotEmpty)(),Bt("design:type",String)],To.prototype,"blockHash",void 0);$t([(0,je.IsNotEmpty)(),(0,je.Min)(0),Bt("design:type",Number)],To.prototype,"blockNumber",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],To.prototype,"chainId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],To.prototype,"taskRegistryContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],To.prototype,"taskAuthorizationContractAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],To.prototype,"taskRequesterAddress",void 0);$t([(0,je.IsOptional)(),Bt("design:type",String)],To.prototype,"taskPath",void 0);$t([(0,je.IsOptional)(),(0,je.Min)(0),Bt("design:type",Number)],To.prototype,"taskVersion",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],To.prototype,"senderAddress",void 0);$t([(0,je.IsNumber)(),Bt("design:type",Number)],To.prototype,"executionTimeout",void 0);$t([(0,je.IsOptional)(),(0,je.Allow)(),Bt("design:type",String)],To.prototype,"input",void 0);var W_=class{static{Ce(this,"NodeOutcomeMessageParams")}executionId;senderAddress;encryptedSolution;msgHash;signature;constructor(t,e,r,n,i){this.executionId=t,this.signature=i,this.encryptedSolution=r,this.senderAddress=e,this.msgHash=n}};$t([(0,je.IsUUID)(),(0,je.IsNotEmpty)(),Bt("design:type",String)],W_.prototype,"executionId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],W_.prototype,"senderAddress",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>i5),Bt("design:type",i5)],W_.prototype,"encryptedSolution",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],W_.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],W_.prototype,"signature",void 0);var S2=class{static{Ce(this,"ApiOutcomeMessageParams")}executionId;senderAddress;bodyResponse;msgHash;signature;tlsHandshakeHash;status;totalTransferredBytes;constructor(t,e,r,n,i,a,s,o){this.executionId=t,this.signature=i,this.bodyResponse=r,this.tlsHandshakeHash=a,this.senderAddress=e,this.msgHash=n,this.status=s,this.totalTransferredBytes=o}};$t([(0,je.IsUUID)(),(0,je.IsNotEmpty)(),Bt("design:type",String)],S2.prototype,"executionId",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsEthereumAddress)(),Bt("design:type",String)],S2.prototype,"senderAddress",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsHash)("sha256"),Bt("design:type",String)],S2.prototype,"msgHash",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Xn),Bt("design:type",Xn)],S2.prototype,"signature",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],S2.prototype,"tlsHandshakeHash",void 0);$t([(0,je.IsNotEmpty)(),(0,je.IsString)(),Bt("design:type",String)],S2.prototype,"status",void 0);$t([(0,je.ValidateNested)(),(0,$1.Type)(()=>Ape),Bt("design:type",Ape)],S2.prototype,"totalTransferredBytes",void 0);var er=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},tr=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},u5=class{static{Ce(this,"DispatchTaskPayload")}executionId;msgHash;signature;limits;econParams;workers;senderAddress;input;constructor(t,e,r,n,i,a,s,o){this.executionId=t,this.msgHash=e,this.signature=r,this.limits=n,this.econParams=i,this.workers=a,this.senderAddress=s,this.input=o}};er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],u5.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],u5.prototype,"msgHash",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],u5.prototype,"signature",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>xm),tr("design:type",xm)],u5.prototype,"limits",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Tm),tr("design:type",Tm)],u5.prototype,"econParams",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>E2),tr("design:type",E2)],u5.prototype,"workers",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],u5.prototype,"senderAddress",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],u5.prototype,"input",void 0);var Ipe=class{static{Ce(this,"UnsignedDispatchTaskPayload")}executionId;limits;econParams;workers;input;constructor(t,e,r,n,i){this.executionId=t,this.limits=e,this.econParams=r,this.workers=n,this.input=i}};er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],Ipe.prototype,"executionId",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>xm),tr("design:type",xm)],Ipe.prototype,"limits",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Tm),tr("design:type",Tm)],Ipe.prototype,"econParams",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>E2),tr("design:type",E2)],Ipe.prototype,"workers",void 0);var t0a=class extends B1{static{Ce(this,"NodeOutcomePayload")}message;constructor(t,e,r,n,i,a){super(Om.NODE_OUTCOME,t,e,r,n,i,a),this.message=r,this.executionId=t,this.msgHash=e,this.signature=n,this.timestamp=a,this.sequencerAddress=i,this.message=r}};er([(0,at.ValidateNested)(),(0,oo.Type)(()=>W_),tr("design:type",W_)],t0a.prototype,"message",void 0);var r0a=class extends B1{static{Ce(this,"ApiOutcomePayload")}message;constructor(t,e,r,n,i,a){super(Om.API_OUTCOME,t,e,r,n,i,a),this.message=r,this.executionId=t,this.msgHash=e,this.signature=n,this.timestamp=a,this.sequencerAddress=i}};er([(0,at.ValidateNested)(),(0,oo.Type)(()=>S2),tr("design:type",S2)],r0a.prototype,"message",void 0);var G_=class{static{Ce(this,"ExecutionCompletedPayload")}type;executionId;transcriptHash;status;signature;signerAddress;timestamp;constructor(t,e,r,n,i,a){this.type=Om.EXECUTION_COMPLETED,this.executionId=t,this.transcriptHash=e,this.status=r,this.signature=n,this.signerAddress=i,this.timestamp=a}};er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],G_.prototype,"type",void 0);er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],G_.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],G_.prototype,"transcriptHash",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEnum)(wpe),tr("design:type",String)],G_.prototype,"status",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],G_.prototype,"signature",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],G_.prototype,"signerAddress",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],G_.prototype,"timestamp",void 0);var w2=class{static{Ce(this,"AdjudicationOutcomePayload")}type;executionId;status;signature;senderAddress;timestamp;output;metering;error;constructor(t,e,r,n,i,a,s,o){this.type=Om.ADJUDICATION_OUTCOME,this.executionId=t,this.status=e,this.signature=r,this.senderAddress=n,this.output=a,this.metering=s,this.timestamp=i,this.error=o}};er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],w2.prototype,"type",void 0);er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],w2.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEnum)(wpe),tr("design:type",String)],w2.prototype,"status",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],w2.prototype,"signature",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],w2.prototype,"senderAddress",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],w2.prototype,"timestamp",void 0);er([(0,at.IsOptional)(),(0,at.IsString)(),tr("design:type",String)],w2.prototype,"output",void 0);er([(0,at.IsOptional)(),(0,at.ValidateNested)(),(0,oo.Type)(()=>a5),tr("design:type",a5)],w2.prototype,"metering",void 0);er([(0,at.IsOptional)(),(0,at.IsString)(),tr("design:type",String)],w2.prototype,"error",void 0);var aT=class{static{Ce(this,"SolutionsRevealedPayload")}type;executionId;signature;clearTextSolutions;sequencerAddress;msgHash;timestamp;constructor(t,e,r,n,i,a){this.type=Om.SOLUTIONS_REVEALED,this.executionId=t,this.signature=e,this.clearTextSolutions=r,this.sequencerAddress=n,this.msgHash=i,this.timestamp=a}};er([(0,at.IsUUID)(),(0,at.IsNotEmpty)(),tr("design:type",String)],aT.prototype,"executionId",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],aT.prototype,"signature",void 0);er([(0,at.ValidateNested)({each:!0}),(0,oo.Type)(()=>qKe),tr("design:type",Array)],aT.prototype,"clearTextSolutions",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEthereumAddress)(),tr("design:type",String)],aT.prototype,"sequencerAddress",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],aT.prototype,"msgHash",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],aT.prototype,"timestamp",void 0);var K_=class extends B1{static{Ce(this,"TaskCreatedPayload")}executionId;msgHash;message;signature;publicKey;sequencerAddress;timestamp;constructor(t,e,r,n,i,a,s){super(Om.TASK_CREATED,t,e,r,n,a,s),this.message=r,this.executionId=t,this.msgHash=e,this.signature=n,this.timestamp=s,this.sequencerAddress=a,this.publicKey=i,this.message=r}};er([(0,at.IsNotEmpty)(),(0,at.IsUUID)(),tr("design:type",String)],K_.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],K_.prototype,"msgHash",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>ca),tr("design:type",ca)],K_.prototype,"message",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],K_.prototype,"signature",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],K_.prototype,"publicKey",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEthereumAddress)(),tr("design:type",String)],K_.prototype,"sequencerAddress",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],K_.prototype,"timestamp",void 0);var Y_=class extends B1{static{Ce(this,"APITaskCreatedPayload")}executionId;msgHash;message;signature;publicKey;sequencerAddress;timestamp;constructor(t,e,r,n,i,a,s){super(Om.API_TASK_CREATED,t,e,r,n,a,s),this.message=r,this.executionId=t,this.msgHash=e,this.signature=n,this.timestamp=s,this.sequencerAddress=a,this.publicKey=i,this.message=r}};er([(0,at.IsNotEmpty)(),(0,at.IsUUID)(),tr("design:type",String)],Y_.prototype,"executionId",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsHash)("sha256"),tr("design:type",String)],Y_.prototype,"msgHash",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>To),tr("design:type",To)],Y_.prototype,"message",void 0);er([(0,at.ValidateNested)(),(0,oo.Type)(()=>Xn),tr("design:type",Xn)],Y_.prototype,"signature",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsString)(),tr("design:type",String)],Y_.prototype,"publicKey",void 0);er([(0,at.IsNotEmpty)(),(0,at.IsEthereumAddress)(),tr("design:type",String)],Y_.prototype,"sequencerAddress",void 0);er([s5(),(0,at.IsNotEmpty)(),tr("design:type",Number)],Y_.prototype,"timestamp",void 0);var _k=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Ek=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},Sk=class{static{Ce(this,"ComputedOutcomePayload")}executionId;msgHash;signature;senderAddress;encryptedSolution;constructor(t,e,r,n,i){this.executionId=t,this.msgHash=e,this.signature=r,this.senderAddress=n,this.encryptedSolution=i}};_k([(0,kl.IsUUID)(),(0,kl.IsNotEmpty)(),Ek("design:type",String)],Sk.prototype,"executionId",void 0);_k([(0,kl.IsNotEmpty)(),(0,kl.IsHash)("sha256"),Ek("design:type",String)],Sk.prototype,"msgHash",void 0);_k([(0,kl.ValidateNested)(),(0,NKe.Type)(()=>Xn),Ek("design:type",Xn)],Sk.prototype,"signature",void 0);_k([(0,kl.IsNotEmpty)(),(0,kl.IsEthereumAddress)(),Ek("design:type",String)],Sk.prototype,"senderAddress",void 0);_k([(0,kl.ValidateNested)(),(0,NKe.Type)(()=>i5),Ek("design:type",i5)],Sk.prototype,"encryptedSolution",void 0);var qn=function(t,e,r,n){var i=arguments.length,a=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(t,e,r,n);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(i<3?s(a):i>3?s(e,r,a):s(e,r))||a);return i>3&&a&&Object.defineProperty(e,r,a),a},Nn=function(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)},n0a=class{static{Ce(this,"PushTaskPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],n0a.prototype,"taskId",void 0);var i0a=class{static{Ce(this,"PullTaskPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],i0a.prototype,"taskId",void 0);var DKe=class{static{Ce(this,"CheckpointTaskPayload")}input;checkpoint;taskId;constructor(t,e,r){this.taskId=t,this.checkpoint=e,this.input=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],DKe.prototype,"input",void 0);qn([(0,wt.IsNotEmpty)(),Nn("design:type",Object)],DKe.prototype,"checkpoint",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],DKe.prototype,"taskId",void 0);var $vr=class{static{Ce(this,"ListTaskCheckpointPayload")}input;taskId;constructor(t,e){this.taskId=t,this.input=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],$vr.prototype,"input",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],$vr.prototype,"taskId",void 0);var kKe=class{static{Ce(this,"ExecuteTaskPayload")}executionId;input;taskId;constructor(t,e,r){this.taskId=t,this.executionId=e,this.input=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],kKe.prototype,"executionId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],kKe.prototype,"input",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],kKe.prototype,"taskId",void 0);var Bvr=class{static{Ce(this,"InstrumentTaskPayload")}instrumentationId;taskId;constructor(t,e){this.taskId=t,this.instrumentationId=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],Bvr.prototype,"instrumentationId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Bvr.prototype,"taskId",void 0);var a0a=class{static{Ce(this,"TaskPushedPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],a0a.prototype,"taskId",void 0);var s0a=class{static{Ce(this,"TaskPulledPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],s0a.prototype,"taskId",void 0);var o0a=class{static{Ce(this,"TaskPulledFailedPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],o0a.prototype,"taskId",void 0);var Fvr=class{static{Ce(this,"TaskCheckpointedPayload")}checkpointHash;taskId;constructor(t,e){this.taskId=t,this.checkpointHash=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Fvr.prototype,"checkpointHash",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Fvr.prototype,"taskId",void 0);var u0a=class{static{Ce(this,"TaskCheckpointedFailedPayload")}taskId;constructor(t){this.taskId=t}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],u0a.prototype,"taskId",void 0);var Lvr=class{static{Ce(this,"TaskCheckpointsListedPayload")}checkpointCount;taskId;constructor(t,e){this.taskId=t,this.checkpointCount=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsNumber)(),Nn("design:type",Number)],Lvr.prototype,"checkpointCount",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Lvr.prototype,"taskId",void 0);var f0a=class{static{Ce(this,"TaskCheckpointsListFailedPayload")}taskId;constructor(t,e){this.taskId=e}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],f0a.prototype,"taskId",void 0);var $Ke=class{static{Ce(this,"TaskExecutedPayload")}executionId;output;taskId;constructor(t,e,r){this.taskId=t,this.executionId=e,this.output=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],$Ke.prototype,"executionId",void 0);qn([(0,wt.IsOptional)(),(0,wt.IsString)(),Nn("design:type",String)],$Ke.prototype,"output",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],$Ke.prototype,"taskId",void 0);var jvr=class{static{Ce(this,"TaskExecutionFailedPayload")}executionId;taskId;constructor(t,e,r){this.taskId=e,this.executionId=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],jvr.prototype,"executionId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],jvr.prototype,"taskId",void 0);var Mpe=class{static{Ce(this,"TaskInstrumentedPayload")}instrumentationId;output;taskId;instrumentedTaskId;constructor(t,e,r,n){this.taskId=t,this.instrumentationId=e,this.output=n,this.instrumentedTaskId=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],Mpe.prototype,"instrumentationId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Mpe.prototype,"output",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Mpe.prototype,"taskId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Mpe.prototype,"instrumentedTaskId",void 0);var Uvr=class{static{Ce(this,"TaskInstrumentedFailedPayload")}instrumentationId;taskId;constructor(t,e,r){this.taskId=e,this.instrumentationId=r}};qn([(0,wt.IsNotEmpty)(),(0,wt.IsUUID)(),Nn("design:type",String)],Uvr.prototype,"instrumentationId",void 0);qn([(0,wt.IsNotEmpty)(),(0,wt.IsString)(),Nn("design:type",String)],Uvr.prototype,"taskId",void 0);var evr;(function(t){t.ACTIVE="active",t.INACTIVE="inactive"})(evr||(evr={}));var s3s=Vvr.default.default;async function BKe(t,e,r,n,i,a,s){let o={},u=0,f=0,c={...e.headers,"x-service-name":"truebit-api-adapter"},d=dKe.create({headers:{Connection:"keep-alive"},httpsAgent:new Nua.Agent({keepAlive:!0}).on("keylog",(h,p)=>{let m=p.getSession(),y=Buffer.from(m).toString("hex").toUpperCase();o={tlsCert:qTe(p.getPeerCertificate(!0)),localCertificate:qTe(p.getCertificate()),ephemeral:p.getEphemeralKeyInfo(),cipher:p.getCipher(),session:y,ticket:p.getTLSTicket(),localAddress:p.localAddress,sharedSigAlgs:p.getSharedSigalgs(),remoteAddress:p.remoteAddress,protocol:p.getProtocol()}}),maxContentLength:1/0,maxBodyLength:1/0});d.interceptors.request.use(h=>{let p=h.data?JSON.stringify(h.data):"";return u=(h.url?.length||0)+(p.length||0)+JSON.stringify(h.headers).length,h}),d.interceptors.response.use(h=>(f=JSON.stringify(h.data).length+JSON.stringify(h.headers).length,h));try{let h;if(t=="cli"||Hvr(e.url))switch(e.method.toLowerCase()){case"get":h=await d.get(e.url,{headers:c,timeout:r});break;case"patch":h=await d.patch(e.url,e.body,{headers:c,timeout:r});break;case"post":h=await d.post(e.url,e.body,{headers:c,timeout:r});break;case"put":h=await d.put(e.url,e.body,{headers:c,timeout:r});break;case"delete":h=await d.delete(e.url,{headers:c,timeout:r});break;default:throw new Error("Unsupported HTTP method")}else{let p=new tvr.default;p.append("taskId",t),s&&p.append("executionId",s),n&&p.append("namespace",n),i&&p.append("taskname",i),p.append("url",e.url),p.append("method",e.method.toLowerCase()),p.append("headers",JSON.stringify(c)),p.append("body",typeof e.body=="object"?JSON.stringify(e.body):e.body??void 0),p.append("timeout",r.toString()),a&&p.append("manifest",Buffer.from(a),{filename:"manifest.json",contentType:"application/json"}),h=await dKe.post(`${process.env.NITRO_URL}/callAPI`,p,{timeout:24e4,headers:{...p.getHeaders()}})}return[h.data,JSON.stringify(o),_2.SUCCEED,u,f]}catch(h){let p,m;return h.response?.data?m=JSON.stringify(h.response.data):m=h.message,dKe.isAxiosError(h)?p=h.response||{data:m,status:500,statusText:"",headers:{},config:{headers:{}}}:p={data:m,status:500,statusText:"",headers:{},config:{headers:{}}},[p.data,JSON.stringify(o),_2.FAILED,u,f]}}Ce(BKe,"handleAxiosCall");function Hvr(t){let e=new Set(["localhost","127.0.0.1","hardhat-node","n8n-node","dispatcher"]),r=!!process.env.ENABLE_AXIOS_LOCAL_CALL;try{let n=new URL(t).hostname;return e.has(n)&&r}catch{return!1}}Ce(Hvr,"isAxiosLocalCall");function Gvr(t){let e=t.split(".").map(Number);return e.length!==4||e.some(r=>Number.isNaN(r)||r<0||r>255)?!1:e[0]===10||e[0]===172&&e[1]>=16&&e[1]<=31||e[0]===192&&e[1]===168||e[0]===127||e[0]===169&&e[1]===254}Ce(Gvr,"isPrivateIP");function Kvr(t){if(["local","testnet","staging"].includes(process.env.TRUEBIT_ENV))return[!0,""];try{let e=new URL(t),r=e.hostname;if(!["http:","https:"].includes(e.protocol))return[!1,"Only HTTP and HTTPS protocols are allowed"];if(l0a(r)){if(Gvr(r))return[!1,"Internal IP addresses are not allowed"]}else{let n=[".local",".internal",".cluster.local","localhost","kubernetes","kubernetes.default","kubernetes.default.svc","kubernetes.default.svc.cluster.local"],i=r.toLowerCase();for(let a of n)if(i===a||i.endsWith(a))return[!1,"Internal domains are not allowed"]}return[!0,""]}catch{return[!1,"Invalid URL format"]}}Ce(Kvr,"validateExternalUrl");function FKe(t){let e=t.servers;if(e&&e.length>0){let r=e[0],n=r.url;return r.variables&&Object.keys(r.variables).forEach(i=>{let a=r.variables[i],s=a.default||a.enum?.[0];if(s===void 0)throw new Error(`No default value found for variable ${i}`);n=n.replace(`{${i}}`,s)}),n}else throw new Error("No servers defined in OpenAPI document")}Ce(FKe,"getBaseURLFromOpenAPI");function Yvr(t,e,r){let n=t.paths?.[e];if(!n)return null;let i=n[r.toLowerCase()];return i&&i.operationId||null}Ce(Yvr,"findOperationId");function Jvr(t,e,r){let n=e;r&&Object.entries(r).forEach(([s,o])=>{n=n.replace(`{${s}}`,encodeURIComponent(String(o)))});let i=t.endsWith("/")?t.slice(0,-1):t,a=n.startsWith("/")?n:`/${n}`;return`${i}${a}`}Ce(Jvr,"buildUrlWithPathParams");function Ppe(t,e,r){let n=new Map,i=t.paths?.[e];if(!i)return n;let a=i.parameters||[],s=i[r.toLowerCase()]?.parameters||[],o=[...a,...s];for(let f of o)"name"in f&&"in"in f&&n.set(f.name,f.in);let u=e.match(/\{([^}]+)\}/g);return u&&u.forEach(f=>{let c=f.slice(1,-1);n.has(c)||n.set(c,"path")}),n}Ce(Ppe,"categorizeParameters");function Zvr(t,e,r,n){if(!n||Object.keys(n).length===0)return"";let i=Ppe(t,e,r),a=Object.entries(n).filter(([s])=>{let o=i.get(s);return o==="query"||!o}).map(([s,o])=>Array.isArray(o)?o.map(u=>`${encodeURIComponent(s)}=${encodeURIComponent(String(u))}`).join("&"):`${encodeURIComponent(s)}=${encodeURIComponent(String(o))}`).join("&");return a?`?${a}`:""}Ce(Zvr,"buildQueryString");function Xvr(t,e,r,n){let i={};if(!n||Object.keys(n).length===0)return i;let a=Ppe(t,e,r);for(let[s,o]of Object.entries(n))a.get(s)==="header"&&(i[s]=String(o));return i}Ce(Xvr,"extractHeaderParams");function Qvr(t,e,r,n){if(!n||Object.keys(n).length===0)return null;let i=Ppe(t,e,r),a=[];for(let[s,o]of Object.entries(n))i.get(s)==="cookie"&&a.push(`${encodeURIComponent(s)}=${encodeURIComponent(String(o))}`);return a.length>0?a.join("; "):null}Ce(Qvr,"extractCookieParams");async function Rpe(t,e){let r=await zvr(t),n=Yvr(r,e.path,e.method);if(n){let i=e.body;if(typeof e.body=="string"&&e.body.includes("=")){let u=new URLSearchParams(e.body);i=Object.fromEntries(u.entries())}let a={spec:r,operationId:n,parameters:e.params||{},requestBody:i,securities:e.securities,server:e.server,serverVariables:e.serverVariables,responseContentType:e.responseContentType};e.requestContentType&&(a.requestContentType=e.requestContentType);let s=Wvr.default.buildRequest(a),o={...s.headers,...e.headers};return{url:s.url,method:s.method.toUpperCase(),headers:o,body:s.body}}else{let i=FKe(r),a=Jvr(i,e.path,e.params),s=Zvr(r,e.path,e.method,e.params),o=Xvr(r,e.path,e.method,e.params),u=Qvr(r,e.path,e.method,e.params),f=e.requestContentType||"application/json",c={...o,...e.headers};e.body&&(c["Content-Type"]=f),e.responseContentType&&(c.Accept=e.responseContentType),u&&(c.Cookie=c.Cookie?`${c.Cookie}; ${u}`:u);let d;return e.body&&(typeof e.body=="string"?d=e.body:f==="application/x-www-form-urlencoded"?d=new URLSearchParams(e.body).toString():d=JSON.stringify(e.body)),{url:`${a}${s}`,method:e.method.toUpperCase(),headers:c,body:d}}}Ce(Rpe,"createRequest");async function LKe(t,e){try{let r=await zvr(t),n=FKe(r),[i,a]=Kvr(n);return i?(await Rpe(t,e),[n,"",_2.SUCCEED]):(console.warn(`Manifest-based call blocked: ${a} - baseURL: ${n}`),["",`Security: ${a}`,_2.FAILED])}catch(r){return console.log(r),["",r,_2.FAILED]}}Ce(LKe,"handleEnforcerManifestCheck");async function jKe(t){try{let e=JSON.parse(t);return[{path:e.path.toString(),method:e.method.toString(),body:e.body,params:e.params,headers:e.headers||{}},"",_2.SUCCEED]}catch(e){return console.error("Invalid JSON format:",e),[null,"Api_Adapter create request input format",_2.FAILED]}}Ce(jKe,"createRequestInput");var e_r=Ce((t,e,r)=>Zua(t,e).authHeaders(r),"handleGetAuthHeaders");import F1 from"chalk";var UKe=async(t,e,r,n)=>{let i="",a=t_r.readFileSync(e,"utf8"),s=JSON.parse(a).input,o=JSON.parse(a).executionTimeout,[u,f,c]=await jKe(JSON.stringify(s));if(i+=`${F1.cyanBright(`
502
502
  Input request :
503
503
  `)}`,i+=JSON.stringify(u,null,2)+`
504
504
  `,u===null)throw i+=`Invalid message input - ${F1.red("FAIL")}
@@ -508,12 +508,12 @@ Base URL = `)}${d}
508
508
  `;let E=await Rpe(t,u),A=new URL(d),x={host:A.host,path:A.pathname+u.path,method:u.method.toUpperCase(),headers:{"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify(u.body)||""};if(r&&(_=e_r(r,n,x),E.headers={...E.headers,..._}),[m,y,b]=await BKe("cli",E,o),b===null)throw i+=`${F1.cyanBright("OpenAPI manifest check -")} ${F1.red("FAIL")}
509
509
  `,new Error(` Error in Axios ${m}`);i+=`${F1.cyanBright(`
510
510
  API Task response`)}
511
- `,i+=F1.green(JSON.stringify(m,null,2)),console.log(`API Task executed with status - ${F1.green("OK")} `),console.log(i)}else throw console.info(`Axios call - ${F1.red("ERROR")} `),console.log(i),new Error(`Invalid message input ${h}`)};import{Wallet as c0a}from"ethers";function r_r(t){return/^[a-f0-9]{64}$/gi.test(t)}function n_r(t){try{new c0a(t)}catch{return!1}return!0}var sT=t=>{let e=t.split("_");return!!r_r(e[e.length-1])};function J_(t){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(t))throw new Error("Invalid API key format")}vl();w0();import{ethers as d0a}from"ethers";vl();import qpe from"axios";async function i_r(t,e,r,n,i,a){let s={user:t,namespace:e,nonce:BigInt(r),deadline:n,signatureMeta:i};try{let o=await E0(),u={...s};return u.nonce=String(s.nonce),await o.post("user/relayer/namespace",u,{params:{fromSetup:a}})}catch(o){throw qpe.isAxiosError(o)?o.response?new Error(`The server responding with an error - ${o.response.status+" - "+o.response.statusText+" - "+o.response.data.message}.`):o.request?new Error(`The server is not responding - ${o.message}.`):new Error(`There was an error in the communication with the server - ${o.message}.`):typeof o=="string"?new Error(`There was an error in the communication with the server -> ${o}`):new Error("There was an error in the communication with the server.")}}async function a_r(t,e,r,n,i){let a={user:t,apiKeyHash:e,deadline:r,signatureMeta:n};try{return await(await E0()).post("user/relayer/auth",a,{params:{fromSetup:i}})}catch(s){throw qpe.isAxiosError(s)?s.response?new Error(`The server responding with an error - ${s.response.status+" - "+s.response.statusText+" - "+s.response.data.message}.`):s.request?new Error(`The server is not responding - ${s.message}.`):new Error(`There was an error in the communication with the server - ${s.message}.`):typeof s=="string"?new Error(`There was an error in the communication with the server -> ${s}`):new Error("There was an error in the communication with the server.")}}async function s_r(t){try{return await(await E0()).post("user/relayer/register",t,{timeout:18e4,params:{fromSetup:"true"}})}catch(e){throw qpe.isAxiosError(e)?e.response?new Error(`The server responding with an error - ${e.response.status+" - "+e.response.statusText+" - "+e.response.data.message}.`):e.request?new Error(`The server is not responding - ${e.message}.`):new Error(`There was an error in the communication with the server - ${e.message}.`):typeof e=="string"?new Error(`There was an error in the communication with the server -> ${e}`):new Error("There was an error in the communication with the server.")}}async function o_r(t,e,r,n,i,a,s){let o={user:t,namespace:e,taskName:r,task:n,nonce:BigInt(i),deadline:a,signatureMeta:s};try{let u=await E0(),f={...o};return f.nonce=String(o.nonce),await u.post("user/relayer/task",f)}catch(u){throw qpe.isAxiosError(u)?u.response?new Error(`The server responding with an error - ${u.response.status+" - "+u.response.statusText+" - "+u.response.data.message}.`):u.request?new Error(`The server is not responding - ${u.message}.`):new Error(`There was an error in the communication with the server - ${u.message}.`):typeof u=="string"?new Error(`There was an error in the communication with the server -> ${u}`):new Error("There was an error in the communication with the server.")}}w0();async function VKe(t,e,r=null){A0(t,"Namespace");let n,i=gi(Mu(),zt.AVAX),a=Dn("address");if(!a)throw`Please provide an address property in '${Lh()}/.truebit/secret.json'`;return r?n=await i.taskRegistry.registerTaskNamespace(t):n=await p0a(a,t,i,e),n}async function p0a(t,e,r,n){let i=await r.taskRegistry.getEIP712Domain(),a={RegisterTaskNamespaceMeta:[{name:"user",type:"address"},{name:"namespace",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},s=BigInt(await r.taskRegistry.nonces(t)),o={user:d0a.getAddress(t),namespace:e,nonce:s,deadline:Math.floor(Date.now()/1e3)+3600};if(!r.utils)throw new Error("Private key is required for signing operations");let u=await r.utils.signMeta(i,a,o);return Date.now()/1e3>=o.deadline&&(o.deadline=Math.floor(Date.now()/1e3)+7200,u=await r.utils.signMeta(i,a,o)),(await i_r(t,e,o.nonce,o.deadline,u,n)).status==201}async function u_r(t,e,r,n,i){let a=await i.taskRegistry.getEIP712Domain(),s={Task:[{name:"taskId",type:"string"},{name:"meta",type:"string"},{name:"active",type:"bool"}],RegisterTaskMeta:[{name:"user",type:"address"},{name:"namespace",type:"string"},{name:"taskName",type:"string"},{name:"task",type:"Task"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},o={user:t,namespace:e,taskName:r,task:{taskId:n.taskId,meta:n.meta,active:n.active},nonce:BigInt(await i.taskRegistry.nonces(t)),deadline:Math.floor(Date.now()/1e3)+3600};if(!i.utils)throw new Error("Private key is required for signing operations");let u=await i.utils.signMeta(a,s,o);return Date.now()/1e3>=o.deadline&&(o.deadline=Math.floor(Date.now()/1e3)+7200,u=await i.utils.signMeta(a,s,o)),(await o_r(t,e,r,n,o.nonce,o.deadline,u)).status==201}async function f_r(t){return await(await Fh()).post("api/filesystem/push",xc({taskId:t})).catch(Ac)}async function l_r(t,e){let r=Mu();return await gi(r,zt.AVAX).taskRegistry.getLatestVersion(t,e)}async function c_r(t,e,r,n=null){let i=Mu(),a=gi(i,zt.AVAX),s=!1;try{if(n)s=await a.taskRegistry.registerTask(e,r,t);else{let o=Dn("address");if(!o)throw Error(`Please provide an address property in '${Lh()}/.truebit/secret.json'`);s=await u_r(o,e,r,t,a)}}catch(o){let u=o.message,f=u.match(/execution reverted: "(.*?)" /)?.[1];throw f?new Error(`Trying to register a task -> ${f}`):new Error(`Trying to register a task -> ${u}`)}return s}async function d_r(t,e,r,n,i){if(!sT(r))throw new Error("Invalid taskId");if(n)try{n=JSON.stringify(n)}catch{throw new Error("Meta information cannot be serialized as JSON")}let a=null;try{await f_r(r),await c_r({taskId:r,meta:n||"",active:!0},t,e,i),a=await l_r(t,e)}catch(s){if(s instanceof Error)throw s;if(typeof s=="string")throw new Error(s)}return a}async function p_r(t,e,r){let n=Mu(),i=gi(n,zt.AVAX),a=await i.taskRegistry.getLatestVersion(t,e);return await i.taskRegistry.setTaskLabel(t,e,a,r)}vl();import*as Npe from"fs";import*as m_r from"path";var y_r=async(t,e,r)=>{if(console.log("Executing the function Task"),!sT(e))throw"Invalid task id";let n={status:"",result:""},i=await Fh(),a=await i.post("api/execution/",xc({taskId:e,input:r})).catch(Ac),s=a.data.executionId;return console.log(`Execution Id: ${s}`),a.data.payload?(h_r(t,a.data.payload),n.status=a.data.payload.status,n.result=a.data.payload.output?.result?a.data.payload.output?.result:""):await new Promise(o=>{let u=setInterval(async()=>{try{let f=await i.get(`api/execution/${s}`);f.data&&f.data.status!="running"&&(h_r(t,f.data),clearInterval(u),n.status=f.data.status,n.result=f.data.output?.result?f.data.output?.result:"",o())}catch(f){console.error(`Error polling execution status: ${f}`),clearInterval(u),n.status="failed",n.result=`Polling error: ${f}`,o()}},1e3);setTimeout(()=>{clearInterval(u),n.status="timeout",n.result="Task execution timed out after 30 seconds",console.error("Task execution timed out after 30 seconds"),o()},3e4)}),n};function h_r(t,e){if(console.log(`Task executed with status: ${e.status}`),e.output)if(console.log(`Task executed with result: ${e.output.result}`),e.output.metering){console.log("Task resource usage:");let r=e.output.metering,n=(a,s)=>{if(s==0)return"N/A";let o=a/s;return o<1?"Short":Number(o.toFixed(0))},i={Gas:{Unit:"Steps",Limits:r.limits.gas,Peak:"N/A","Last status":r.last.steps,Capacity:n(r.limits.gas,r.last.steps)},"Nested calls":{Unit:"Calls",Limits:r.limits.call,Peak:r.peak.call,"Last status":r.last.call,Capacity:n(r.limits.call,r.peak.call)},"Frame memory":{Unit:"Bytes",Limits:r.limits.frame,Peak:r.peak.frame,"Last status":r.last.frame,Capacity:n(r.limits.frame,r.peak.frame)},"System memory":{Unit:"64 Kb pages",Limits:r.limits.memory,Peak:r.peak.memory,"Last status":"\u{1D6AB} "+r.last.memoryGrowDelta,Capacity:n(r.limits.memory,r.peak.memory)}};if(console.table(i),t.updateConfig){let a=m_r.join(process.cwd(),"config.json");try{let s=Npe.readFileSync(a),o=JSON.parse(s.toString());o.run.limits.gas=String(r.last.steps),o.run.limits.call=String(r.peak.call),o.run.limits.frame=String(r.peak.frame),o.run.limits.memory=String(r.limits.memory),Npe.writeFileSync(a,JSON.stringify(o)),console.log("Task limits updated with last/peak values (--update-config)")}catch(s){console.log(`Error updating config file at '${a}': '${s}', (--update-config)`)}}}else console.log("No task resource usage reported.")}vl();async function b_r(t){try{let r=await(await Fh()).post("api/instrumentation",xc({taskId:`${t}`})).catch(Ac);if(r.data.error?.status===!0)if(r.data.error.message)console.log(`Instrumentation failed: ${r.data.error?.message}`);else throw"Malformed instrumentation service error message";else if(r.data.payload&&r.data.payload.instrumentedTaskId)console.log("Your function task is ready."),console.log(`Use the following TaskId for execution or deployment:
511
+ `,i+=F1.green(JSON.stringify(m,null,2)),console.log(`API Task executed with status - ${F1.green("OK")} `),console.log(i)}else throw console.info(`Axios call - ${F1.red("ERROR")} `),console.log(i),new Error(`Invalid message input ${h}`)};import{Wallet as c0a}from"ethers";function r_r(t){return/^[a-f0-9]{64}$/gi.test(t)}function n_r(t){try{new c0a(t)}catch{return!1}return!0}var sT=t=>{let e=t.split("_");return!!r_r(e[e.length-1])};function J_(t){if(!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(t))throw new Error("Invalid API key format")}vl();w0();import{ethers as d0a}from"ethers";vl();import qpe from"axios";async function i_r(t,e,r,n,i,a){let s={user:t,namespace:e,nonce:BigInt(r),deadline:n,signatureMeta:i};try{let o=await E0(),u={...s};return u.nonce=String(s.nonce),await o.post("user/relayer/namespace",u,{params:{fromSetup:a}})}catch(o){throw qpe.isAxiosError(o)?o.response?new Error(`The server responding with an error - ${o.response.status+" - "+o.response.statusText+" - "+o.response.data.message}.`):o.request?new Error(`The server is not responding - ${o.message}.`):new Error(`There was an error in the communication with the server - ${o.message}.`):typeof o=="string"?new Error(`There was an error in the communication with the server -> ${o}`):new Error("There was an error in the communication with the server.")}}async function a_r(t,e,r,n,i){let a={user:t,apiKeyHash:e,deadline:r,signatureMeta:n};try{return await(await E0()).post("user/relayer/auth",a,{params:{fromSetup:i}})}catch(s){throw qpe.isAxiosError(s)?s.response?new Error(`The server responding with an error - ${s.response.status+" - "+s.response.statusText+" - "+s.response.data.message}.`):s.request?new Error(`The server is not responding - ${s.message}.`):new Error(`There was an error in the communication with the server - ${s.message}.`):typeof s=="string"?new Error(`There was an error in the communication with the server -> ${s}`):new Error("There was an error in the communication with the server.")}}async function s_r(t){try{return await(await E0()).post("user/relayer/register",t,{params:{fromSetup:"true"}})}catch(e){throw qpe.isAxiosError(e)?e.response?new Error(`The server responding with an error - ${e.response.status+" - "+e.response.statusText+" - "+e.response.data.message}.`):e.request?new Error(`The server is not responding - ${e.message}.`):new Error(`There was an error in the communication with the server - ${e.message}.`):typeof e=="string"?new Error(`There was an error in the communication with the server -> ${e}`):new Error("There was an error in the communication with the server.")}}async function o_r(t,e,r,n,i,a,s){let o={user:t,namespace:e,taskName:r,task:n,nonce:BigInt(i),deadline:a,signatureMeta:s};try{let u=await E0(),f={...o};return f.nonce=String(o.nonce),await u.post("user/relayer/task",f)}catch(u){throw qpe.isAxiosError(u)?u.response?new Error(`The server responding with an error - ${u.response.status+" - "+u.response.statusText+" - "+u.response.data.message}.`):u.request?new Error(`The server is not responding - ${u.message}.`):new Error(`There was an error in the communication with the server - ${u.message}.`):typeof u=="string"?new Error(`There was an error in the communication with the server -> ${u}`):new Error("There was an error in the communication with the server.")}}w0();async function VKe(t,e,r=null){A0(t,"Namespace");let n,i=gi(Mu(),zt.AVAX),a=Dn("address");if(!a)throw`Please provide an address property in '${Lh()}/.truebit/secret.json'`;return r?n=await i.taskRegistry.registerTaskNamespace(t):n=await p0a(a,t,i,e),n}async function p0a(t,e,r,n){let i=await r.taskRegistry.getEIP712Domain(),a={RegisterTaskNamespaceMeta:[{name:"user",type:"address"},{name:"namespace",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},s=BigInt(await r.taskRegistry.nonces(t)),o={user:d0a.getAddress(t),namespace:e,nonce:s,deadline:Math.floor(Date.now()/1e3)+3600};if(!r.utils)throw new Error("Private key is required for signing operations");let u=await r.utils.signMeta(i,a,o);return Date.now()/1e3>=o.deadline&&(o.deadline=Math.floor(Date.now()/1e3)+7200,u=await r.utils.signMeta(i,a,o)),(await i_r(t,e,o.nonce,o.deadline,u,n)).status==201}async function u_r(t,e,r,n,i){let a=await i.taskRegistry.getEIP712Domain(),s={Task:[{name:"taskId",type:"string"},{name:"meta",type:"string"},{name:"active",type:"bool"}],RegisterTaskMeta:[{name:"user",type:"address"},{name:"namespace",type:"string"},{name:"taskName",type:"string"},{name:"task",type:"Task"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},o={user:t,namespace:e,taskName:r,task:{taskId:n.taskId,meta:n.meta,active:n.active},nonce:BigInt(await i.taskRegistry.nonces(t)),deadline:Math.floor(Date.now()/1e3)+3600};if(!i.utils)throw new Error("Private key is required for signing operations");let u=await i.utils.signMeta(a,s,o);return Date.now()/1e3>=o.deadline&&(o.deadline=Math.floor(Date.now()/1e3)+7200,u=await i.utils.signMeta(a,s,o)),(await o_r(t,e,r,n,o.nonce,o.deadline,u)).status==201}async function f_r(t){return await(await Fh()).post("api/filesystem/push",xc({taskId:t})).catch(Ac)}async function l_r(t,e){let r=Mu();return await gi(r,zt.AVAX).taskRegistry.getLatestVersion(t,e)}async function c_r(t,e,r,n=null){let i=Mu(),a=gi(i,zt.AVAX),s=!1;try{if(n)s=await a.taskRegistry.registerTask(e,r,t);else{let o=Dn("address");if(!o)throw Error(`Please provide an address property in '${Lh()}/.truebit/secret.json'`);s=await u_r(o,e,r,t,a)}}catch(o){let u=o.message,f=u.match(/execution reverted: "(.*?)" /)?.[1];throw f?new Error(`Trying to register a task -> ${f}`):new Error(`Trying to register a task -> ${u}`)}return s}async function d_r(t,e,r,n,i){if(!sT(r))throw new Error("Invalid taskId");if(n)try{n=JSON.stringify(n)}catch{throw new Error("Meta information cannot be serialized as JSON")}let a=null;try{await f_r(r),await c_r({taskId:r,meta:n||"",active:!0},t,e,i),a=await l_r(t,e)}catch(s){if(s instanceof Error)throw s;if(typeof s=="string")throw new Error(s)}return a}async function p_r(t,e,r){let n=Mu(),i=gi(n,zt.AVAX),a=await i.taskRegistry.getLatestVersion(t,e);return await i.taskRegistry.setTaskLabel(t,e,a,r)}vl();import*as Npe from"fs";import*as m_r from"path";var y_r=async(t,e,r)=>{if(console.log("Executing the function Task"),!sT(e))throw"Invalid task id";let n={status:"",result:""},i=await Fh(),a=await i.post("api/execution/",xc({taskId:e,input:r})).catch(Ac),s=a.data.executionId;return console.log(`Execution Id: ${s}`),a.data.payload?(h_r(t,a.data.payload),n.status=a.data.payload.status,n.result=a.data.payload.output?.result?a.data.payload.output?.result:""):await new Promise(o=>{let u=setInterval(async()=>{try{let f=await i.get(`api/execution/${s}`);f.data&&f.data.status!="running"&&(h_r(t,f.data),clearInterval(u),n.status=f.data.status,n.result=f.data.output?.result?f.data.output?.result:"",o())}catch(f){console.error(`Error polling execution status: ${f}`),clearInterval(u),n.status="failed",n.result=`Polling error: ${f}`,o()}},1e3);setTimeout(()=>{clearInterval(u),n.status="timeout",n.result="Task execution timed out after 30 seconds",console.error("Task execution timed out after 30 seconds"),o()},3e4)}),n};function h_r(t,e){if(console.log(`Task executed with status: ${e.status}`),e.output)if(console.log(`Task executed with result: ${e.output.result}`),e.output.metering){console.log("Task resource usage:");let r=e.output.metering,n=(a,s)=>{if(s==0)return"N/A";let o=a/s;return o<1?"Short":Number(o.toFixed(0))},i={Gas:{Unit:"Steps",Limits:r.limits.gas,Peak:"N/A","Last status":r.last.steps,Capacity:n(r.limits.gas,r.last.steps)},"Nested calls":{Unit:"Calls",Limits:r.limits.call,Peak:r.peak.call,"Last status":r.last.call,Capacity:n(r.limits.call,r.peak.call)},"Frame memory":{Unit:"Bytes",Limits:r.limits.frame,Peak:r.peak.frame,"Last status":r.last.frame,Capacity:n(r.limits.frame,r.peak.frame)},"System memory":{Unit:"64 Kb pages",Limits:r.limits.memory,Peak:r.peak.memory,"Last status":"\u{1D6AB} "+r.last.memoryGrowDelta,Capacity:n(r.limits.memory,r.peak.memory)}};if(console.table(i),t.updateConfig){let a=m_r.join(process.cwd(),"config.json");try{let s=Npe.readFileSync(a),o=JSON.parse(s.toString());o.run.limits.gas=String(r.last.steps),o.run.limits.call=String(r.peak.call),o.run.limits.frame=String(r.peak.frame),o.run.limits.memory=String(r.limits.memory),Npe.writeFileSync(a,JSON.stringify(o)),console.log("Task limits updated with last/peak values (--update-config)")}catch(s){console.log(`Error updating config file at '${a}': '${s}', (--update-config)`)}}}else console.log("No task resource usage reported.")}vl();async function b_r(t){try{let r=await(await Fh()).post("api/instrumentation",xc({taskId:`${t}`})).catch(Ac);if(r.data.error?.status===!0)if(r.data.error.message)console.log(`Instrumentation failed: ${r.data.error?.message}`);else throw"Malformed instrumentation service error message";else if(r.data.payload&&r.data.payload.instrumentedTaskId)console.log("Your function task is ready."),console.log(`Use the following TaskId for execution or deployment:
512
512
  ${r.data.payload.instrumentedTaskId}`);else throw"Malformed instrumentation service success message";return r.data.payload.instrumentedTaskId}catch(e){throw console.error(e),e}}u6();vl();w0();import Bi from"colors";async function g_r(){try{let t=Dn("privateKey"),e=Dn("address");if(!t||!e)throw new Error('User not registered. Please run "truebit setup" first.');console.log("Fetching quota status...");let r={message:"I am a Truebit User"},n=Yf.createSignedBody(r,t,e),s=(await(await E0()).get(`user/quota/${e}`,{headers:{"truebit-auth":JSON.stringify(n)}})).data,o=new Date,f=new Date(Date.UTC(o.getUTCFullYear(),o.getUTCMonth()+1,1)).toISOString().split("T")[0];if(console.log(`
513
513
  `+Bi.cyan("=".repeat(60))),console.log(Bi.cyan.bold(" Quota Status")),console.log(Bi.cyan("=".repeat(60))+`
514
514
  `),console.log(Bi.white("Wallet Address: ")+Bi.yellow(e)),console.log(Bi.white("Subscription Tier: ")+Bi.green(s.userSubscription.toUpperCase())),s.maxSolutions!==void 0&&console.log(Bi.white("Max Solutions: ")+Bi.green(`${s.maxSolutions}`)),s.quotaMax===0)console.log(Bi.white("Monthly Quota: ")+Bi.green("UNLIMITED")),s.currentUsage!==void 0&&console.log(Bi.white("Current Usage: ")+Bi.yellow(`${s.currentUsage} executions`));else{if(console.log(Bi.white("Monthly Quota: ")+Bi.green(`${s.quotaMax} executions`)),s.currentUsage!==void 0&&(console.log(Bi.white("Current Usage: ")+Bi.yellow(`${s.currentUsage} executions`)),s.remaining!==void 0)){let c=s.remaining===0?Bi.red:s.remaining<s.quotaMax*.2?Bi.yellow:Bi.green;console.log(Bi.white("Remaining: ")+c(`${s.remaining} executions`))}console.log(Bi.white("Quota Resets On: ")+Bi.yellow(f))}console.log(`
515
515
  `+Bi.cyan("=".repeat(60))+`
516
- `)}catch(t){throw t instanceof Error?console.error(Bi.red("Error fetching quota status: ")+t.message):console.error(Bi.red("Error fetching quota status: ")+String(t)),t}}zKe();vl();async function E_r(t){try{console.log("Fetching execution status...");let r=await(await Fh()).get(`api/execution/${t}`).catch(Ac);if(r.data.message)throw r.data.message;console.log("Task execution status: ",r.data.status),r.data.output&&console.log("Task execution output: ",r.data.output)}catch(e){console.error(`Couldn't fetch execution status for executionId ${t}: ${e}`)}}import A_r from"chalk";import{ethers as v0a}from"ethers";vl();import*as kpe from"crypto";import y0a from"axios";import WKe from"chalk";function S_r(t){if(y0a.isAxiosError(t)&&t.response?.data){let e=t.response.data;return console.log(WKe.red(e.message)),typeof e=="string"?e:e.message||JSON.stringify(e)}return t instanceof Error?t.message:String(t)}async function b0a(t,e){try{let r=xc({namespace:e});return(await t.post("getkey",r)).data}catch(r){return S_r(r),console.error(WKe.red("Failed to retrieve encryption key from Hub-TEE-KMS. Please try again")),null}}function g0a(t,e){try{let r=Buffer.from(e,"base64"),n=kpe.randomBytes(16),i=kpe.createCipheriv("aes-256-cbc",r,n),a=Buffer.concat([i.update(t,"utf8"),i.final()]);return r.fill(0),{encrypted_authString:a.toString("base64"),iv:n.toString("base64")}}catch{return null}}async function w_r(t,e,r){try{let n=await b0a(t,r);if(!n)return null;let i=g0a(e,n.plaintext_key);return i?{encrypted_authString:i.encrypted_authString,encrypted_data_key:n.encryption_key,iv:i.iv}:null}catch(n){return S_r(n),console.error(WKe.red("Failed to encrypt credentials. Please try again.")),null}}async function x_r(t,e,r,n,i,a,s){console.log("Deploying the API Authentication Credentials");try{if(!n_r(a))throw"Invalid private key provided";if(!v0a.isAddress(s))throw"Invalid address provided";if(cye(n,i),!sT(t))throw"Invalid taskId";let o=await tIt();console.log("Encrypting credentials...");let u=await w_r(o,i,e);if(!u)return;let f=xc({taskId:t,namespace:e,taskName:r,method:n,encrypted_authString:u.encrypted_authString,encrypted_data_key:u.encrypted_data_key,iv:u.iv});await o.post("credentials",f).catch(Ac),console.log("The encrypted credentials were deployed "+A_r.green("Successfully"))}catch(o){let u=o instanceof Error?o.message:String(o);console.error(A_r.red(u));return}}import{inspect as ula}from"util";import Ku from"ora";import{v4 as fla}from"uuid";import{ethers as Jpe}from"ethers";var T_r={name:"@truebit/cli",version:"1.120.0-beta.268",private:!1,description:"truebit-cli is a basic command line that allows interaction between users and truebit nextgen node.",author:{name:"Truebit Co.",url:"https://truebit.io/"},license:"https://truebit.io/terms/",repository:{type:"git",url:"https://github.com/TruebitProtocol"},homepage:"https://truebit.io/",main:"build/index.mjs",module:"build/index.mjs",types:"build/types/index.d.ts",type:"module",scripts:{prebuild:"rimraf build logs","prebuild:dev":"rimraf build logs","build:dev":"tsc && chmod +x build/index.mjs",build:"NODE_ENV=production node esbuild.config.mjs && chmod +x build/index.mjs",dev:"export NODE_ENV=development && npx nodemon",test:"vitest run --passWithNoTests tests/"},dependencies:{axios:"1.13.5",chalk:"5.6.2",colors:"1.4.0",commander:"14.0.3",ethers:"6.16.0",figlet:"1.10.0","form-data":"4.0.5","openapi-enforcer":"1.23.0",ora:"9.3.0","public-ip":"8.0.0","ts-retry":"6.0.0",uuid:"13.0.0"},bin:{truebit:"build/index.mjs"},files:["build"],devDependencies:{"@types/figlet":"1.7.0","@vitest/coverage-v8":"4.0.18",esbuild:"0.27.3",typescript:"5.9.3",vitest:"4.0.18"},engines:{node:">=22.13.0"}};w0();vl();u6();w0();import{createInterface as T0a}from"node:readline/promises";import A2 from"chalk";vl();import wk from"axios";import{ethers as oT}from"ethers";import{randomBytes as E0a}from"crypto";import{v4 as S0a}from"uuid";w0();import{ethers as $pe}from"ethers";async function O_r(t){J_(t);let e=gi(Mu(),zt.AVAX),r=$pe.keccak256($pe.toUtf8Bytes(t));return await e.authorization.registerAuthorization(r),r}async function GKe(t,e,r=Dn("address")){J_(t);let n=gi(Mu(),zt.AVAX),i=await n.authorization.getEIP712Domain(),a=await n.authorization.nonces(r),s=Math.floor(Date.now()/1e3)+3600,o={RegisterMeta:[{name:"user",type:"address"},{name:"apiKeyHash",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},u=$pe.keccak256($pe.toUtf8Bytes(t)),f={user:r,apiKeyHash:u,nonce:Number(a),deadline:s};if(!n.utils)throw new Error("Private key is required for signing operations");let c=await n.utils.signMeta(i,o,f);return(await a_r(r,u,s,c,e)).status==201?u:null}w0();u6();import{isTooManyTries as C_r,retryAsync as I_r}from"ts-retry";var M_r="0x0000000000000000000000000000000000000000";async function P_r(t){let e=!0;return t===""?(e=!1,console.log("An email address is required. Please provide your email address to proceed.")):new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/).test(t)?await w0a(t)&&(e=!1,console.log("The provided email address is already in use. Please enter a different email address.")):(e=!1,console.log("The email address provided is not valid. Please try again.")),e}function Z_(t){return t==="Y"||t==="N"}function R_r(t){return!oT.isAddress(t)||t.length!==42||!t.startsWith("0x")}async function q_r(){let t=Mu(),e=gi(t,zt.AVAX),r=Dn("address"),n=await x0a(),i=await A0a();J_(i);let a=oT.keccak256(oT.toUtf8Bytes(i)),s=Math.floor(Date.now()/1e3)+3600,o=await e.taskRegistry.getEIP712Domain(),u=await e.authorization.getEIP712Domain(),f={RegisterTaskNamespaceMeta:[{name:"user",type:"address"},{name:"namespace",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},c={RegisterMeta:[{name:"user",type:"address"},{name:"apiKeyHash",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},d=BigInt(await e.taskRegistry.nonces(r)),h=await e.authorization.nonces(r),p={user:oT.getAddress(r),namespace:n,nonce:d,deadline:s},m={user:r,apiKeyHash:a,nonce:Number(h),deadline:s};if(!e.utils)throw new Error("Private key is required for signing operations");let y=await e.utils.signMeta(o,f,p),b=await e.utils.signMeta(u,c,m),_={user:r,namespace:n,apiKeyHash:a,namespaceSignature:y,apiKeySignature:b,namespaceDeadline:s,apiKeyDeadline:s};try{let E=await s_r(_);if(E.status!==201)throw new Error("Registration failed with unexpected status");if(!E.data.namespaceRegistration.success)throw new Error("Namespace registration failed");if(!E.data.apiKeyRegistration.success)throw new Error("API key registration failed");return{namespace:n,apiKey:i,hashedApiKey:a}}catch(E){let A=E.message;throw new Error(`Combined registration failed: ${A}`)}}async function w0a(t){let e=await E0();try{return(await e.get(`userexistence/${t}`)).data===!0}catch(r){if(wk.isAxiosError(r)&&r.response?.status===404&&typeof r.response?.data?.message=="string"&&r.response.data.message.includes("User not found"))return!1;throw r}}async function Bpe(t,e){try{let r={message:"I am a Truebit User"};if(!e)throw Error("Secret.json does not exists");let n=e.privateKey,i=e.address,a=Yf.createSignedBody(r,n,i);return(await(await E0()).get(`user/${t}`,{headers:{"truebit-auth":JSON.stringify(a)}})).data}catch(r){if(wk.isAxiosError(r)&&r.response?.status===401&&r.response?.data.message.includes("Entitlement Validation Error")||wk.isAxiosError(r)&&r.response?.status==404&&r.response?.data.message&&r.response?.data.message.includes("User not found"))return null;throw wk.isAxiosError(r)?r.response?Error(`The server responding with an error -> ${r.response.data.message||r.response.status+" - "+r.response.statusText}`):r.request?Error(`The server is not responding -> ${r.message}`):Error(`There was an error in the communication with the server -> ${r.message}`):Error(typeof r=="string"?`There was an error in the communication with the server -> ${r}`:"There was an error in the communication with the server.")}}async function N_r(t){try{return await(await E0()).post("user/register",t)}catch(e){throw wk.isAxiosError(e)?e.response?Error(`The server responding with an error -> ${e.response.data.message||e.response.status+" - "+e.response.statusText}`):e.request?Error(`The server is not responding -> ${e.message}`):Error(`There was an error in the communication with the server -> ${e.message}`):Error(typeof e=="string"?`There was an error in the communication with the server -> ${e}`:"There was an error in the communication with the server.")}}async function A0a(){let t=Mu(),e=gi(t,zt.AVAX),r="";try{await I_r(async()=>{r=S0a();let n=oT.keccak256(oT.toUtf8Bytes(r));return await e.authorization.getPayerAddress(n)===M_r},{delay:500,maxTry:5,until:n=>n===!0})}catch(n){throw C_r(n)?Error("Attempts to generate unique Api Key for the user exhausted."):n}return r}async function x0a(){let t=Mu(),e=gi(t,zt.AVAX),r="";try{await I_r(async()=>(r=E0a(4).toString("hex"),await e.taskRegistry.getNamespaceOwner(r)===M_r),{delay:500,maxTry:5,until:n=>n===!0})}catch(n){throw C_r(n)?Error("Attempts to generate unique namespace for the user exhausted."):n}return r}function D_r(t){t.fullNameAnswer="",t.emailAddressAnswer="",t.companyNameAnswer="",t.jobPositionAnswer="",t.eulaAnswer="",t.confirmRegistration=""}u6();ng();import O0a from"ora";import*as Fpe from"os";async function k_r(t,e,r){let n=S0(),i=n!==null,a=0,s,o=T0a({input:process.stdin,output:process.stdout,terminal:!0});switch(i&&(R_r(n.address)?a=1:(s=await Bpe(n.address,n),s?a=2:a=3)),a){case 1:console.log("The wallet set in the configuration must be a valid ethereum address. (ENS not supported yet)");break;case 2:console.log(Pi.SETUP_STEP1_SCENARIO1_P2(s));break;case 3:{console.log(Pi.SETUP_STEP2_SCENARIO3_P1),console.log();let u={user_ip:t,date_time:us(),os_version:Fpe.type+"_"+Fpe.release,node_version:process.version,cli_version:e};await r.sendEventToMixpanel("user_registration_begin",u);let f={confirmRegistration:"",fullNameAnswer:"",emailAddressAnswer:"",companyNameAnswer:"",jobPositionAnswer:"",eulaAnswer:""};try{for(;f.confirmRegistration!="Y";){for(f.fullNameAnswer=(await o.question(A2.bold(" 1. Full Name: "))).trim();f.fullNameAnswer==="";)console.log("Your full name is required. Please provide your first and last name to proceed."),f.fullNameAnswer=(await o.question(A2.bold(" 1. Full Name: "))).trim();for(f.emailAddressAnswer=(await o.question(A2.bold(" 2. Email Address: "))).trim();!await P_r(f.emailAddressAnswer);)f.emailAddressAnswer=(await o.question(A2.bold(" 2. Email Address: "))).trim();for(f.companyNameAnswer=(await o.question(A2.bold(" 3. Company Name: "))).trim(),f.jobPositionAnswer=(await o.question(A2.bold(" 4. Job Position: "))).trim();!Z_(f.eulaAnswer);)f.eulaAnswer=(await o.question(A2.bold(` 5. Accept EULA? [Y|N] (${Pi.EULA_TERMS_LINK}): `))).toUpperCase();if(f.eulaAnswer=="N"){console.log(Pi.EULA_REGISTRATION_NO_ACCEPTED);break}for(;!Z_(f.confirmRegistration);)console.log(`
516
+ `)}catch(t){throw t instanceof Error?console.error(Bi.red("Error fetching quota status: ")+t.message):console.error(Bi.red("Error fetching quota status: ")+String(t)),t}}zKe();vl();async function E_r(t){try{console.log("Fetching execution status...");let r=await(await Fh()).get(`api/execution/${t}`).catch(Ac);if(r.data.message)throw r.data.message;console.log("Task execution status: ",r.data.status),r.data.output&&console.log("Task execution output: ",r.data.output)}catch(e){console.error(`Couldn't fetch execution status for executionId ${t}: ${e}`)}}import A_r from"chalk";import{ethers as v0a}from"ethers";vl();import*as kpe from"crypto";import y0a from"axios";import WKe from"chalk";function S_r(t){if(y0a.isAxiosError(t)&&t.response?.data){let e=t.response.data;return console.log(WKe.red(e.message)),typeof e=="string"?e:e.message||JSON.stringify(e)}return t instanceof Error?t.message:String(t)}async function b0a(t,e){try{let r=xc({namespace:e});return(await t.post("getkey",r)).data}catch(r){return S_r(r),console.error(WKe.red("Failed to retrieve encryption key from Hub-TEE-KMS. Please try again")),null}}function g0a(t,e){try{let r=Buffer.from(e,"base64"),n=kpe.randomBytes(16),i=kpe.createCipheriv("aes-256-cbc",r,n),a=Buffer.concat([i.update(t,"utf8"),i.final()]);return r.fill(0),{encrypted_authString:a.toString("base64"),iv:n.toString("base64")}}catch{return null}}async function w_r(t,e,r){try{let n=await b0a(t,r);if(!n)return null;let i=g0a(e,n.plaintext_key);return i?{encrypted_authString:i.encrypted_authString,encrypted_data_key:n.encryption_key,iv:i.iv}:null}catch(n){return S_r(n),console.error(WKe.red("Failed to encrypt credentials. Please try again.")),null}}async function x_r(t,e,r,n,i,a,s){console.log("Deploying the API Authentication Credentials");try{if(!n_r(a))throw"Invalid private key provided";if(!v0a.isAddress(s))throw"Invalid address provided";if(cye(n,i),!sT(t))throw"Invalid taskId";let o=await tIt();console.log("Encrypting credentials...");let u=await w_r(o,i,e);if(!u)return;let f=xc({taskId:t,namespace:e,taskName:r,method:n,encrypted_authString:u.encrypted_authString,encrypted_data_key:u.encrypted_data_key,iv:u.iv});await o.post("credentials",f).catch(Ac),console.log("The encrypted credentials were deployed "+A_r.green("Successfully"))}catch(o){let u=o instanceof Error?o.message:String(o);console.error(A_r.red(u));return}}import{inspect as ula}from"util";import Ku from"ora";import{v4 as fla}from"uuid";import{ethers as Jpe}from"ethers";var T_r={name:"@truebit/cli",version:"1.120.0-beta.270",private:!1,description:"truebit-cli is a basic command line that allows interaction between users and truebit nextgen node.",author:{name:"Truebit Co.",url:"https://truebit.io/"},license:"https://truebit.io/terms/",repository:{type:"git",url:"https://github.com/TruebitProtocol"},homepage:"https://truebit.io/",main:"build/index.mjs",module:"build/index.mjs",types:"build/types/index.d.ts",type:"module",scripts:{prebuild:"rimraf build logs","prebuild:dev":"rimraf build logs","build:dev":"tsc && chmod +x build/index.mjs",build:"NODE_ENV=production node esbuild.config.mjs && chmod +x build/index.mjs",dev:"export NODE_ENV=development && npx nodemon",test:"vitest run --passWithNoTests tests/"},dependencies:{axios:"1.13.5",chalk:"5.6.2",colors:"1.4.0",commander:"14.0.3",ethers:"6.16.0",figlet:"1.10.0","form-data":"4.0.5","openapi-enforcer":"1.23.0",ora:"9.3.0","public-ip":"8.0.0","ts-retry":"6.0.0",uuid:"13.0.0"},bin:{truebit:"build/index.mjs"},files:["build"],devDependencies:{"@types/figlet":"1.7.0","@vitest/coverage-v8":"4.0.18",esbuild:"0.27.3",typescript:"5.9.3",vitest:"4.0.18"},engines:{node:">=22.13.0"}};w0();vl();u6();w0();import{createInterface as T0a}from"node:readline/promises";import A2 from"chalk";vl();import wk from"axios";import{ethers as oT}from"ethers";import{randomBytes as E0a}from"crypto";import{v4 as S0a}from"uuid";w0();import{ethers as $pe}from"ethers";async function O_r(t){J_(t);let e=gi(Mu(),zt.AVAX),r=$pe.keccak256($pe.toUtf8Bytes(t));return await e.authorization.registerAuthorization(r),r}async function GKe(t,e,r=Dn("address")){J_(t);let n=gi(Mu(),zt.AVAX),i=await n.authorization.getEIP712Domain(),a=await n.authorization.nonces(r),s=Math.floor(Date.now()/1e3)+3600,o={RegisterMeta:[{name:"user",type:"address"},{name:"apiKeyHash",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},u=$pe.keccak256($pe.toUtf8Bytes(t)),f={user:r,apiKeyHash:u,nonce:Number(a),deadline:s};if(!n.utils)throw new Error("Private key is required for signing operations");let c=await n.utils.signMeta(i,o,f);return(await a_r(r,u,s,c,e)).status==201?u:null}w0();u6();import{isTooManyTries as C_r,retryAsync as I_r}from"ts-retry";var M_r="0x0000000000000000000000000000000000000000";async function P_r(t){let e=!0;return t===""?(e=!1,console.log("An email address is required. Please provide your email address to proceed.")):new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/).test(t)?await w0a(t)&&(e=!1,console.log("The provided email address is already in use. Please enter a different email address.")):(e=!1,console.log("The email address provided is not valid. Please try again.")),e}function Z_(t){return t==="Y"||t==="N"}function R_r(t){return!oT.isAddress(t)||t.length!==42||!t.startsWith("0x")}async function q_r(){let t=Mu(),e=gi(t,zt.AVAX),r=Dn("address"),n=await x0a(),i=await A0a();J_(i);let a=oT.keccak256(oT.toUtf8Bytes(i)),s=Math.floor(Date.now()/1e3)+3600,o=await e.taskRegistry.getEIP712Domain(),u=await e.authorization.getEIP712Domain(),f={RegisterTaskNamespaceMeta:[{name:"user",type:"address"},{name:"namespace",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},c={RegisterMeta:[{name:"user",type:"address"},{name:"apiKeyHash",type:"string"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},d=BigInt(await e.taskRegistry.nonces(r)),h=await e.authorization.nonces(r),p={user:oT.getAddress(r),namespace:n,nonce:d,deadline:s},m={user:r,apiKeyHash:a,nonce:Number(h),deadline:s};if(!e.utils)throw new Error("Private key is required for signing operations");let y=await e.utils.signMeta(o,f,p),b=await e.utils.signMeta(u,c,m),_={user:r,namespace:n,apiKeyHash:a,namespaceSignature:y,apiKeySignature:b,namespaceDeadline:s,apiKeyDeadline:s};try{let E=await s_r(_);if(E.status!==201)throw new Error("Registration failed with unexpected status");if(!E.data.namespaceRegistration.success)throw new Error("Namespace registration failed");if(!E.data.apiKeyRegistration.success)throw new Error("API key registration failed");return{namespace:n,apiKey:i,hashedApiKey:a}}catch(E){let A=E.message;throw new Error(`Combined registration failed: ${A}`)}}async function w0a(t){let e=await E0();try{return(await e.get(`userexistence/${t}`)).data===!0}catch(r){if(wk.isAxiosError(r)&&r.response?.status===404&&typeof r.response?.data?.message=="string"&&r.response.data.message.includes("User not found"))return!1;throw r}}async function Bpe(t,e){try{let r={message:"I am a Truebit User"};if(!e)throw Error("Secret.json does not exists");let n=e.privateKey,i=e.address,a=Yf.createSignedBody(r,n,i);return(await(await E0()).get(`user/${t}`,{headers:{"truebit-auth":JSON.stringify(a)}})).data}catch(r){if(wk.isAxiosError(r)&&r.response?.status===401&&r.response?.data.message.includes("Entitlement Validation Error")||wk.isAxiosError(r)&&r.response?.status==404&&r.response?.data.message&&r.response?.data.message.includes("User not found"))return null;throw wk.isAxiosError(r)?r.response?Error(`The server responding with an error -> ${r.response.data.message||r.response.status+" - "+r.response.statusText}`):r.request?Error(`The server is not responding -> ${r.message}`):Error(`There was an error in the communication with the server -> ${r.message}`):Error(typeof r=="string"?`There was an error in the communication with the server -> ${r}`:"There was an error in the communication with the server.")}}async function N_r(t){try{return await(await E0()).post("user/register",t)}catch(e){throw wk.isAxiosError(e)?e.response?Error(`The server responding with an error -> ${e.response.data.message||e.response.status+" - "+e.response.statusText}`):e.request?Error(`The server is not responding -> ${e.message}`):Error(`There was an error in the communication with the server -> ${e.message}`):Error(typeof e=="string"?`There was an error in the communication with the server -> ${e}`:"There was an error in the communication with the server.")}}async function A0a(){let t=Mu(),e=gi(t,zt.AVAX),r="";try{await I_r(async()=>{r=S0a();let n=oT.keccak256(oT.toUtf8Bytes(r));return await e.authorization.getPayerAddress(n)===M_r},{delay:500,maxTry:5,until:n=>n===!0})}catch(n){throw C_r(n)?Error("Attempts to generate unique Api Key for the user exhausted."):n}return r}async function x0a(){let t=Mu(),e=gi(t,zt.AVAX),r="";try{await I_r(async()=>(r=E0a(4).toString("hex"),await e.taskRegistry.getNamespaceOwner(r)===M_r),{delay:500,maxTry:5,until:n=>n===!0})}catch(n){throw C_r(n)?Error("Attempts to generate unique namespace for the user exhausted."):n}return r}function D_r(t){t.fullNameAnswer="",t.emailAddressAnswer="",t.companyNameAnswer="",t.jobPositionAnswer="",t.eulaAnswer="",t.confirmRegistration=""}u6();ng();import O0a from"ora";import*as Fpe from"os";async function k_r(t,e,r){let n=S0(),i=n!==null,a=0,s,o=T0a({input:process.stdin,output:process.stdout,terminal:!0});switch(i&&(R_r(n.address)?a=1:(s=await Bpe(n.address,n),s?a=2:a=3)),a){case 1:console.log("The wallet set in the configuration must be a valid ethereum address. (ENS not supported yet)");break;case 2:console.log(Pi.SETUP_STEP1_SCENARIO1_P2(s));break;case 3:{console.log(Pi.SETUP_STEP2_SCENARIO3_P1),console.log();let u={user_ip:t,date_time:us(),os_version:Fpe.type+"_"+Fpe.release,node_version:process.version,cli_version:e};await r.sendEventToMixpanel("user_registration_begin",u);let f={confirmRegistration:"",fullNameAnswer:"",emailAddressAnswer:"",companyNameAnswer:"",jobPositionAnswer:"",eulaAnswer:""};try{for(;f.confirmRegistration!="Y";){for(f.fullNameAnswer=(await o.question(A2.bold(" 1. Full Name: "))).trim();f.fullNameAnswer==="";)console.log("Your full name is required. Please provide your first and last name to proceed."),f.fullNameAnswer=(await o.question(A2.bold(" 1. Full Name: "))).trim();for(f.emailAddressAnswer=(await o.question(A2.bold(" 2. Email Address: "))).trim();!await P_r(f.emailAddressAnswer);)f.emailAddressAnswer=(await o.question(A2.bold(" 2. Email Address: "))).trim();for(f.companyNameAnswer=(await o.question(A2.bold(" 3. Company Name: "))).trim(),f.jobPositionAnswer=(await o.question(A2.bold(" 4. Job Position: "))).trim();!Z_(f.eulaAnswer);)f.eulaAnswer=(await o.question(A2.bold(` 5. Accept EULA? [Y|N] (${Pi.EULA_TERMS_LINK}): `))).toUpperCase();if(f.eulaAnswer=="N"){console.log(Pi.EULA_REGISTRATION_NO_ACCEPTED);break}for(;!Z_(f.confirmRegistration);)console.log(`
517
517
  Is the information provided above correct?`),f.confirmRegistration=(await o.question(A2.bold("Press [Y] to confirm or [N] to edit: "))).toUpperCase();f.confirmRegistration=="N"&&(console.log(`
518
518
  Please provide the following information:`),D_r(f))}}catch(h){if(h.name==="AbortError"||h.message.includes("Ctrl+C")){let p=h.message,m=u;m.error_details=p,m.date_time=us();let y={fullname:f.fullNameAnswer,email:f.emailAddressAnswer,company:f.companyNameAnswer,role:f.jobPositionAnswer};m.user_info=JSON.stringify(y),await r.sendEventToMixpanel("user_registration_failed",m),process.exit(0)}}if(f.eulaAnswer=="N")break;let c=u;console.log(),console.log("By completing registration, you'll be automatically subscribed to our newsletter."),console.log("To opt-out, please follow the steps described in our documentation portal."),console.log();let d=O0a({text:A2.bold("... registering your account."),stream:process.stdout}).start();try{let{namespace:h,apiKey:p}=await q_r(),m={name:f.fullNameAnswer,email:f.emailAddressAnswer,walletAddress:n?.address,company:f.companyNameAnswer,jobDescription:f.jobPositionAnswer,EULA:Yf.createSignedBody({ip:await ZG(),date:new Date().toISOString()},n.privateKey),defaultNamespace:h,defaultApiKey:p};await N_r(m),d.stop(),console.log(Pi.SETUP_STEP2_SCENARIO3_P2(f,n.address,h,p)),c.distinct_id=m.walletAddress,c.date_time=us(),c.fullname=m.name,c.email=m.email,c.company=m.company,c.role=m.jobDescription,c.namespace=m.defaultNamespace,c.api_key=p,c.wallet_address=m.walletAddress,await r.sendEventToMixpanel("user_registration_success",c),await r.registerUserMixpanel(c.wallet_address,C0a(c))}catch(h){d.stop();let p=h.message,m=u;m.error_details=p,m.date_time=us();let y={fullname:f.fullNameAnswer,email:f.emailAddressAnswer,company:f.companyNameAnswer,role:f.jobPositionAnswer};m.user_info=JSON.stringify(y),await r.sendEventToMixpanel("user_registration_failed",m);let b=p?p.match(/CreateUserValidation - (.*?.*)/)?.[1]:null;if(b)throw Error(b);if(p.includes("Sender doesn't have enough funds to send tx"))throw Error("We are currently experiencing technical difficulties. Please try again later.");console.error(Pi.SETUP_STEP2_UNHANDLED_ERROR),process.exit(1)}finally{d.clear()}break}default:throw Error("An unexpected error occurred.")}o.close()}function C0a(t){return{apiKey:t.api_key,name:t.fullname,email:t.email,ip:t.user_ip,company:t.company,role:t.role,namespace:t.namespace,walletAddress:t.wallet_address}}import{setDefaultAutoSelectFamily as lla}from"node:net";import I0a from"chalk";w0();ng();import{createInterface as M0a}from"node:readline/promises";import*as Lpe from"os";async function $_r(t,e,r){let n=S0(),i=n!==null,a=0;switch(i?i&&!n.eula?a=2:a=3:a=1,a){case 1:case 2:{let s=M0a({input:process.stdin,output:process.stdout,terminal:!0}),o="",u={user_ip:t,date_time:us(),os_version:Lpe.type+"_"+Lpe.release,node_version:process.version,cli_version:e};for(console.log(Pi.EULA_INSTALLATION);!Z_(o);)o=(await s.question(I0a.bold(`
519
519
  Have you read, and do you accept the Terms of Use? [Y|N]: `))).toUpperCase(),await r.sendEventToMixpanel("TOS_shown",u);if(o=="N")throw u.date_time=us(),await r.sendEventToMixpanel("TOS_rejected",u),Pi.EULA_INSTALLATION_NO_ACCEPTED;u.date_time=us(),await r.sendEventToMixpanel("TOS_accepted",u);let f=Math.round(new Date().getTime()).toString();if(a===1){let c={...PTe(),eula:f};aIt(c)}else a===2&&oq({eula:f});s.close()}break;default:break}}w0();ng();async function Hc(t=!1){let e=S0(),r=e!==null,n=null,i=0;switch(r?r&&(!e.privateKey||!e.address)?i=2:(n=await Bpe(e.address,e),n?i=4:i=3):i=1,i){case 1:case 2:case 3:console.log(Pi.USER_NO_REGISTERED),process.exit(1);break;case 4:t&&console.log(`You are logged in as: ${n?.name} - ${n?.email}`);break}}import{createInterface as P0a}from"node:readline/promises";ng();w0();import R0a from"chalk";async function B_r(){console.log(R0a.bold(`