{
  "_format": "hh-sol-artifact-1",
  "contractName": "IdFactory",
  "sourceName": "contracts/factory/IdFactory.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementationAuthority",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_addr",
          "type": "address"
        }
      ],
      "name": "Deployed",
      "type": "event"
    },
    {
      "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": "address",
          "name": "factory",
          "type": "address"
        }
      ],
      "name": "TokenFactoryAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "factory",
          "type": "address"
        }
      ],
      "name": "TokenFactoryRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "identity",
          "type": "address"
        }
      ],
      "name": "TokenLinked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "identity",
          "type": "address"
        }
      ],
      "name": "WalletLinked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "identity",
          "type": "address"
        }
      ],
      "name": "WalletUnlinked",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        }
      ],
      "name": "addTokenFactory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_wallet",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_salt",
          "type": "string"
        }
      ],
      "name": "createIdentity",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_wallet",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_salt",
          "type": "string"
        },
        {
          "internalType": "bytes32[]",
          "name": "_managementKeys",
          "type": "bytes32[]"
        }
      ],
      "name": "createIdentityWithManagementKeys",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenOwner",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_salt",
          "type": "string"
        }
      ],
      "name": "createTokenIdentity",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_wallet",
          "type": "address"
        }
      ],
      "name": "getIdentity",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_identity",
          "type": "address"
        }
      ],
      "name": "getToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_identity",
          "type": "address"
        }
      ],
      "name": "getWallets",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "implementationAuthority",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_salt",
          "type": "string"
        }
      ],
      "name": "isSaltTaken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        }
      ],
      "name": "isTokenFactory",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newWallet",
          "type": "address"
        }
      ],
      "name": "linkWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        }
      ],
      "name": "removeTokenFactory",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_oldWallet",
          "type": "address"
        }
      ],
      "name": "unlinkWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523480156200001157600080fd5b50604051620048ab380380620048ab83398181016040528101906200003791906200023a565b620000576200004b6200010460201b60201c565b6200010c60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000c090620002cd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505050620002ef565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200020282620001d5565b9050919050565b6200021481620001f5565b81146200022057600080fd5b50565b600081519050620002348162000209565b92915050565b600060208284031215620002535762000252620001d0565b5b6000620002638482850162000223565b91505092915050565b600082825260208201905092915050565b7f696e76616c696420617267756d656e74202d207a65726f206164647265737300600082015250565b6000620002b5601f836200026c565b9150620002c2826200027d565b602082019050919050565b60006020820190508181036000830152620002e881620002a6565b9050919050565b60805161458b62000320600039600081816103c1015281816108fb01528181611518015261226a015261458b6000f3fe60806040523480156200001157600080fd5b5060043610620001185760003560e01c8063715018a611620000a55780639ce19365116200006f5780639ce193651462000327578063b8bb81261462000347578063f2fde38b1462000367578063fe5cd59a14620003875762000118565b8063715018a614620002a35780638da5cb5b14620002af5780638e952bfe14620002d1578063937529ef14620003075762000118565b80633e3bc3d711620000e75780633e3bc3d714620001e1578063422c29a414620002175780635027dbe2146200024d57806359770438146200026d5762000118565b80632307f882146200011d5780632fea7b81146200013f5780633a50045114620001755780633d56ff6614620001ab575b600080fd5b62000127620003bd565b6040516200013691906200291f565b60405180910390f35b6200015d600480360381019062000157919062002981565b620003e5565b6040516200016c91906200291f565b60405180910390f35b6200019360048036038101906200018d919062002a21565b6200054a565b604051620001a2919062002a93565b60405180910390f35b620001c96004803603810190620001c3919062002c0d565b62000584565b604051620001d891906200291f565b60405180910390f35b620001ff6004803603810190620001f9919062002981565b62000abe565b6040516200020e919062002a93565b60405180910390f35b6200023560048036038101906200022f919062002981565b62000b14565b60405162000244919062002d56565b60405180910390f35b6200026b600480360381019062000265919062002981565b62000be3565b005b6200028b600480360381019062000285919062002981565b620011ec565b6040516200029a91906200291f565b60405180910390f35b620002ad62001255565b005b620002b96200126d565b604051620002c891906200291f565b60405180910390f35b620002ef6004803603810190620002e9919062002d7a565b62001296565b604051620002fe91906200291f565b60405180910390f35b6200032560048036038101906200031f919062002981565b620016fc565b005b6200034560048036038101906200033f919062002981565b62001863565b005b6200036560048036038101906200035f919062002981565b620019ca565b005b6200038560048036038101906200037f919062002981565b62001f17565b005b620003a560048036038101906200039f919062002ef1565b62001fa1565b604051620003b491906200291f565b60405180910390f35b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60008073ffffffffffffffffffffffffffffffffffffffff16600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620004e257600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000545565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b919050565b6000600283836040516200056092919062002fbf565b908152602001604051809103902060009054906101000a900460ff16905092915050565b6000620005913362000abe565b80620005d15750620005a26200126d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b62000613576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060a906200303b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000685576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067c90620030ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ee90620030ad565b60405180910390fd5b6040516020016200070890620030f9565b604051602081830303815290604052805190602001208260405160200162000731919062003193565b60405160208183030381529060405280519060200120036200078a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007819062003207565b60405180910390fd5b6000826040516020016200079f919062003286565b6040516020818303038152906040529050600281604051620007c29190620032b0565b908152602001604051809103902060009054906101000a900460ff161562000821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008189062003319565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e990620033b1565b60405180910390fd5b600062000921827f0000000000000000000000000000000000000000000000000000000000000000876200264e565b90506001600283604051620009379190620032b0565b908152602001604051809103902060006101000a81548160ff02191690831515021790555080600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fa8261d398ddc63db24cc53cd0c63c9464cabad1bc478ede2107b32c1c4010b7a60405160405180910390a380925050509392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6060600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801562000bd757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000b8c575b50505050509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000c55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c4c90620030ad565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000cc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cbd9062003449565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000df5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000dec90620034bb565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b818110156200118c578373ffffffffffffffffffffffffffffffffffffffff16600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811062000f795762000f78620034dd565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200117657600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001836200100e919062003545565b81548110620010225762001021620034dd565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110620010a157620010a0620034dd565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806200113b576200113a62003580565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556200118c565b80806200118390620035af565b91505062000f05565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f35e6fc363a4bf723d53b26c1a751674aca9c3ead425f0591f84f5540ede86f1260405160405180910390a3505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6200125f620026e1565b6200126b600062002766565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000620012a2620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362001314576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200130b90620030ad565b60405180910390fd5b6040516020016200132590620030f9565b60405160208183030381529060405280519060200120826040516020016200134e919062003193565b6040516020818303038152906040528051906020012003620013a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200139e9062003207565b60405180910390fd5b600082604051602001620013bc919062003622565b6040516020818303038152906040529050600281604051620013df9190620032b0565b908152602001604051809103902060009054906101000a900460ff16156200143e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620014359062003319565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200150f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200150690620036c2565b60405180910390fd5b60006200153e827f0000000000000000000000000000000000000000000000000000000000000000876200264e565b90506001600283604051620015549190620032b0565b908152602001604051809103902060006101000a81548160ff02191690831515021790555080600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020859080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8e0c709111388f5480579514d86663489ab1f206fe6da1a0c4d03ac8c318b3c660405160405180910390a3809250505092915050565b62001706620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001778576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200176f90620030ad565b60405180910390fd5b620017838162000abe565b620017c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620017bc9062003734565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fd1fd5274f793d20291c0abfe42e1ef63213a11b34996d485f7afb8fe0142485160405160405180910390a250565b6200186d620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620018df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018d690620030ad565b60405180910390fd5b620018ea8162000abe565b156200192d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200192490620037a6565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f45eb8ac5344d2d3f306550fe6e969ca4190526313c512afed851d052bf2ab2fd60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001a3390620030ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362001b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001b04906200383e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462001bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001bd590620038b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462001caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001ca69062003922565b60405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506065600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501062001d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001d9290620039ba565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8e0c709111388f5480579514d86663489ab1f206fe6da1a0c4d03ac8c318b3c660405160405180910390a35050565b62001f21620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001f93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001f8a9062003a52565b60405180910390fd5b62001f9e8162002766565b50565b600062001fad620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036200201f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200201690620030ad565b60405180910390fd5b6040516020016200203090620030f9565b604051602081830303815290604052805190602001208360405160200162002059919062003193565b6040516020818303038152906040528051906020012003620020b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620020a99062003207565b60405180910390fd5b600083604051602001620020c7919062003622565b6040516020818303038152906040529050600281604051620020ea9190620032b0565b908152602001604051809103902060009054906101000a900460ff161562002149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620021409062003319565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200221a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200221190620036c2565b60405180910390fd5b600083511162002261576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620022589062003aea565b60405180910390fd5b600062002290827f0000000000000000000000000000000000000000000000000000000000000000306200264e565b905060005b8451811015620023e35786604051602001620022b291906200291f565b60405160208183030381529060405280519060200120858281518110620022de57620022dd620034dd565b5b60200260200101510362002329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023209062003b82565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16631d3812408683815181106200235b576200235a620034dd565b5b60200260200101516001806040518463ffffffff1660e01b8152600401620023869392919062003c02565b6020604051808303816000875af1158015620023a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023cc919062003c70565b508080620023da90620035af565b91505062002295565b508073ffffffffffffffffffffffffffffffffffffffff166353d413c5306040516020016200241391906200291f565b6040516020818303038152906040528051906020012060016040518363ffffffff1660e01b81526004016200244a92919062003ca2565b6020604051808303816000875af11580156200246a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002490919062003c70565b506001600283604051620024a59190620032b0565b908152602001604051809103902060006101000a81548160ff02191690831515021790555080600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8e0c709111388f5480579514d86663489ab1f206fe6da1a0c4d03ac8c318b3c660405160405180910390a380925050509392505050565b600080604051806020016200266390620028cc565b6020820181038252601f19601f820116604052509050600084846040516020016200269092919062003ccf565b604051602081830303815290604052905060008282604051602001620026b892919062003d49565b6040516020818303038152906040529050620026d587826200282a565b93505050509392505050565b620026eb620028c4565b73ffffffffffffffffffffffffffffffffffffffff166200270b6200126d565b73ffffffffffffffffffffffffffffffffffffffff161462002764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200275b9062003dc1565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083604051602001620028409190620032b0565b60405160208183030381529060405280519060200120905060008360200184518381836000f59250823b6200287457600080fd5b50508073ffffffffffffffffffffffffffffffffffffffff167ff40fcec21964ffb566044d083b4073f29f7f7929110ea19e1b3ebe375d89055e60405160405180910390a2809250505092915050565b600033905090565b6107728062003de483390190565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200290782620028da565b9050919050565b6200291981620028fa565b82525050565b60006020820190506200293660008301846200290e565b92915050565b6000604051905090565b600080fd5b600080fd5b6200295b81620028fa565b81146200296757600080fd5b50565b6000813590506200297b8162002950565b92915050565b6000602082840312156200299a576200299962002946565b5b6000620029aa848285016200296a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112620029db57620029da620029b3565b5b8235905067ffffffffffffffff811115620029fb57620029fa620029b8565b5b60208301915083600182028301111562002a1a5762002a19620029bd565b5b9250929050565b6000806020838503121562002a3b5762002a3a62002946565b5b600083013567ffffffffffffffff81111562002a5c5762002a5b6200294b565b5b62002a6a85828601620029c2565b92509250509250929050565b60008115159050919050565b62002a8d8162002a76565b82525050565b600060208201905062002aaa600083018462002a82565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62002b008262002ab5565b810181811067ffffffffffffffff8211171562002b225762002b2162002ac6565b5b80604052505050565b600062002b376200293c565b905062002b45828262002af5565b919050565b600067ffffffffffffffff82111562002b685762002b6762002ac6565b5b62002b738262002ab5565b9050602081019050919050565b82818337600083830152505050565b600062002ba662002ba08462002b4a565b62002b2b565b90508281526020810184848401111562002bc55762002bc462002ab0565b5b62002bd284828562002b80565b509392505050565b600082601f83011262002bf25762002bf1620029b3565b5b813562002c0484826020860162002b8f565b91505092915050565b60008060006060848603121562002c295762002c2862002946565b5b600062002c39868287016200296a565b935050602062002c4c868287016200296a565b925050604084013567ffffffffffffffff81111562002c705762002c6f6200294b565b5b62002c7e8682870162002bda565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62002cbf81620028fa565b82525050565b600062002cd3838362002cb4565b60208301905092915050565b6000602082019050919050565b600062002cf98262002c88565b62002d05818562002c93565b935062002d128362002ca4565b8060005b8381101562002d4957815162002d2d888262002cc5565b975062002d3a8362002cdf565b92505060018101905062002d16565b5085935050505092915050565b6000602082019050818103600083015262002d72818462002cec565b905092915050565b6000806040838503121562002d945762002d9362002946565b5b600062002da4858286016200296a565b925050602083013567ffffffffffffffff81111562002dc85762002dc76200294b565b5b62002dd68582860162002bda565b9150509250929050565b600067ffffffffffffffff82111562002dfe5762002dfd62002ac6565b5b602082029050602081019050919050565b6000819050919050565b62002e248162002e0f565b811462002e3057600080fd5b50565b60008135905062002e448162002e19565b92915050565b600062002e6162002e5b8462002de0565b62002b2b565b9050808382526020820190506020840283018581111562002e875762002e86620029bd565b5b835b8181101562002eb4578062002e9f888262002e33565b84526020840193505060208101905062002e89565b5050509392505050565b600082601f83011262002ed65762002ed5620029b3565b5b813562002ee884826020860162002e4a565b91505092915050565b60008060006060848603121562002f0d5762002f0c62002946565b5b600062002f1d868287016200296a565b935050602084013567ffffffffffffffff81111562002f415762002f406200294b565b5b62002f4f8682870162002bda565b925050604084013567ffffffffffffffff81111562002f735762002f726200294b565b5b62002f818682870162002ebe565b9150509250925092565b600081905092915050565b600062002fa4838562002f8b565b935062002fb383858462002b80565b82840190509392505050565b600062002fce82848662002f96565b91508190509392505050565b600082825260208201905092915050565b7f6f6e6c7920466163746f7279206f72206f776e65722063616e2063616c6c0000600082015250565b600062003023601e8362002fda565b9150620030308262002feb565b602082019050919050565b60006020820190508181036000830152620030568162003014565b9050919050565b7f696e76616c696420617267756d656e74202d207a65726f206164647265737300600082015250565b600062003095601f8362002fda565b9150620030a2826200305d565b602082019050919050565b60006020820190508181036000830152620030c88162003086565b9050919050565b50565b6000620030e160008362002fda565b9150620030ee82620030cf565b600082019050919050565b600060208201905081810360008301526200311481620030d2565b9050919050565b600081519050919050565b60005b838110156200314657808201518184015260208101905062003129565b60008484015250505050565b60006200315f826200311b565b6200316b818562002fda565b93506200317d81856020860162003126565b620031888162002ab5565b840191505092915050565b60006020820190508181036000830152620031af818462003152565b905092915050565b7f696e76616c696420617267756d656e74202d20656d70747920737472696e6700600082015250565b6000620031ef601f8362002fda565b9150620031fc82620031b7565b602082019050919050565b600060208201905081810360008301526200322281620031e0565b9050919050565b7f546f6b656e000000000000000000000000000000000000000000000000000000815250565b60006200325c826200311b565b62003268818562002f8b565b93506200327a81856020860162003126565b80840191505092915050565b6000620032938262003229565b600582019150620032a582846200324f565b915081905092915050565b6000620032be82846200324f565b915081905092915050565b7f73616c7420616c72656164792074616b656e0000000000000000000000000000600082015250565b60006200330160128362002fda565b91506200330e82620032c9565b602082019050919050565b600060208201905081810360008301526200333481620032f2565b9050919050565b7f746f6b656e20616c7265616479206c696e6b656420746f20616e206964656e7460008201527f6974790000000000000000000000000000000000000000000000000000000000602082015250565b60006200339960238362002fda565b9150620033a6826200333b565b604082019050919050565b60006020820190508181036000830152620033cc816200338a565b9050919050565b7f63616e6e6f742062652063616c6c6564206f6e2073656e64657220616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200343160228362002fda565b91506200343e82620033d3565b604082019050919050565b60006020820190508181036000830152620034648162003422565b9050919050565b7f6f6e6c792061206c696e6b65642077616c6c65742063616e20756e6c696e6b00600082015250565b6000620034a3601f8362002fda565b9150620034b0826200346b565b602082019050919050565b60006020820190508181036000830152620034d68162003494565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062003552826200350c565b91506200355f836200350c565b92508282039050818111156200357a576200357962003516565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000620035bc826200350c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620035f157620035f062003516565b5b600182019050919050565b7f4f49440000000000000000000000000000000000000000000000000000000000815250565b60006200362f82620035fc565b6003820191506200364182846200324f565b915081905092915050565b7f77616c6c657420616c7265616479206c696e6b656420746f20616e206964656e60008201527f7469747900000000000000000000000000000000000000000000000000000000602082015250565b6000620036aa60248362002fda565b9150620036b7826200364c565b604082019050919050565b60006020820190508181036000830152620036dd816200369b565b9050919050565b7f6e6f74206120666163746f727900000000000000000000000000000000000000600082015250565b60006200371c600d8362002fda565b91506200372982620036e4565b602082019050919050565b600060208201905081810360008301526200374f816200370d565b9050919050565b7f616c7265616479206120666163746f7279000000000000000000000000000000600082015250565b60006200378e60118362002fda565b91506200379b8262003756565b602082019050919050565b60006020820190508181036000830152620037c1816200377f565b9050919050565b7f77616c6c6574206e6f74206c696e6b656420746f20616e206964656e7469747960008201527f20636f6e74726163740000000000000000000000000000000000000000000000602082015250565b60006200382660298362002fda565b91506200383382620037c8565b604082019050919050565b60006020820190508181036000830152620038598162003817565b9050919050565b7f6e65772077616c6c657420616c7265616479206c696e6b656400000000000000600082015250565b60006200389860198362002fda565b9150620038a58262003860565b602082019050919050565b60006020820190508181036000830152620038cb8162003889565b9050919050565b7f696e76616c696420617267756d656e74202d20746f6b656e2061646472657373600082015250565b60006200390a60208362002fda565b91506200391782620038d2565b602082019050919050565b600060208201905081810360008301526200393d81620038fb565b9050919050565b7f6d617820616d6f756e74206f662077616c6c657473207065722049442065786360008201527f6565646564000000000000000000000000000000000000000000000000000000602082015250565b6000620039a260258362002fda565b9150620039af8262003944565b604082019050919050565b60006020820190508181036000830152620039d58162003993565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062003a3a60268362002fda565b915062003a4782620039dc565b604082019050919050565b6000602082019050818103600083015262003a6d8162003a2b565b9050919050565b7f696e76616c696420617267756d656e74202d20656d707479206c697374206f6660008201527f206b657973000000000000000000000000000000000000000000000000000000602082015250565b600062003ad260258362002fda565b915062003adf8262003a74565b604082019050919050565b6000602082019050818103600083015262003b058162003ac3565b9050919050565b7f696e76616c696420617267756d656e74202d2077616c6c657420697320616c7360008201527f6f206c697374656420696e206d616e6167656d656e74206b6579730000000000602082015250565b600062003b6a603b8362002fda565b915062003b778262003b0c565b604082019050919050565b6000602082019050818103600083015262003b9d8162003b5b565b9050919050565b62003baf8162002e0f565b82525050565b6000819050919050565b6000819050919050565b600062003bea62003be462003bde8462003bb5565b62003bbf565b6200350c565b9050919050565b62003bfc8162003bc9565b82525050565b600060608201905062003c19600083018662003ba4565b62003c28602083018562003bf1565b62003c37604083018462003bf1565b949350505050565b62003c4a8162002a76565b811462003c5657600080fd5b50565b60008151905062003c6a8162003c3f565b92915050565b60006020828403121562003c895762003c8862002946565b5b600062003c998482850162003c59565b91505092915050565b600060408201905062003cb9600083018562003ba4565b62003cc8602083018462003bf1565b9392505050565b600060408201905062003ce660008301856200290e565b62003cf560208301846200290e565b9392505050565b600081519050919050565b600081905092915050565b600062003d1f8262003cfc565b62003d2b818562003d07565b935062003d3d81856020860162003126565b80840191505092915050565b600062003d57828562003d12565b915062003d65828462003d12565b91508190509392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062003da960208362002fda565b915062003db68262003d71565b602082019050919050565b6000602082019050818103600083015262003ddc8162003d9a565b905091905056fe608060405234801561001057600080fd5b506040516107723803806107728339818101604052810190610032919061034a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036100a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610098906103e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610107906103e7565b60405180910390fd5b817f821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc5560008273ffffffffffffffffffffffffffffffffffffffff1663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa158015610180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a49190610407565b905060008173ffffffffffffffffffffffffffffffffffffffff16836040516024016101d09190610443565b6040516020818303038152906040527fc4d66de8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161025a91906104cf565b600060405180830381855af49150503d8060008114610295576040519150601f19603f3d011682016040523d82523d6000602084013e61029a565b606091505b50509050806102de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d590610532565b60405180910390fd5b50505050610552565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610317826102ec565b9050919050565b6103278161030c565b811461033257600080fd5b50565b6000815190506103448161031e565b92915050565b60008060408385031215610361576103606102e7565b5b600061036f85828601610335565b925050602061038085828601610335565b9150509250929050565b600082825260208201905092915050565b7f696e76616c696420617267756d656e74202d207a65726f206164647265737300600082015250565b60006103d1601f8361038a565b91506103dc8261039b565b602082019050919050565b60006020820190508181036000830152610400816103c4565b9050919050565b60006020828403121561041d5761041c6102e7565b5b600061042b84828501610335565b91505092915050565b61043d8161030c565b82525050565b60006020820190506104586000830184610434565b92915050565b600081519050919050565b600081905092915050565b60005b83811015610492578082015181840152602081019050610477565b60008484015250505050565b60006104a98261045e565b6104b38185610469565b93506104c3818560208601610474565b80840191505092915050565b60006104db828461049e565b915081905092915050565b7f496e697469616c697a6174696f6e206661696c65642e00000000000000000000600082015250565b600061051c60168361038a565b9150610527826104e6565b602082019050919050565b6000602082019050818103600083015261054b8161050f565b9050919050565b610211806105616000396000f3fe6080604052600436106100225760003560e01c80632307f882146100c857610023565b5b600061002d6100f3565b73ffffffffffffffffffffffffffffffffffffffff1663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa158015610077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009b9190610184565b90503660008037600080366000846127105a03f43d806000803e81600081146100c357816000f35b816000fd5b3480156100d457600080fd5b506100dd6100f3565b6040516100ea91906101c0565b60405180910390f35b6000807f821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc5490508091505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061015182610126565b9050919050565b61016181610146565b811461016c57600080fd5b50565b60008151905061017e81610158565b92915050565b60006020828403121561019a57610199610121565b5b60006101a88482850161016f565b91505092915050565b6101ba81610146565b82525050565b60006020820190506101d560008301846101b1565b9291505056fea264697066735822122087108c0e411bfe27737deb09117917821789f7599cced8134d2683b7969e34ae64736f6c63430008110033a2646970667358221220c59db5c5d82b4f1521e06b7e58107aab1a6dfd1bb1bc8c2da3b4d1ff5ba727e464736f6c63430008110033",
  "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620001185760003560e01c8063715018a611620000a55780639ce19365116200006f5780639ce193651462000327578063b8bb81261462000347578063f2fde38b1462000367578063fe5cd59a14620003875762000118565b8063715018a614620002a35780638da5cb5b14620002af5780638e952bfe14620002d1578063937529ef14620003075762000118565b80633e3bc3d711620000e75780633e3bc3d714620001e1578063422c29a414620002175780635027dbe2146200024d57806359770438146200026d5762000118565b80632307f882146200011d5780632fea7b81146200013f5780633a50045114620001755780633d56ff6614620001ab575b600080fd5b62000127620003bd565b6040516200013691906200291f565b60405180910390f35b6200015d600480360381019062000157919062002981565b620003e5565b6040516200016c91906200291f565b60405180910390f35b6200019360048036038101906200018d919062002a21565b6200054a565b604051620001a2919062002a93565b60405180910390f35b620001c96004803603810190620001c3919062002c0d565b62000584565b604051620001d891906200291f565b60405180910390f35b620001ff6004803603810190620001f9919062002981565b62000abe565b6040516200020e919062002a93565b60405180910390f35b6200023560048036038101906200022f919062002981565b62000b14565b60405162000244919062002d56565b60405180910390f35b6200026b600480360381019062000265919062002981565b62000be3565b005b6200028b600480360381019062000285919062002981565b620011ec565b6040516200029a91906200291f565b60405180910390f35b620002ad62001255565b005b620002b96200126d565b604051620002c891906200291f565b60405180910390f35b620002ef6004803603810190620002e9919062002d7a565b62001296565b604051620002fe91906200291f565b60405180910390f35b6200032560048036038101906200031f919062002981565b620016fc565b005b6200034560048036038101906200033f919062002981565b62001863565b005b6200036560048036038101906200035f919062002981565b620019ca565b005b6200038560048036038101906200037f919062002981565b62001f17565b005b620003a560048036038101906200039f919062002ef1565b62001fa1565b604051620003b491906200291f565b60405180910390f35b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60008073ffffffffffffffffffffffffffffffffffffffff16600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620004e257600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000545565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b919050565b6000600283836040516200056092919062002fbf565b908152602001604051809103902060009054906101000a900460ff16905092915050565b6000620005913362000abe565b80620005d15750620005a26200126d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b62000613576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060a906200303b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000685576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067c90620030ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ee90620030ad565b60405180910390fd5b6040516020016200070890620030f9565b604051602081830303815290604052805190602001208260405160200162000731919062003193565b60405160208183030381529060405280519060200120036200078a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007819062003207565b60405180910390fd5b6000826040516020016200079f919062003286565b6040516020818303038152906040529050600281604051620007c29190620032b0565b908152602001604051809103902060009054906101000a900460ff161562000821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008189062003319565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008f2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e990620033b1565b60405180910390fd5b600062000921827f0000000000000000000000000000000000000000000000000000000000000000876200264e565b90506001600283604051620009379190620032b0565b908152602001604051809103902060006101000a81548160ff02191690831515021790555080600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fa8261d398ddc63db24cc53cd0c63c9464cabad1bc478ede2107b32c1c4010b7a60405160405180910390a380925050509392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6060600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801562000bd757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831162000b8c575b50505050509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000c55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c4c90620030ad565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000cc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cbd9062003449565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000df5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000dec90620034bb565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050905060005b818110156200118c578373ffffffffffffffffffffffffffffffffffffffff16600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811062000f795762000f78620034dd565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200117657600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001836200100e919062003545565b81548110620010225762001021620034dd565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110620010a157620010a0620034dd565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806200113b576200113a62003580565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556200118c565b80806200118390620035af565b91505062000f05565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f35e6fc363a4bf723d53b26c1a751674aca9c3ead425f0591f84f5540ede86f1260405160405180910390a3505050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6200125f620026e1565b6200126b600062002766565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000620012a2620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362001314576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200130b90620030ad565b60405180910390fd5b6040516020016200132590620030f9565b60405160208183030381529060405280519060200120826040516020016200134e919062003193565b6040516020818303038152906040528051906020012003620013a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200139e9062003207565b60405180910390fd5b600082604051602001620013bc919062003622565b6040516020818303038152906040529050600281604051620013df9190620032b0565b908152602001604051809103902060009054906101000a900460ff16156200143e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620014359062003319565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200150f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200150690620036c2565b60405180910390fd5b60006200153e827f0000000000000000000000000000000000000000000000000000000000000000876200264e565b90506001600283604051620015549190620032b0565b908152602001604051809103902060006101000a81548160ff02191690831515021790555080600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020859080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8e0c709111388f5480579514d86663489ab1f206fe6da1a0c4d03ac8c318b3c660405160405180910390a3809250505092915050565b62001706620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001778576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200176f90620030ad565b60405180910390fd5b620017838162000abe565b620017c5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620017bc9062003734565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fd1fd5274f793d20291c0abfe42e1ef63213a11b34996d485f7afb8fe0142485160405160405180910390a250565b6200186d620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620018df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018d690620030ad565b60405180910390fd5b620018ea8162000abe565b156200192d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200192490620037a6565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f45eb8ac5344d2d3f306550fe6e969ca4190526313c512afed851d052bf2ab2fd60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001a3390620030ad565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362001b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001b04906200383e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462001bde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001bd590620038b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462001caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001ca69062003922565b60405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506065600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490501062001d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001d9290620039ba565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8e0c709111388f5480579514d86663489ab1f206fe6da1a0c4d03ac8c318b3c660405160405180910390a35050565b62001f21620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001f93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162001f8a9062003a52565b60405180910390fd5b62001f9e8162002766565b50565b600062001fad620026e1565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036200201f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200201690620030ad565b60405180910390fd5b6040516020016200203090620030f9565b604051602081830303815290604052805190602001208360405160200162002059919062003193565b6040516020818303038152906040528051906020012003620020b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620020a99062003207565b60405180910390fd5b600083604051602001620020c7919062003622565b6040516020818303038152906040529050600281604051620020ea9190620032b0565b908152602001604051809103902060009054906101000a900460ff161562002149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620021409062003319565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200221a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200221190620036c2565b60405180910390fd5b600083511162002261576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620022589062003aea565b60405180910390fd5b600062002290827f0000000000000000000000000000000000000000000000000000000000000000306200264e565b905060005b8451811015620023e35786604051602001620022b291906200291f565b60405160208183030381529060405280519060200120858281518110620022de57620022dd620034dd565b5b60200260200101510362002329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023209062003b82565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16631d3812408683815181106200235b576200235a620034dd565b5b60200260200101516001806040518463ffffffff1660e01b8152600401620023869392919062003c02565b6020604051808303816000875af1158015620023a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023cc919062003c70565b508080620023da90620035af565b91505062002295565b508073ffffffffffffffffffffffffffffffffffffffff166353d413c5306040516020016200241391906200291f565b6040516020818303038152906040528051906020012060016040518363ffffffff1660e01b81526004016200244a92919062003ca2565b6020604051808303816000875af11580156200246a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002490919062003c70565b506001600283604051620024a59190620032b0565b908152602001604051809103902060006101000a81548160ff02191690831515021790555080600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020869080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8e0c709111388f5480579514d86663489ab1f206fe6da1a0c4d03ac8c318b3c660405160405180910390a380925050509392505050565b600080604051806020016200266390620028cc565b6020820181038252601f19601f820116604052509050600084846040516020016200269092919062003ccf565b604051602081830303815290604052905060008282604051602001620026b892919062003d49565b6040516020818303038152906040529050620026d587826200282a565b93505050509392505050565b620026eb620028c4565b73ffffffffffffffffffffffffffffffffffffffff166200270b6200126d565b73ffffffffffffffffffffffffffffffffffffffff161462002764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200275b9062003dc1565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083604051602001620028409190620032b0565b60405160208183030381529060405280519060200120905060008360200184518381836000f59250823b6200287457600080fd5b50508073ffffffffffffffffffffffffffffffffffffffff167ff40fcec21964ffb566044d083b4073f29f7f7929110ea19e1b3ebe375d89055e60405160405180910390a2809250505092915050565b600033905090565b6107728062003de483390190565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200290782620028da565b9050919050565b6200291981620028fa565b82525050565b60006020820190506200293660008301846200290e565b92915050565b6000604051905090565b600080fd5b600080fd5b6200295b81620028fa565b81146200296757600080fd5b50565b6000813590506200297b8162002950565b92915050565b6000602082840312156200299a576200299962002946565b5b6000620029aa848285016200296a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112620029db57620029da620029b3565b5b8235905067ffffffffffffffff811115620029fb57620029fa620029b8565b5b60208301915083600182028301111562002a1a5762002a19620029bd565b5b9250929050565b6000806020838503121562002a3b5762002a3a62002946565b5b600083013567ffffffffffffffff81111562002a5c5762002a5b6200294b565b5b62002a6a85828601620029c2565b92509250509250929050565b60008115159050919050565b62002a8d8162002a76565b82525050565b600060208201905062002aaa600083018462002a82565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62002b008262002ab5565b810181811067ffffffffffffffff8211171562002b225762002b2162002ac6565b5b80604052505050565b600062002b376200293c565b905062002b45828262002af5565b919050565b600067ffffffffffffffff82111562002b685762002b6762002ac6565b5b62002b738262002ab5565b9050602081019050919050565b82818337600083830152505050565b600062002ba662002ba08462002b4a565b62002b2b565b90508281526020810184848401111562002bc55762002bc462002ab0565b5b62002bd284828562002b80565b509392505050565b600082601f83011262002bf25762002bf1620029b3565b5b813562002c0484826020860162002b8f565b91505092915050565b60008060006060848603121562002c295762002c2862002946565b5b600062002c39868287016200296a565b935050602062002c4c868287016200296a565b925050604084013567ffffffffffffffff81111562002c705762002c6f6200294b565b5b62002c7e8682870162002bda565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62002cbf81620028fa565b82525050565b600062002cd3838362002cb4565b60208301905092915050565b6000602082019050919050565b600062002cf98262002c88565b62002d05818562002c93565b935062002d128362002ca4565b8060005b8381101562002d4957815162002d2d888262002cc5565b975062002d3a8362002cdf565b92505060018101905062002d16565b5085935050505092915050565b6000602082019050818103600083015262002d72818462002cec565b905092915050565b6000806040838503121562002d945762002d9362002946565b5b600062002da4858286016200296a565b925050602083013567ffffffffffffffff81111562002dc85762002dc76200294b565b5b62002dd68582860162002bda565b9150509250929050565b600067ffffffffffffffff82111562002dfe5762002dfd62002ac6565b5b602082029050602081019050919050565b6000819050919050565b62002e248162002e0f565b811462002e3057600080fd5b50565b60008135905062002e448162002e19565b92915050565b600062002e6162002e5b8462002de0565b62002b2b565b9050808382526020820190506020840283018581111562002e875762002e86620029bd565b5b835b8181101562002eb4578062002e9f888262002e33565b84526020840193505060208101905062002e89565b5050509392505050565b600082601f83011262002ed65762002ed5620029b3565b5b813562002ee884826020860162002e4a565b91505092915050565b60008060006060848603121562002f0d5762002f0c62002946565b5b600062002f1d868287016200296a565b935050602084013567ffffffffffffffff81111562002f415762002f406200294b565b5b62002f4f8682870162002bda565b925050604084013567ffffffffffffffff81111562002f735762002f726200294b565b5b62002f818682870162002ebe565b9150509250925092565b600081905092915050565b600062002fa4838562002f8b565b935062002fb383858462002b80565b82840190509392505050565b600062002fce82848662002f96565b91508190509392505050565b600082825260208201905092915050565b7f6f6e6c7920466163746f7279206f72206f776e65722063616e2063616c6c0000600082015250565b600062003023601e8362002fda565b9150620030308262002feb565b602082019050919050565b60006020820190508181036000830152620030568162003014565b9050919050565b7f696e76616c696420617267756d656e74202d207a65726f206164647265737300600082015250565b600062003095601f8362002fda565b9150620030a2826200305d565b602082019050919050565b60006020820190508181036000830152620030c88162003086565b9050919050565b50565b6000620030e160008362002fda565b9150620030ee82620030cf565b600082019050919050565b600060208201905081810360008301526200311481620030d2565b9050919050565b600081519050919050565b60005b838110156200314657808201518184015260208101905062003129565b60008484015250505050565b60006200315f826200311b565b6200316b818562002fda565b93506200317d81856020860162003126565b620031888162002ab5565b840191505092915050565b60006020820190508181036000830152620031af818462003152565b905092915050565b7f696e76616c696420617267756d656e74202d20656d70747920737472696e6700600082015250565b6000620031ef601f8362002fda565b9150620031fc82620031b7565b602082019050919050565b600060208201905081810360008301526200322281620031e0565b9050919050565b7f546f6b656e000000000000000000000000000000000000000000000000000000815250565b60006200325c826200311b565b62003268818562002f8b565b93506200327a81856020860162003126565b80840191505092915050565b6000620032938262003229565b600582019150620032a582846200324f565b915081905092915050565b6000620032be82846200324f565b915081905092915050565b7f73616c7420616c72656164792074616b656e0000000000000000000000000000600082015250565b60006200330160128362002fda565b91506200330e82620032c9565b602082019050919050565b600060208201905081810360008301526200333481620032f2565b9050919050565b7f746f6b656e20616c7265616479206c696e6b656420746f20616e206964656e7460008201527f6974790000000000000000000000000000000000000000000000000000000000602082015250565b60006200339960238362002fda565b9150620033a6826200333b565b604082019050919050565b60006020820190508181036000830152620033cc816200338a565b9050919050565b7f63616e6e6f742062652063616c6c6564206f6e2073656e64657220616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200343160228362002fda565b91506200343e82620033d3565b604082019050919050565b60006020820190508181036000830152620034648162003422565b9050919050565b7f6f6e6c792061206c696e6b65642077616c6c65742063616e20756e6c696e6b00600082015250565b6000620034a3601f8362002fda565b9150620034b0826200346b565b602082019050919050565b60006020820190508181036000830152620034d68162003494565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062003552826200350c565b91506200355f836200350c565b92508282039050818111156200357a576200357962003516565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000620035bc826200350c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620035f157620035f062003516565b5b600182019050919050565b7f4f49440000000000000000000000000000000000000000000000000000000000815250565b60006200362f82620035fc565b6003820191506200364182846200324f565b915081905092915050565b7f77616c6c657420616c7265616479206c696e6b656420746f20616e206964656e60008201527f7469747900000000000000000000000000000000000000000000000000000000602082015250565b6000620036aa60248362002fda565b9150620036b7826200364c565b604082019050919050565b60006020820190508181036000830152620036dd816200369b565b9050919050565b7f6e6f74206120666163746f727900000000000000000000000000000000000000600082015250565b60006200371c600d8362002fda565b91506200372982620036e4565b602082019050919050565b600060208201905081810360008301526200374f816200370d565b9050919050565b7f616c7265616479206120666163746f7279000000000000000000000000000000600082015250565b60006200378e60118362002fda565b91506200379b8262003756565b602082019050919050565b60006020820190508181036000830152620037c1816200377f565b9050919050565b7f77616c6c6574206e6f74206c696e6b656420746f20616e206964656e7469747960008201527f20636f6e74726163740000000000000000000000000000000000000000000000602082015250565b60006200382660298362002fda565b91506200383382620037c8565b604082019050919050565b60006020820190508181036000830152620038598162003817565b9050919050565b7f6e65772077616c6c657420616c7265616479206c696e6b656400000000000000600082015250565b60006200389860198362002fda565b9150620038a58262003860565b602082019050919050565b60006020820190508181036000830152620038cb8162003889565b9050919050565b7f696e76616c696420617267756d656e74202d20746f6b656e2061646472657373600082015250565b60006200390a60208362002fda565b91506200391782620038d2565b602082019050919050565b600060208201905081810360008301526200393d81620038fb565b9050919050565b7f6d617820616d6f756e74206f662077616c6c657473207065722049442065786360008201527f6565646564000000000000000000000000000000000000000000000000000000602082015250565b6000620039a260258362002fda565b9150620039af8262003944565b604082019050919050565b60006020820190508181036000830152620039d58162003993565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062003a3a60268362002fda565b915062003a4782620039dc565b604082019050919050565b6000602082019050818103600083015262003a6d8162003a2b565b9050919050565b7f696e76616c696420617267756d656e74202d20656d707479206c697374206f6660008201527f206b657973000000000000000000000000000000000000000000000000000000602082015250565b600062003ad260258362002fda565b915062003adf8262003a74565b604082019050919050565b6000602082019050818103600083015262003b058162003ac3565b9050919050565b7f696e76616c696420617267756d656e74202d2077616c6c657420697320616c7360008201527f6f206c697374656420696e206d616e6167656d656e74206b6579730000000000602082015250565b600062003b6a603b8362002fda565b915062003b778262003b0c565b604082019050919050565b6000602082019050818103600083015262003b9d8162003b5b565b9050919050565b62003baf8162002e0f565b82525050565b6000819050919050565b6000819050919050565b600062003bea62003be462003bde8462003bb5565b62003bbf565b6200350c565b9050919050565b62003bfc8162003bc9565b82525050565b600060608201905062003c19600083018662003ba4565b62003c28602083018562003bf1565b62003c37604083018462003bf1565b949350505050565b62003c4a8162002a76565b811462003c5657600080fd5b50565b60008151905062003c6a8162003c3f565b92915050565b60006020828403121562003c895762003c8862002946565b5b600062003c998482850162003c59565b91505092915050565b600060408201905062003cb9600083018562003ba4565b62003cc8602083018462003bf1565b9392505050565b600060408201905062003ce660008301856200290e565b62003cf560208301846200290e565b9392505050565b600081519050919050565b600081905092915050565b600062003d1f8262003cfc565b62003d2b818562003d07565b935062003d3d81856020860162003126565b80840191505092915050565b600062003d57828562003d12565b915062003d65828462003d12565b91508190509392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062003da960208362002fda565b915062003db68262003d71565b602082019050919050565b6000602082019050818103600083015262003ddc8162003d9a565b905091905056fe608060405234801561001057600080fd5b506040516107723803806107728339818101604052810190610032919061034a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036100a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610098906103e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610110576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610107906103e7565b60405180910390fd5b817f821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc5560008273ffffffffffffffffffffffffffffffffffffffff1663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa158015610180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a49190610407565b905060008173ffffffffffffffffffffffffffffffffffffffff16836040516024016101d09190610443565b6040516020818303038152906040527fc4d66de8000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161025a91906104cf565b600060405180830381855af49150503d8060008114610295576040519150601f19603f3d011682016040523d82523d6000602084013e61029a565b606091505b50509050806102de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d590610532565b60405180910390fd5b50505050610552565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610317826102ec565b9050919050565b6103278161030c565b811461033257600080fd5b50565b6000815190506103448161031e565b92915050565b60008060408385031215610361576103606102e7565b5b600061036f85828601610335565b925050602061038085828601610335565b9150509250929050565b600082825260208201905092915050565b7f696e76616c696420617267756d656e74202d207a65726f206164647265737300600082015250565b60006103d1601f8361038a565b91506103dc8261039b565b602082019050919050565b60006020820190508181036000830152610400816103c4565b9050919050565b60006020828403121561041d5761041c6102e7565b5b600061042b84828501610335565b91505092915050565b61043d8161030c565b82525050565b60006020820190506104586000830184610434565b92915050565b600081519050919050565b600081905092915050565b60005b83811015610492578082015181840152602081019050610477565b60008484015250505050565b60006104a98261045e565b6104b38185610469565b93506104c3818560208601610474565b80840191505092915050565b60006104db828461049e565b915081905092915050565b7f496e697469616c697a6174696f6e206661696c65642e00000000000000000000600082015250565b600061051c60168361038a565b9150610527826104e6565b602082019050919050565b6000602082019050818103600083015261054b8161050f565b9050919050565b610211806105616000396000f3fe6080604052600436106100225760003560e01c80632307f882146100c857610023565b5b600061002d6100f3565b73ffffffffffffffffffffffffffffffffffffffff1663aaf10f426040518163ffffffff1660e01b8152600401602060405180830381865afa158015610077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061009b9190610184565b90503660008037600080366000846127105a03f43d806000803e81600081146100c357816000f35b816000fd5b3480156100d457600080fd5b506100dd6100f3565b6040516100ea91906101c0565b60405180910390f35b6000807f821f3e4d3d679f19eacc940c87acf846ea6eae24a63058ea750304437a62aafc5490508091505090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061015182610126565b9050919050565b61016181610146565b811461016c57600080fd5b50565b60008151905061017e81610158565b92915050565b60006020828403121561019a57610199610121565b5b60006101a88482850161016f565b91505092915050565b6101ba81610146565b82525050565b60006020820190506101d560008301846101b1565b9291505056fea264697066735822122087108c0e411bfe27737deb09117917821789f7599cced8134d2683b7969e34ae64736f6c63430008110033a2646970667358221220c59db5c5d82b4f1521e06b7e58107aab1a6dfd1bb1bc8c2da3b4d1ff5ba727e464736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
