{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC20Facet",
  "sourceName": "contracts/token/ERC20/facets/ERC20Facet.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "increment",
          "type": "uint256"
        }
      ],
      "name": "ERC20AllowanceOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20ApprovalToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20BatchMintValuesOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "decrement",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC20MintToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC20TotalSupplyOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC20TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentPhase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newPhase",
          "type": "uint256"
        }
      ],
      "name": "InitializationPhaseAlreadyReached",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotProxyAdmin",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initERC20Storage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "initialHolders",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "initialAllocations",
          "type": "uint256[]"
        }
      ],
      "name": "initERC20StorageWithAllocations",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "result",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a034606657601f6113c538819003918201601f19168301916001600160401b03831184841017606b57808492602094604052833981010312606657516001600160a01b03811681036066576080526040516113439081610082823960805181610ff40152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c8063095ea7b314610a3357806318160ddd146109d857806323b872dd1461091b57806339509351146106eb57806370a0823114610666578063a457c2d7146105f9578063a9059cbb14610581578063c8342b1d146102a9578063dd62ed3e146101fa5763fb33f6081461008a57600080fd5b346101f55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f5577fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610373ffffffffffffffffffffffffffffffffffffffff806100f8610fdd565b92541691169081036101c8577fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527f9aed5868410a44d2b2b5afc971a20f888382428fa3391cbfac5b1840d2aa352f805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f9d075186000000000000000000000000000000000000000000000000000000006000527fc6b5f03b0da98290ffa91f37e0f0b8e2702961697d46a1f6b2d24c3136073a66805490911690911790555b005b7f673a31a10000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600080fd5b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f557610231610b5f565b73ffffffffffffffffffffffffffffffffffffffff61024e610b82565b91166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f55760043567ffffffffffffffff81116101f5576102f8903690600401610ba5565b60243567ffffffffffffffff81116101f557610318903690600401610ba5565b917fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610373ffffffffffffffffffffffffffffffffffffffff80610358610fdd565b92541691169081036101c8575061036e81610c46565b9361037c6040519586610bd6565b818552602085019160051b8101903682116101f557915b818310610554575050506103a682610c46565b916103b46040519384610bd6565b808352602083019060051b8201913683116101f557905b828210610544575050507f53d309e32e4ca7be7e99298a42b755b0cd82d1ad9411e9a18f57394d12274990549160018310156105115760017f53d309e32e4ca7be7e99298a42b755b0cd82d1ad9411e9a18f57394d122749908190557fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527f9aed5868410a44d2b2b5afc971a20f888382428fa3391cbfac5b1840d2aa352f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811683179091557f9d075186000000000000000000000000000000000000000000000000000000006000527fc6b5f03b0da98290ffa91f37e0f0b8e2702961697d46a1f6b2d24c3136073a66805490911690911790556101c692507f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee611163565b827fbf0c18ec00000000000000000000000000000000000000000000000000000000600052600452600160245260446000fd5b81358152602091820191016103cb565b823573ffffffffffffffffffffffffffffffffffffffff811681036101f557815260209283019201610393565b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f5576105ee6105bb610b5f565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6105e8610fdd565b90610e3c565b602060405160018152f35b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f5576105ee610633610b5f565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610660610fdd565b90610c5e565b346101f55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f55761069d610b5f565b73ffffffffffffffffffffffffffffffffffffffff7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee91166000526020526020604060002054604051908152f35b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f557610722610b5f565b60243561072d610fdd565b9073ffffffffffffffffffffffffffffffffffffffff83169283156108d75773ffffffffffffffffffffffffffffffffffffffff83166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205260406000208460005260205260406000205491806107f2575b84837f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602073ffffffffffffffffffffffffffffffffffffffff886040519485521692a3602060405160018152f35b808301928084111561087c57505050602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928185166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef835260406000208660005283528060406000205592506107a3565b6040517f93bc2ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015293909316602484015260448301526064820152608490fd5b73ffffffffffffffffffffffffffffffffffffffff837ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346101f55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f5576105ee610955610b5f565b61095d610b82565b604435917f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61098a610fdd565b8473ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8516036109c6575b5050610e3c565b6109d1918484610c5e565b85846109bf565b346101f55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f55760207f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf054604051908152f35b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f557610a6a610b5f565b60243573ffffffffffffffffffffffffffffffffffffffff610a8a610fdd565b9216918215610b1b57602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928181166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef83526040600020866000528352846040600020556040519485521692a3602060405160018152f35b73ffffffffffffffffffffffffffffffffffffffff907ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101f557565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101f557565b9181601f840112156101f55782359167ffffffffffffffff83116101f5576020808501948460051b0101116101f557565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c1757604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610c175760051b60200190565b92909173ffffffffffffffffffffffffffffffffffffffff8116938415610df8576001019073ffffffffffffffffffffffffffffffffffffffff841660005281602052604060002085600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84141580610def575b610d2b575b50505090602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926040519485521692a3565b8084039380851015610d945750505073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592602092828616600052835260406000208660005283528060406000205592610ce3565b6040517f137ad6ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015293909316602484015260448301526064820152608490fd5b50801515610cde565b73ffffffffffffffffffffffffffffffffffffffff847ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b929173ffffffffffffffffffffffffffffffffffffffff16928315610f995782610ea6575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff8216600052806020526040600020548381039080821015610f4d57508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef971603610f26575b5050925050610e61565b83831660005281855260406000205586600052835260406000208581540190553880610f1c565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015611111573233148015611116575b611111577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115611068575b5061106557503390565b90565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa908115611105576000916110c3575b503861105b565b6020813d6020116110fd575b816110dc60209383610bd6565b810103126110f957519081151582036110f65750386110bc565b80fd5b5080fd5b3d91506110cf565b6040513d6000823e3d90fd5b503390565b5060183610611024565b80518210156111345760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9091825190805182036112e35781156112dd5760009360005b8381106111d7575050505081611190575050565b60020180549180830192808411156111a757505055565b7f0366a5f60000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b73ffffffffffffffffffffffffffffffffffffffff6111f68284611120565b511680156112b3576112088285611120565b5180611246575b9060007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602060019594604051908152a30161117c565b969190878301928311156112895773ffffffffffffffffffffffffffffffffffffffff81166000908152602088905260409020805489019055919690919061120f565b7f5542ae7c0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f92fd9c8f0000000000000000000000000000000000000000000000000000000060005260046000fd5b50505050565b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fdfea2646970667358221220322de91b442fa6c55cff7eb9b4b93bf30ad5887a798f044e2117d425c2402b4f64736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c8063095ea7b314610a3357806318160ddd146109d857806323b872dd1461091b57806339509351146106eb57806370a0823114610666578063a457c2d7146105f9578063a9059cbb14610581578063c8342b1d146102a9578063dd62ed3e146101fa5763fb33f6081461008a57600080fd5b346101f55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f5577fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610373ffffffffffffffffffffffffffffffffffffffff806100f8610fdd565b92541691169081036101c8577fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527f9aed5868410a44d2b2b5afc971a20f888382428fa3391cbfac5b1840d2aa352f805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f9d075186000000000000000000000000000000000000000000000000000000006000527fc6b5f03b0da98290ffa91f37e0f0b8e2702961697d46a1f6b2d24c3136073a66805490911690911790555b005b7f673a31a10000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600080fd5b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f557610231610b5f565b73ffffffffffffffffffffffffffffffffffffffff61024e610b82565b91166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205273ffffffffffffffffffffffffffffffffffffffff604060002091166000526020526020604060002054604051908152f35b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f55760043567ffffffffffffffff81116101f5576102f8903690600401610ba5565b60243567ffffffffffffffff81116101f557610318903690600401610ba5565b917fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610373ffffffffffffffffffffffffffffffffffffffff80610358610fdd565b92541691169081036101c8575061036e81610c46565b9361037c6040519586610bd6565b818552602085019160051b8101903682116101f557915b818310610554575050506103a682610c46565b916103b46040519384610bd6565b808352602083019060051b8201913683116101f557905b828210610544575050507f53d309e32e4ca7be7e99298a42b755b0cd82d1ad9411e9a18f57394d12274990549160018310156105115760017f53d309e32e4ca7be7e99298a42b755b0cd82d1ad9411e9a18f57394d122749908190557fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527f9aed5868410a44d2b2b5afc971a20f888382428fa3391cbfac5b1840d2aa352f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811683179091557f9d075186000000000000000000000000000000000000000000000000000000006000527fc6b5f03b0da98290ffa91f37e0f0b8e2702961697d46a1f6b2d24c3136073a66805490911690911790556101c692507f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee611163565b827fbf0c18ec00000000000000000000000000000000000000000000000000000000600052600452600160245260446000fd5b81358152602091820191016103cb565b823573ffffffffffffffffffffffffffffffffffffffff811681036101f557815260209283019201610393565b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f5576105ee6105bb610b5f565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee6105e8610fdd565b90610e3c565b602060405160018152f35b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f5576105ee610633610b5f565b602435907f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee610660610fdd565b90610c5e565b346101f55760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f55761069d610b5f565b73ffffffffffffffffffffffffffffffffffffffff7f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee91166000526020526020604060002054604051908152f35b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f557610722610b5f565b60243561072d610fdd565b9073ffffffffffffffffffffffffffffffffffffffff83169283156108d75773ffffffffffffffffffffffffffffffffffffffff83166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef60205260406000208460005260205260406000205491806107f2575b84837f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602073ffffffffffffffffffffffffffffffffffffffff886040519485521692a3602060405160018152f35b808301928084111561087c57505050602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928185166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef835260406000208660005283528060406000205592506107a3565b6040517f93bc2ff100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015293909316602484015260448301526064820152608490fd5b73ffffffffffffffffffffffffffffffffffffffff837ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346101f55760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f5576105ee610955610b5f565b61095d610b82565b604435917f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbee61098a610fdd565b8473ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8516036109c6575b5050610e3c565b6109d1918484610c5e565b85846109bf565b346101f55760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f55760207f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbf054604051908152f35b346101f55760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101f557610a6a610b5f565b60243573ffffffffffffffffffffffffffffffffffffffff610a8a610fdd565b9216918215610b1b57602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928181166000527f1da92899d3da68bf9787824388a37ea2bfa79780bcef91b9716c390eec8ecbef83526040600020866000528352846040600020556040519485521692a3602060405160018152f35b73ffffffffffffffffffffffffffffffffffffffff907ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036101f557565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036101f557565b9181601f840112156101f55782359167ffffffffffffffff83116101f5576020808501948460051b0101116101f557565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c1757604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111610c175760051b60200190565b92909173ffffffffffffffffffffffffffffffffffffffff8116938415610df8576001019073ffffffffffffffffffffffffffffffffffffffff841660005281602052604060002085600052602052604060002054927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84141580610def575b610d2b575b50505090602073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925926040519485521692a3565b8084039380851015610d945750505073ffffffffffffffffffffffffffffffffffffffff7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592602092828616600052835260406000208660005283528060406000205592610ce3565b6040517f137ad6ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015293909316602484015260448301526064820152608490fd5b50801515610cde565b73ffffffffffffffffffffffffffffffffffffffff847ff7e1ac0f000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b929173ffffffffffffffffffffffffffffffffffffffff16928315610f995782610ea6575b50602073ffffffffffffffffffffffffffffffffffffffff7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926040519485521692a3565b73ffffffffffffffffffffffffffffffffffffffff8216600052806020526040600020548381039080821015610f4d57508260209273ffffffffffffffffffffffffffffffffffffffff9287847fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef971603610f26575b5050925050610e61565b83831660005281855260406000205586600052835260406000208581540190553880610f1c565b849073ffffffffffffffffffffffffffffffffffffffff857fe450d38c000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b73ffffffffffffffffffffffffffffffffffffffff827f754f425b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015611111573233148015611116575b611111577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115611068575b5061106557503390565b90565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa908115611105576000916110c3575b503861105b565b6020813d6020116110fd575b816110dc60209383610bd6565b810103126110f957519081151582036110f65750386110bc565b80fd5b5080fd5b3d91506110cf565b6040513d6000823e3d90fd5b503390565b5060183610611024565b80518210156111345760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9091825190805182036112e35781156112dd5760009360005b8381106111d7575050505081611190575050565b60020180549180830192808411156111a757505055565b7f0366a5f60000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b73ffffffffffffffffffffffffffffffffffffffff6111f68284611120565b511680156112b3576112088285611120565b5180611246575b9060007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602060019594604051908152a30161117c565b969190878301928311156112895773ffffffffffffffffffffffffffffffffffffffff81166000908152602088905260409020805489019055919690919061120f565b7f5542ae7c0000000000000000000000000000000000000000000000000000000060005260046000fd5b7f92fd9c8f0000000000000000000000000000000000000000000000000000000060005260046000fd5b50505050565b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fdfea2646970667358221220322de91b442fa6c55cff7eb9b4b93bf30ad5887a798f044e2117d425c2402b4f64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
