{
  "_format": "hh-sol-artifact-1",
  "contractName": "Gateway",
  "sourceName": "contracts/gateway/Gateway.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "idFactoryAddress",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "signersToApprove",
          "type": "address[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "ExpiredSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "RevokedSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "SignatureAlreadyRevoked",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "SignatureNotRevoked",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "name": "SignerAlreadyApproved",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "name": "SignerAlreadyNotApproved",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TooManySigners",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "name": "UnapprovedSigner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "SignatureApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "SignatureRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "name": "SignerApproved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "name": "SignerRevoked",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "approveSignature",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "name": "approveSigner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "approvedSigners",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "callFactory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "identityOwner",
          "type": "address"
        }
      ],
      "name": "deployIdentityForWallet",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "identityOwner",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "salt",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "signatureExpiry",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "deployIdentityWithSalt",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "identityOwner",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "salt",
          "type": "string"
        },
        {
          "internalType": "bytes32[]",
          "name": "managementKeys",
          "type": "bytes32[]"
        },
        {
          "internalType": "uint256",
          "name": "signatureExpiry",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "deployIdentityWithSaltAndManagementKeys",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "idFactory",
      "outputs": [
        {
          "internalType": "contract IdFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "revokeSignature",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        }
      ],
      "name": "revokeSigner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "revokedSignatures",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferFactoryOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162002df338038062002df3833981810160405281019062000037919062000497565b620000576200004b620001dd60201b60201c565b620001e560201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620000be576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a81511115620000fb576040517f1b925da600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81518110156200019357600160026000848481518110620001245762000123620004fd565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806200018a9062000565565b915050620000fe565b5081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620005b2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002ea82620002bd565b9050919050565b620002fc81620002dd565b81146200030857600080fd5b50565b6000815190506200031c81620002f1565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620003728262000327565b810181811067ffffffffffffffff8211171562000394576200039362000338565b5b80604052505050565b6000620003a9620002a9565b9050620003b7828262000367565b919050565b600067ffffffffffffffff821115620003da57620003d962000338565b5b602082029050602081019050919050565b600080fd5b6000620004076200040184620003bc565b6200039d565b905080838252602082019050602084028301858111156200042d576200042c620003eb565b5b835b818110156200045a57806200044588826200030b565b8452602084019350506020810190506200042f565b5050509392505050565b600082601f8301126200047c576200047b62000322565b5b81516200048e848260208601620003f0565b91505092915050565b60008060408385031215620004b157620004b0620002b3565b5b6000620004c1858286016200030b565b925050602083015167ffffffffffffffff811115620004e557620004e4620002b8565b5b620004f38582860162000464565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062000572826200055b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620005a757620005a66200052c565b5b600182019050919050565b61283180620005c26000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638a87551211610097578063ccbfc6ed11610066578063ccbfc6ed14610270578063d70aa0ee1461028c578063e9ba2363146102a8578063f2fde38b146102d8576100f5565b80638a875512146101ea5780638da5cb5b1461021a5780639c5c5ce714610238578063c34b44a014610254576100f5565b80634e2984e4116100d35780634e2984e414610176578063715018a6146101a657806378e751a6146101b05780637d963e6f146101ce576100f5565b806309f29c09146100fa57806317f67a15146101165780633e8e6e8b14610146575b600080fd5b610114600480360381019061010f91906119ae565b6102f4565b005b610130600480360381019061012b9190611b8c565b6103cf565b60405161013d9190611c3f565b60405180910390f35b610160600480360381019061015b9190611c5a565b6106ba565b60405161016d9190611c3f565b60405180910390f35b610190600480360381019061018b91906119ae565b6107d0565b60405161019d9190611ca2565b60405180910390f35b6101ae610806565b005b6101b861081a565b6040516101c59190611d1c565b60405180910390f35b6101e860048036038101906101e39190611d37565b610840565b005b61020460048036038101906101ff9190611c5a565b610931565b6040516102119190611ca2565b60405180910390f35b610222610951565b60405161022f9190611c3f565b60405180910390f35b610252600480360381019061024d9190611c5a565b61097a565b005b61026e60048036038101906102699190611c5a565b610a12565b005b61028a60048036038101906102859190611d37565b610ba3565b005b6102a660048036038101906102a19190611c5a565b610c9e565b005b6102c260048036038101906102bd9190611dda565b610e39565b6040516102cf9190611c3f565b60405180910390f35b6102f260048036038101906102ed9190611c5a565b61112e565b005b6102fc6111b1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516103459190611f23565b6000604051808303816000865af19150503d8060008114610382576040519150601f19603f3d011682016040523d82523d6000602084013e610387565b606091505b50509050806103cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c290611f97565b60405180910390fd5b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610436576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415801561044657504284105b1561048a5782826040517f0cfe7ed8000000000000000000000000000000000000000000000000000000008152600401610481929190611ff5565b60405180910390fd5b600061050c6104c28888886040516020016104a7939291906120b8565b6040516020818303038152906040528051906020012061122f565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061125f565b9050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661059c57806040517faf3c81720000000000000000000000000000000000000000000000000000000081526004016105939190611c3f565b60405180910390fd5b600384846040516105ae92919061212e565b908152602001604051809103902060009054906101000a900460ff161561060e5783836040517fa6dff9f8000000000000000000000000000000000000000000000000000000008152600401610605929190611ff5565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e952bfe88886040518363ffffffff1660e01b815260040161066b929190612147565b6020604051808303816000875af115801561068a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ae919061218c565b91505095945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610721576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e952bfe8361076985611286565b6040518363ffffffff1660e01b8152600401610786929190612147565b6020604051808303816000875af11580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c9919061218c565b9050919050565b6003818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b61080e6111b1565b61081860006112b3565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108486111b1565b6003828260405161085a92919061212e565b908152602001604051809103902060009054906101000a900460ff166108b95781816040517f6fae15fa0000000000000000000000000000000000000000000000000000000081526004016108b0929190611ff5565b60405180910390fd5b600382826040516108cb92919061212e565b908152602001604051809103902060006101000a81549060ff021916905581816040516108f992919061212e565b60405180910390207fb54b0481f674d73e0a7e0805771909ebd61fadc85286160239121febb142fabf60405160405180910390a25050565b60026020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109826111b1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff1660e01b81526004016109dd9190611c3f565b600060405180830381600087803b1580156109f757600080fd5b505af1158015610a0b573d6000803e3d6000fd5b5050505050565b610a1a6111b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a80576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b0e57806040517f2742ecb4000000000000000000000000000000000000000000000000000000008152600401610b059190611c3f565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558073ffffffffffffffffffffffffffffffffffffffff167f99a705a3c2c3339d0051f56b36a60fef91e30142c93353002617999f27aec4af60405160405180910390a250565b610bab6111b1565b60038282604051610bbd92919061212e565b908152602001604051809103902060009054906101000a900460ff1615610c1d5781816040517f8bf3b1f1000000000000000000000000000000000000000000000000000000008152600401610c14929190611ff5565b60405180910390fd5b600160038383604051610c3192919061212e565b908152602001604051809103902060006101000a81548160ff0219169083151502179055508181604051610c6692919061212e565b60405180910390207f2cb4d732f179a7333da89a4da3f3f9a9cbe3f6d7ac090ab062c69c303da32ff760405160405180910390a25050565b610ca66111b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d9b57806040517f12252442000000000000000000000000000000000000000000000000000000008152600401610d929190611c3f565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fc031114b6ddff79d71c2554dbce316b1327bb3dad01c60b76d8e8b23ff27ea2860405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603610ea0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414158015610eb057504284105b15610ef45782826040517f0cfe7ed8000000000000000000000000000000000000000000000000000000008152600401610eeb929190611ff5565b60405180910390fd5b6000610f7a610f308a8a8a8a8a604051602001610f15959493929190612234565b6040516020818303038152906040528051906020012061122f565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061125f565b9050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661100a57806040517faf3c81720000000000000000000000000000000000000000000000000000000081526004016110019190611c3f565b60405180910390fd5b6003848460405161101c92919061212e565b908152602001604051809103902060009054906101000a900460ff161561107c5783836040517fa6dff9f8000000000000000000000000000000000000000000000000000000008152600401611073929190611ff5565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe5cd59a8a8a8a8a6040518563ffffffff1660e01b81526004016110dd949392919061229c565b6020604051808303816000875af11580156110fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611120919061218c565b915050979650505050505050565b6111366111b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c90612355565b60405180910390fd5b6111ae816112b3565b50565b6111b9611377565b73ffffffffffffffffffffffffffffffffffffffff166111d7610951565b73ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611224906123c1565b60405180910390fd5b565b6000816040516020016112429190612463565b604051602081830303815290604052805190602001209050919050565b600080600061126e858561137f565b9150915061127b816113d0565b819250505092915050565b60606112ac8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611536565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b60008060418351036113c05760008060006020860151925060408601519150606086015160001a90506113b487828585611772565b945094505050506113c9565b60006002915091505b9250929050565b600060048111156113e4576113e3612489565b5b8160048111156113f7576113f6612489565b5b0315611533576001600481111561141157611410612489565b5b81600481111561142457611423612489565b5b03611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612504565b60405180910390fd5b6002600481111561147857611477612489565b5b81600481111561148b5761148a612489565b5b036114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c290612570565b60405180910390fd5b600360048111156114df576114de612489565b5b8160048111156114f2576114f1612489565b5b03611532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152990612602565b60405180910390fd5b5b50565b6060600060028360026115499190612651565b6115539190612693565b67ffffffffffffffff81111561156c5761156b611883565b5b6040519080825280601f01601f19166020018201604052801561159e5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115d6576115d56126c7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061163a576116396126c7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261167a9190612651565b6116849190612693565b90505b6001811115611724577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116c6576116c56126c7565b5b1a60f81b8282815181106116dd576116dc6126c7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061171d906126f6565b9050611687565b5060008414611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f9061276b565b60405180910390fd5b8091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c11156117ad57600060039150915061184b565b6000600187878787604051600081526020016040526040516117d294939291906127b6565b6020604051602081039080840390855afa1580156117f4573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118425760006001925092505061184b565b80600092509250505b94509492505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6118bb82611872565b810181811067ffffffffffffffff821117156118da576118d9611883565b5b80604052505050565b60006118ed611854565b90506118f982826118b2565b919050565b600067ffffffffffffffff82111561191957611918611883565b5b61192282611872565b9050602081019050919050565b82818337600083830152505050565b600061195161194c846118fe565b6118e3565b90508281526020810184848401111561196d5761196c61186d565b5b61197884828561192f565b509392505050565b600082601f83011261199557611994611868565b5b81356119a584826020860161193e565b91505092915050565b6000602082840312156119c4576119c361185e565b5b600082013567ffffffffffffffff8111156119e2576119e1611863565b5b6119ee84828501611980565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a22826119f7565b9050919050565b611a3281611a17565b8114611a3d57600080fd5b50565b600081359050611a4f81611a29565b92915050565b600067ffffffffffffffff821115611a7057611a6f611883565b5b611a7982611872565b9050602081019050919050565b6000611a99611a9484611a55565b6118e3565b905082815260208101848484011115611ab557611ab461186d565b5b611ac084828561192f565b509392505050565b600082601f830112611add57611adc611868565b5b8135611aed848260208601611a86565b91505092915050565b6000819050919050565b611b0981611af6565b8114611b1457600080fd5b50565b600081359050611b2681611b00565b92915050565b600080fd5b600080fd5b60008083601f840112611b4c57611b4b611868565b5b8235905067ffffffffffffffff811115611b6957611b68611b2c565b5b602083019150836001820283011115611b8557611b84611b31565b5b9250929050565b600080600080600060808688031215611ba857611ba761185e565b5b6000611bb688828901611a40565b955050602086013567ffffffffffffffff811115611bd757611bd6611863565b5b611be388828901611ac8565b9450506040611bf488828901611b17565b935050606086013567ffffffffffffffff811115611c1557611c14611863565b5b611c2188828901611b36565b92509250509295509295909350565b611c3981611a17565b82525050565b6000602082019050611c546000830184611c30565b92915050565b600060208284031215611c7057611c6f61185e565b5b6000611c7e84828501611a40565b91505092915050565b60008115159050919050565b611c9c81611c87565b82525050565b6000602082019050611cb76000830184611c93565b92915050565b6000819050919050565b6000611ce2611cdd611cd8846119f7565b611cbd565b6119f7565b9050919050565b6000611cf482611cc7565b9050919050565b6000611d0682611ce9565b9050919050565b611d1681611cfb565b82525050565b6000602082019050611d316000830184611d0d565b92915050565b60008060208385031215611d4e57611d4d61185e565b5b600083013567ffffffffffffffff811115611d6c57611d6b611863565b5b611d7885828601611b36565b92509250509250929050565b60008083601f840112611d9a57611d99611868565b5b8235905067ffffffffffffffff811115611db757611db6611b2c565b5b602083019150836020820283011115611dd357611dd2611b31565b5b9250929050565b600080600080600080600060a0888a031215611df957611df861185e565b5b6000611e078a828b01611a40565b975050602088013567ffffffffffffffff811115611e2857611e27611863565b5b611e348a828b01611ac8565b965050604088013567ffffffffffffffff811115611e5557611e54611863565b5b611e618a828b01611d84565b95509550506060611e748a828b01611b17565b935050608088013567ffffffffffffffff811115611e9557611e94611863565b5b611ea18a828b01611b36565b925092505092959891949750929550565b600081519050919050565b600081905092915050565b60005b83811015611ee6578082015181840152602081019050611ecb565b60008484015250505050565b6000611efd82611eb2565b611f078185611ebd565b9350611f17818560208601611ec8565b80840191505092915050565b6000611f2f8284611ef2565b915081905092915050565b600082825260208201905092915050565b7f476174657761793a2063616c6c20746f20666163746f7279206661696c656400600082015250565b6000611f81601f83611f3a565b9150611f8c82611f4b565b602082019050919050565b60006020820190508181036000830152611fb081611f74565b9050919050565b600082825260208201905092915050565b6000611fd48385611fb7565b9350611fe183858461192f565b611fea83611872565b840190509392505050565b60006020820190508181036000830152612010818486611fc8565b90509392505050565b7f417574686f72697a65204f4e434841494e4944206465706c6f796d656e740000600082015250565b600061204f601e83611f3a565b915061205a82612019565b602082019050919050565b600081519050919050565b600061207b82612065565b6120858185611f3a565b9350612095818560208601611ec8565b61209e81611872565b840191505092915050565b6120b281611af6565b82525050565b600060808201905081810360008301526120d181612042565b90506120e06020830186611c30565b81810360408301526120f28185612070565b905061210160608301846120a9565b949350505050565b60006121158385611ebd565b935061212283858461192f565b82840190509392505050565b600061213b828486612109565b91508190509392505050565b600060408201905061215c6000830185611c30565b818103602083015261216e8184612070565b90509392505050565b60008151905061218681611a29565b92915050565b6000602082840312156121a2576121a161185e565b5b60006121b084828501612177565b91505092915050565b600082825260208201905092915050565b600080fd5b82818337505050565b60006121e483856121b9565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612217576122166121ca565b5b6020830292506122288385846121cf565b82840190509392505050565b600060a082019050818103600083015261224d81612042565b905061225c6020830188611c30565b818103604083015261226e8187612070565b905081810360608301526122838185876121d8565b905061229260808301846120a9565b9695505050505050565b60006060820190506122b16000830187611c30565b81810360208301526122c38186612070565b905081810360408301526122d88184866121d8565b905095945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061233f602683611f3a565b915061234a826122e3565b604082019050919050565b6000602082019050818103600083015261236e81612332565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123ab602083611f3a565b91506123b682612375565b602082019050919050565b600060208201905081810360008301526123da8161239e565b9050919050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612422601c836123e1565b915061242d826123ec565b601c82019050919050565b6000819050919050565b6000819050919050565b61245d61245882612438565b612442565b82525050565b600061246e82612415565b915061247a828461244c565b60208201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006124ee601883611f3a565b91506124f9826124b8565b602082019050919050565b6000602082019050818103600083015261251d816124e1565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061255a601f83611f3a565b915061256582612524565b602082019050919050565b600060208201905081810360008301526125898161254d565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006125ec602283611f3a565b91506125f782612590565b604082019050919050565b6000602082019050818103600083015261261b816125df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061265c82611af6565b915061266783611af6565b925082820261267581611af6565b9150828204841483151761268c5761268b612622565b5b5092915050565b600061269e82611af6565b91506126a983611af6565b92508282019050808211156126c1576126c0612622565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061270182611af6565b91506000820361271457612713612622565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000612755602083611f3a565b91506127608261271f565b602082019050919050565b6000602082019050818103600083015261278481612748565b9050919050565b61279481612438565b82525050565b600060ff82169050919050565b6127b08161279a565b82525050565b60006080820190506127cb600083018761278b565b6127d860208301866127a7565b6127e5604083018561278b565b6127f2606083018461278b565b9594505050505056fea2646970667358221220fa5bb44432342883656aa5c6b93f0a36aeeb3ddabe982ce1f7972d3f17ba006264736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80638a87551211610097578063ccbfc6ed11610066578063ccbfc6ed14610270578063d70aa0ee1461028c578063e9ba2363146102a8578063f2fde38b146102d8576100f5565b80638a875512146101ea5780638da5cb5b1461021a5780639c5c5ce714610238578063c34b44a014610254576100f5565b80634e2984e4116100d35780634e2984e414610176578063715018a6146101a657806378e751a6146101b05780637d963e6f146101ce576100f5565b806309f29c09146100fa57806317f67a15146101165780633e8e6e8b14610146575b600080fd5b610114600480360381019061010f91906119ae565b6102f4565b005b610130600480360381019061012b9190611b8c565b6103cf565b60405161013d9190611c3f565b60405180910390f35b610160600480360381019061015b9190611c5a565b6106ba565b60405161016d9190611c3f565b60405180910390f35b610190600480360381019061018b91906119ae565b6107d0565b60405161019d9190611ca2565b60405180910390f35b6101ae610806565b005b6101b861081a565b6040516101c59190611d1c565b60405180910390f35b6101e860048036038101906101e39190611d37565b610840565b005b61020460048036038101906101ff9190611c5a565b610931565b6040516102119190611ca2565b60405180910390f35b610222610951565b60405161022f9190611c3f565b60405180910390f35b610252600480360381019061024d9190611c5a565b61097a565b005b61026e60048036038101906102699190611c5a565b610a12565b005b61028a60048036038101906102859190611d37565b610ba3565b005b6102a660048036038101906102a19190611c5a565b610c9e565b005b6102c260048036038101906102bd9190611dda565b610e39565b6040516102cf9190611c3f565b60405180910390f35b6102f260048036038101906102ed9190611c5a565b61112e565b005b6102fc6111b1565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516103459190611f23565b6000604051808303816000865af19150503d8060008114610382576040519150601f19603f3d011682016040523d82523d6000602084013e610387565b606091505b50509050806103cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c290611f97565b60405180910390fd5b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610436576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000841415801561044657504284105b1561048a5782826040517f0cfe7ed8000000000000000000000000000000000000000000000000000000008152600401610481929190611ff5565b60405180910390fd5b600061050c6104c28888886040516020016104a7939291906120b8565b6040516020818303038152906040528051906020012061122f565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061125f565b9050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661059c57806040517faf3c81720000000000000000000000000000000000000000000000000000000081526004016105939190611c3f565b60405180910390fd5b600384846040516105ae92919061212e565b908152602001604051809103902060009054906101000a900460ff161561060e5783836040517fa6dff9f8000000000000000000000000000000000000000000000000000000008152600401610605929190611ff5565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e952bfe88886040518363ffffffff1660e01b815260040161066b929190612147565b6020604051808303816000875af115801561068a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ae919061218c565b91505095945050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610721576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e952bfe8361076985611286565b6040518363ffffffff1660e01b8152600401610786929190612147565b6020604051808303816000875af11580156107a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c9919061218c565b9050919050565b6003818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b61080e6111b1565b61081860006112b3565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108486111b1565b6003828260405161085a92919061212e565b908152602001604051809103902060009054906101000a900460ff166108b95781816040517f6fae15fa0000000000000000000000000000000000000000000000000000000081526004016108b0929190611ff5565b60405180910390fd5b600382826040516108cb92919061212e565b908152602001604051809103902060006101000a81549060ff021916905581816040516108f992919061212e565b60405180910390207fb54b0481f674d73e0a7e0805771909ebd61fadc85286160239121febb142fabf60405160405180910390a25050565b60026020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109826111b1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2fde38b826040518263ffffffff1660e01b81526004016109dd9190611c3f565b600060405180830381600087803b1580156109f757600080fd5b505af1158015610a0b573d6000803e3d6000fd5b5050505050565b610a1a6111b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a80576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b0e57806040517f2742ecb4000000000000000000000000000000000000000000000000000000008152600401610b059190611c3f565b60405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558073ffffffffffffffffffffffffffffffffffffffff167f99a705a3c2c3339d0051f56b36a60fef91e30142c93353002617999f27aec4af60405160405180910390a250565b610bab6111b1565b60038282604051610bbd92919061212e565b908152602001604051809103902060009054906101000a900460ff1615610c1d5781816040517f8bf3b1f1000000000000000000000000000000000000000000000000000000008152600401610c14929190611ff5565b60405180910390fd5b600160038383604051610c3192919061212e565b908152602001604051809103902060006101000a81548160ff0219169083151502179055508181604051610c6692919061212e565b60405180910390207f2cb4d732f179a7333da89a4da3f3f9a9cbe3f6d7ac090ab062c69c303da32ff760405160405180910390a25050565b610ca66111b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d9b57806040517f12252442000000000000000000000000000000000000000000000000000000008152600401610d929190611c3f565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fc031114b6ddff79d71c2554dbce316b1327bb3dad01c60b76d8e8b23ff27ea2860405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1603610ea0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414158015610eb057504284105b15610ef45782826040517f0cfe7ed8000000000000000000000000000000000000000000000000000000008152600401610eeb929190611ff5565b60405180910390fd5b6000610f7a610f308a8a8a8a8a604051602001610f15959493929190612234565b6040516020818303038152906040528051906020012061122f565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061125f565b9050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661100a57806040517faf3c81720000000000000000000000000000000000000000000000000000000081526004016110019190611c3f565b60405180910390fd5b6003848460405161101c92919061212e565b908152602001604051809103902060009054906101000a900460ff161561107c5783836040517fa6dff9f8000000000000000000000000000000000000000000000000000000008152600401611073929190611ff5565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fe5cd59a8a8a8a8a6040518563ffffffff1660e01b81526004016110dd949392919061229c565b6020604051808303816000875af11580156110fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611120919061218c565b915050979650505050505050565b6111366111b1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119c90612355565b60405180910390fd5b6111ae816112b3565b50565b6111b9611377565b73ffffffffffffffffffffffffffffffffffffffff166111d7610951565b73ffffffffffffffffffffffffffffffffffffffff161461122d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611224906123c1565b60405180910390fd5b565b6000816040516020016112429190612463565b604051602081830303815290604052805190602001209050919050565b600080600061126e858561137f565b9150915061127b816113d0565b819250505092915050565b60606112ac8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611536565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b60008060418351036113c05760008060006020860151925060408601519150606086015160001a90506113b487828585611772565b945094505050506113c9565b60006002915091505b9250929050565b600060048111156113e4576113e3612489565b5b8160048111156113f7576113f6612489565b5b0315611533576001600481111561141157611410612489565b5b81600481111561142457611423612489565b5b03611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612504565b60405180910390fd5b6002600481111561147857611477612489565b5b81600481111561148b5761148a612489565b5b036114cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c290612570565b60405180910390fd5b600360048111156114df576114de612489565b5b8160048111156114f2576114f1612489565b5b03611532576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152990612602565b60405180910390fd5b5b50565b6060600060028360026115499190612651565b6115539190612693565b67ffffffffffffffff81111561156c5761156b611883565b5b6040519080825280601f01601f19166020018201604052801561159e5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115d6576115d56126c7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061163a576116396126c7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261167a9190612651565b6116849190612693565b90505b6001811115611724577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116c6576116c56126c7565b5b1a60f81b8282815181106116dd576116dc6126c7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061171d906126f6565b9050611687565b5060008414611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f9061276b565b60405180910390fd5b8091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c11156117ad57600060039150915061184b565b6000600187878787604051600081526020016040526040516117d294939291906127b6565b6020604051602081039080840390855afa1580156117f4573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118425760006001925092505061184b565b80600092509250505b94509492505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6118bb82611872565b810181811067ffffffffffffffff821117156118da576118d9611883565b5b80604052505050565b60006118ed611854565b90506118f982826118b2565b919050565b600067ffffffffffffffff82111561191957611918611883565b5b61192282611872565b9050602081019050919050565b82818337600083830152505050565b600061195161194c846118fe565b6118e3565b90508281526020810184848401111561196d5761196c61186d565b5b61197884828561192f565b509392505050565b600082601f83011261199557611994611868565b5b81356119a584826020860161193e565b91505092915050565b6000602082840312156119c4576119c361185e565b5b600082013567ffffffffffffffff8111156119e2576119e1611863565b5b6119ee84828501611980565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a22826119f7565b9050919050565b611a3281611a17565b8114611a3d57600080fd5b50565b600081359050611a4f81611a29565b92915050565b600067ffffffffffffffff821115611a7057611a6f611883565b5b611a7982611872565b9050602081019050919050565b6000611a99611a9484611a55565b6118e3565b905082815260208101848484011115611ab557611ab461186d565b5b611ac084828561192f565b509392505050565b600082601f830112611add57611adc611868565b5b8135611aed848260208601611a86565b91505092915050565b6000819050919050565b611b0981611af6565b8114611b1457600080fd5b50565b600081359050611b2681611b00565b92915050565b600080fd5b600080fd5b60008083601f840112611b4c57611b4b611868565b5b8235905067ffffffffffffffff811115611b6957611b68611b2c565b5b602083019150836001820283011115611b8557611b84611b31565b5b9250929050565b600080600080600060808688031215611ba857611ba761185e565b5b6000611bb688828901611a40565b955050602086013567ffffffffffffffff811115611bd757611bd6611863565b5b611be388828901611ac8565b9450506040611bf488828901611b17565b935050606086013567ffffffffffffffff811115611c1557611c14611863565b5b611c2188828901611b36565b92509250509295509295909350565b611c3981611a17565b82525050565b6000602082019050611c546000830184611c30565b92915050565b600060208284031215611c7057611c6f61185e565b5b6000611c7e84828501611a40565b91505092915050565b60008115159050919050565b611c9c81611c87565b82525050565b6000602082019050611cb76000830184611c93565b92915050565b6000819050919050565b6000611ce2611cdd611cd8846119f7565b611cbd565b6119f7565b9050919050565b6000611cf482611cc7565b9050919050565b6000611d0682611ce9565b9050919050565b611d1681611cfb565b82525050565b6000602082019050611d316000830184611d0d565b92915050565b60008060208385031215611d4e57611d4d61185e565b5b600083013567ffffffffffffffff811115611d6c57611d6b611863565b5b611d7885828601611b36565b92509250509250929050565b60008083601f840112611d9a57611d99611868565b5b8235905067ffffffffffffffff811115611db757611db6611b2c565b5b602083019150836020820283011115611dd357611dd2611b31565b5b9250929050565b600080600080600080600060a0888a031215611df957611df861185e565b5b6000611e078a828b01611a40565b975050602088013567ffffffffffffffff811115611e2857611e27611863565b5b611e348a828b01611ac8565b965050604088013567ffffffffffffffff811115611e5557611e54611863565b5b611e618a828b01611d84565b95509550506060611e748a828b01611b17565b935050608088013567ffffffffffffffff811115611e9557611e94611863565b5b611ea18a828b01611b36565b925092505092959891949750929550565b600081519050919050565b600081905092915050565b60005b83811015611ee6578082015181840152602081019050611ecb565b60008484015250505050565b6000611efd82611eb2565b611f078185611ebd565b9350611f17818560208601611ec8565b80840191505092915050565b6000611f2f8284611ef2565b915081905092915050565b600082825260208201905092915050565b7f476174657761793a2063616c6c20746f20666163746f7279206661696c656400600082015250565b6000611f81601f83611f3a565b9150611f8c82611f4b565b602082019050919050565b60006020820190508181036000830152611fb081611f74565b9050919050565b600082825260208201905092915050565b6000611fd48385611fb7565b9350611fe183858461192f565b611fea83611872565b840190509392505050565b60006020820190508181036000830152612010818486611fc8565b90509392505050565b7f417574686f72697a65204f4e434841494e4944206465706c6f796d656e740000600082015250565b600061204f601e83611f3a565b915061205a82612019565b602082019050919050565b600081519050919050565b600061207b82612065565b6120858185611f3a565b9350612095818560208601611ec8565b61209e81611872565b840191505092915050565b6120b281611af6565b82525050565b600060808201905081810360008301526120d181612042565b90506120e06020830186611c30565b81810360408301526120f28185612070565b905061210160608301846120a9565b949350505050565b60006121158385611ebd565b935061212283858461192f565b82840190509392505050565b600061213b828486612109565b91508190509392505050565b600060408201905061215c6000830185611c30565b818103602083015261216e8184612070565b90509392505050565b60008151905061218681611a29565b92915050565b6000602082840312156121a2576121a161185e565b5b60006121b084828501612177565b91505092915050565b600082825260208201905092915050565b600080fd5b82818337505050565b60006121e483856121b9565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612217576122166121ca565b5b6020830292506122288385846121cf565b82840190509392505050565b600060a082019050818103600083015261224d81612042565b905061225c6020830188611c30565b818103604083015261226e8187612070565b905081810360608301526122838185876121d8565b905061229260808301846120a9565b9695505050505050565b60006060820190506122b16000830187611c30565b81810360208301526122c38186612070565b905081810360408301526122d88184866121d8565b905095945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061233f602683611f3a565b915061234a826122e3565b604082019050919050565b6000602082019050818103600083015261236e81612332565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006123ab602083611f3a565b91506123b682612375565b602082019050919050565b600060208201905081810360008301526123da8161239e565b9050919050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612422601c836123e1565b915061242d826123ec565b601c82019050919050565b6000819050919050565b6000819050919050565b61245d61245882612438565b612442565b82525050565b600061246e82612415565b915061247a828461244c565b60208201915081905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006124ee601883611f3a565b91506124f9826124b8565b602082019050919050565b6000602082019050818103600083015261251d816124e1565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061255a601f83611f3a565b915061256582612524565b602082019050919050565b600060208201905081810360008301526125898161254d565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006125ec602283611f3a565b91506125f782612590565b604082019050919050565b6000602082019050818103600083015261261b816125df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061265c82611af6565b915061266783611af6565b925082820261267581611af6565b9150828204841483151761268c5761268b612622565b5b5092915050565b600061269e82611af6565b91506126a983611af6565b92508282019050808211156126c1576126c0612622565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061270182611af6565b91506000820361271457612713612622565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000612755602083611f3a565b91506127608261271f565b602082019050919050565b6000602082019050818103600083015261278481612748565b9050919050565b61279481612438565b82525050565b600060ff82169050919050565b6127b08161279a565b82525050565b60006080820190506127cb600083018761278b565b6127d860208301866127a7565b6127e5604083018561278b565b6127f2606083018461278b565b9594505050505056fea2646970667358221220fa5bb44432342883656aa5c6b93f0a36aeeb3ddabe982ce1f7972d3f17ba006264736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
