{
  "_format": "hh-sol-artifact-1",
  "contractName": "L1StandardBridgeLocal",
  "sourceName": "contracts/L1/messaging/L1StandardBridgeLocal.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_chainid",
          "type": "uint256"
        }
      ],
      "name": "ERC20ChainID",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "ERC20DepositInitiated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "ERC20WithdrawalFinalized",
      "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": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "ETHDepositInitiated",
      "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": "_amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "ETHWithdrawalFinalized",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_CHAINID",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "addressmgr",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_l2Gas",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "depositERC20",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_l2Gas",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "depositERC20ByChainId",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_l2Gas",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "depositERC20To",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_l2Gas",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "depositERC20ToByChainId",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_l2Gas",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "depositETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "_l2Gas",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "depositETHByChainId",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "_l2Gas",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "depositETHTo",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "_l2Gas",
          "type": "uint32"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "depositETHToByChainId",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "deposits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "donateETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "finalizeERC20Withdrawal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_l1Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2Token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "finalizeERC20WithdrawalByChainId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "finalizeETHWithdrawal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "finalizeETHWithdrawalByChainId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "finalizeMetisWithdrawalByChainId",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_l1messenger",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_l2TokenBridge",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_metis",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_addressmgr",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "l2TokenBridge",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "messenger",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "metis",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319169055612b01806100306000396000f3fe60806040526004361061016e5760003560e01c80638b4c40b0116100cb578063a9f9e6751161007f578063ef808be211610059578063ef808be2146103f6578063f4a1381414610409578063f8c8765e1461044757600080fd5b8063a9f9e675146103a3578063b1a1a882146103c3578063e5974554146103d657600080fd5b806391c49bf8116100b057806391c49bf81461035d5780639a2ac6d51461037d578063a396a59c1461039057600080fd5b80638b4c40b01461020f57806390a40a761461021657600080fd5b806358a997f6116101225780636cebdc45116101075780636cebdc451461030a578063838b25201461032a57806384e930f01461034a57600080fd5b806358a997f6146102c65780635bbbb7ed146102e657600080fd5b8063153928f411610153578063153928f414610256578063200997b3146102935780633cb747bf146102a657600080fd5b80630546aaa9146102165780631532ec341461023657600080fd5b3661021157333b156101c75760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064015b60405180910390fd5b60405162461bcd60e51b815260206004820152601860248201527f646f206e6f742073656e6420657468206469726563746c79000000000000000060448201526064016101be565b005b600080fd5b34801561022257600080fd5b5061020f6102313660046120ca565b610467565b34801561024257600080fd5b5061020f610251366004612146565b610742565b34801561026257600080fd5b50600354610276906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61020f6102a13660046121d2565b610a1e565b3480156102b257600080fd5b50600054610276906001600160a01b031681565b3480156102d257600080fd5b5061020f6102e1366004612226565b610a68565b3480156102f257600080fd5b506102fc61044081565b60405190815260200161028a565b34801561031657600080fd5b5061020f61032536600461228b565b610ad2565b34801561033657600080fd5b5061020f61034536600461232c565b610c8a565b61020f6103583660046123c2565b610ca6565b34801561036957600080fd5b50600154610276906001600160a01b031681565b61020f61038b36600461241c565b610d3e565b61020f61039e36600461244b565b610d80565b3480156103af57600080fd5b5061020f6103be366004612478565b610de0565b61020f6103d13660046124f1565b610f99565b3480156103e257600080fd5b50600254610276906001600160a01b031681565b61020f610404366004612544565b61102f565b34801561041557600080fd5b506102fc6104243660046125c3565b600460209081526000938452604080852082529284528284209052825290205481565b34801561045357600080fd5b5061020f610462366004612605565b611040565b6001546001600160a01b03166104856000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461050b5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016101be565b806001600160a01b03166105276000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105889190612661565b6001600160a01b0316146106045760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016101be565b604080516000808252602082019092526001600160a01b03871690869060405161062e91906126d9565b60006040518083038185875af1925050503d806000811461066b576040519150601f19603f3d011682016040523d82523d6000602084013e610670565b606091505b50509050806106e75760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016101be565b856001600160a01b0316876001600160a01b03167f727233b1ab656a027266fdc255d394b9aa8a2db3b7ff0fd6150dc3a8686f30cb8787878d6040516107309493929190612720565b60405180910390a35050505050505050565b6001546001600160a01b03166107606000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016101be565b806001600160a01b03166108026000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108639190612661565b6001600160a01b0316146108df5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016101be565b604080516000808252602082019092526001600160a01b03871690869060405161090991906126d9565b60006040518083038185875af1925050503d8060008114610946576040519150601f19603f3d011682016040523d82523d6000602084013e61094b565b606091505b50509050806109c25760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016101be565b856001600160a01b0316876001600160a01b03167f727233b1ab656a027266fdc255d394b9aa8a2db3b7ff0fd6150dc3a8686f30cb878787610440604051610a0d9493929190612720565b60405180910390a350505050505050565b610a618533868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061112792505050565b5050505050565b333b15610ab75760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016101be565b610aca610440878733338989898961144d565b505050505050565b6001546001600160a01b0316610af06000546001600160a01b031690565b6001600160a01b0316336001600160a01b031614610b765760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016101be565b806001600160a01b0316610b926000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf39190612661565b6001600160a01b031614610c6f5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016101be565b610c7f89898989898989896119e7565b505050505050505050565b610c9d610440888833898989898961144d565b50505050505050565b333b15610cf55760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016101be565b610d388433338686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061112792505050565b50505050565b610d3833858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611af792505050565b333b15610dcf5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016101be565b610c9d87878733338989898961144d565b6001546001600160a01b0316610dfe6000546001600160a01b031690565b6001600160a01b0316336001600160a01b031614610e845760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016101be565b806001600160a01b0316610ea06000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f019190612661565b6001600160a01b031614610f7d5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016101be565b610f8f610440898989898989896119e7565b5050505050505050565b333b15610fe85760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016101be565b61102a33338585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611af792505050565b505050565b610f8f88888833898989898961144d565b6000546001600160a01b0316156110bf5760405162461bcd60e51b815260206004820152602660248201527f436f6e74726163742068617320616c7265616479206265656e20696e6974696160448201527f6c697a65642e000000000000000000000000000000000000000000000000000060648201526084016101be565b600080546001600160a01b039586167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556001805494861694821694909417909355600280549285169284169290921790915560038054919093169116179055565b6003546040517fbf40fac100000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d564d5f446973636f756e744f7261636c65000000000000000000000000000060448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa1580156111b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111db9190612661565b90506000816001600160a01b031663bf53926e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611241919061274b565b90508063ffffffff168463ffffffff16101561125b578093505b6000826001600160a01b031663d137874b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bf919061274b565b6112cf9063ffffffff8716612793565b9050348111156112de82611b06565b6040516020016112ee91906127d0565b6040516020818303038152906040529061131b5760405162461bcd60e51b81526004016101be9190612867565b5060007f662a633a000000000000000000000000000000000000000000000000000000008173deaddeaddeaddeaddeaddeaddeaddeaddead00008a8a611361873461287a565b8a60405160240161137796959493929190612891565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001549091506113f3908a906001600160a01b0316888486611c66565b866001600160a01b0316886001600160a01b03167f742461272f8da1cbe655542d3257acb1f1d5f4e6eaa79692ac5609b0f89cb64434888d60405161143a939291906128df565b60405180910390a3505050505050505050565b6003546040517fbf40fac100000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d564d5f446973636f756e744f7261636c65000000000000000000000000000060448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa1580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115019190612661565b9050806001600160a01b031663bf53926e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611541573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611565919061274b565b63ffffffff168463ffffffff1610156115dd57806001600160a01b031663bf53926e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115da919061274b565b93505b34816001600160a01b031663d137874b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611640919061274b565b6116509063ffffffff8716612793565b11156116cc826001600160a01b031663d137874b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b7919061274b565b6116c79063ffffffff8816612793565b611b06565b6040516020016116dc91906127d0565b604051602081830303815290604052906117095760405162461bcd60e51b81526004016101be9190612867565b5061171f6001600160a01b038a16883088611cf0565b6002546060906001600160a01b03908116908b16036117f55760405173deaddeaddeaddeaddeaddeaddeaddeaddead000099507f662a633a000000000000000000000000000000000000000000000000000000009061178f906000908c908c908c908c908b908b90602401612908565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050611896565b6040517f662a633a0000000000000000000000000000000000000000000000000000000090611834908c908c908c908c908c908b908b90602401612908565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b6001546118b0908c906001600160a01b0316878434611c66565b6001600160a01b03808b1660009081526004602090815260408083208f84528252808320938d16835292905220546118e9908790612958565b600460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020819055507fc333b5c3e71358b85edbb94334230ac00644c26af29851f9034a7105eb84b0778b60405161197791815260200190565b60405180910390a1876001600160a01b0316896001600160a01b03168b6001600160a01b03167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d03968a8a89896040516119d29493929190612970565b60405180910390a45050505050505050505050565b6001600160a01b0380881660009081526004602090815260408083208c84528252808320938a1683529290522054611a2090849061287a565b6001600160a01b0380891660008181526004602090815260408083208e84528252808320948c1683529390529190912091909155611a5f908585611da1565b6040518881527fc333b5c3e71358b85edbb94334230ac00644c26af29851f9034a7105eb84b0779060200160405180910390a1846001600160a01b0316866001600160a01b0316886001600160a01b03167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b387878787604051611ae59493929190612970565b60405180910390a45050505050505050565b610d3861044085858585611127565b606081600003611b4957505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611b735780611b5d816129a3565b9150611b6c9050600a836129db565b9150611b4d565b60008167ffffffffffffffff811115611b8e57611b8e61267e565b6040519080825280601f01601f191660200182016040528015611bb8576020820181803683370190505b509050815b8515611c5d57611bce60018261287a565b90506000611bdd600a886129db565b611be890600a612793565b611bf2908861287a565b611bfd906030612a16565b905060008160f81b905080848481518110611c1a57611c1a612a3b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611c54600a896129db565b97505050611bbd565b50949350505050565b6000546040517f44dd5ed60000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906344dd5ed6908390611cb7908990899088908a90600401612a6a565b6000604051808303818588803b158015611cd057600080fd5b505af1158015611ce4573d6000803e3d6000fd5b50505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610d389085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611dea565b6040516001600160a01b03831660248201526044810182905261102a9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611d3d565b6000611e3f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611ecf9092919063ffffffff16565b80519091501561102a5780806020019051810190611e5d9190612aa9565b61102a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101be565b6060611ede8484600085611ee8565b90505b9392505050565b606082471015611f605760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101be565b6001600160a01b0385163b611fb75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101be565b600080866001600160a01b03168587604051611fd391906126d9565b60006040518083038185875af1925050503d8060008114612010576040519150601f19603f3d011682016040523d82523d6000602084013e612015565b606091505b5091509150612025828286612030565b979650505050505050565b6060831561203f575081611ee1565b82511561204f5782518084602001fd5b8160405162461bcd60e51b81526004016101be9190612867565b6001600160a01b038116811461207e57600080fd5b50565b60008083601f84011261209357600080fd5b50813567ffffffffffffffff8111156120ab57600080fd5b6020830191508360208285010111156120c357600080fd5b9250929050565b60008060008060008060a087890312156120e357600080fd5b8635955060208701356120f581612069565b9450604087013561210581612069565b935060608701359250608087013567ffffffffffffffff81111561212857600080fd5b61213489828a01612081565b979a9699509497509295939492505050565b60008060008060006080868803121561215e57600080fd5b853561216981612069565b9450602086013561217981612069565b935060408601359250606086013567ffffffffffffffff81111561219c57600080fd5b6121a888828901612081565b969995985093965092949392505050565b803563ffffffff811681146121cd57600080fd5b919050565b6000806000806000608086880312156121ea57600080fd5b8535945060208601356121fc81612069565b935061220a604087016121b9565b9250606086013567ffffffffffffffff81111561219c57600080fd5b60008060008060008060a0878903121561223f57600080fd5b863561224a81612069565b9550602087013561225a81612069565b94506040870135935061226f606088016121b9565b9250608087013567ffffffffffffffff81111561212857600080fd5b60008060008060008060008060e0898b0312156122a757600080fd5b8835975060208901356122b981612069565b965060408901356122c981612069565b955060608901356122d981612069565b945060808901356122e981612069565b935060a0890135925060c089013567ffffffffffffffff81111561230c57600080fd5b6123188b828c01612081565b999c989b5096995094979396929594505050565b600080600080600080600060c0888a03121561234757600080fd5b873561235281612069565b9650602088013561236281612069565b9550604088013561237281612069565b945060608801359350612387608089016121b9565b925060a088013567ffffffffffffffff8111156123a357600080fd5b6123af8a828b01612081565b989b979a50959850939692959293505050565b600080600080606085870312156123d857600080fd5b843593506123e8602086016121b9565b9250604085013567ffffffffffffffff81111561240457600080fd5b61241087828801612081565b95989497509550505050565b6000806000806060858703121561243257600080fd5b843561243d81612069565b93506123e8602086016121b9565b600080600080600080600060c0888a03121561246657600080fd5b87359650602088013561236281612069565b600080600080600080600060c0888a03121561249357600080fd5b873561249e81612069565b965060208801356124ae81612069565b955060408801356124be81612069565b945060608801356124ce81612069565b93506080880135925060a088013567ffffffffffffffff8111156123a357600080fd5b60008060006040848603121561250657600080fd5b61250f846121b9565b9250602084013567ffffffffffffffff81111561252b57600080fd5b61253786828701612081565b9497909650939450505050565b60008060008060008060008060e0898b03121561256057600080fd5b88359750602089013561257281612069565b9650604089013561258281612069565b9550606089013561259281612069565b9450608089013593506125a760a08a016121b9565b925060c089013567ffffffffffffffff81111561230c57600080fd5b6000806000606084860312156125d857600080fd5b83356125e381612069565b92506020840135915060408401356125fa81612069565b809150509250925092565b6000806000806080858703121561261b57600080fd5b843561262681612069565b9350602085013561263681612069565b9250604085013561264681612069565b9150606085013561265681612069565b939692955090935050565b60006020828403121561267357600080fd5b8151611ee181612069565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b838110156126c85781810151838201526020016126b0565b83811115610d385750506000910152565b600082516126eb8184602087016126ad565b9190910192915050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b84815260606020820152600061273a6060830185876126f5565b905082604083015295945050505050565b60006020828403121561275d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127cb576127cb612764565b500290565b7f696e73756666696369656e742066656520737570706c6965642e2073656e642081527f6174206c6561737420000000000000000000000000000000000000000000000060208201526000825161282e8160298501602087016126ad565b9190910160290192915050565b600081518084526128538160208601602086016126ad565b601f01601f19169290920160200192915050565b602081526000611ee1602083018461283b565b60008282101561288c5761288c612764565b500390565b60006001600160a01b0380891683528088166020840152808716604084015280861660608401525083608083015260c060a08301526128d360c083018461283b565b98975050505050505050565b8381526060602082015260006128f8606083018561283b565b9050826040830152949350505050565b60006001600160a01b03808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261294b60c0830184866126f5565b9998505050505050505050565b6000821982111561296b5761296b612764565b500190565b6001600160a01b03851681528360208201526060604082015260006129996060830184866126f5565b9695505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129d4576129d4612764565b5060010190565b600082612a11577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060ff821660ff84168060ff03821115612a3357612a33612764565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8481526001600160a01b0384166020820152608060408201526000612a92608083018561283b565b905063ffffffff8316606083015295945050505050565b600060208284031215612abb57600080fd5b81518015158114611ee157600080fdfea2646970667358221220619b29ec0b45dd84f4c6f0ea7ba2d47e5cec71daf62ef75df525db2b2981945064736f6c634300080f0033",
  "deployedBytecode": "0x60806040526004361061016e5760003560e01c80638b4c40b0116100cb578063a9f9e6751161007f578063ef808be211610059578063ef808be2146103f6578063f4a1381414610409578063f8c8765e1461044757600080fd5b8063a9f9e675146103a3578063b1a1a882146103c3578063e5974554146103d657600080fd5b806391c49bf8116100b057806391c49bf81461035d5780639a2ac6d51461037d578063a396a59c1461039057600080fd5b80638b4c40b01461020f57806390a40a761461021657600080fd5b806358a997f6116101225780636cebdc45116101075780636cebdc451461030a578063838b25201461032a57806384e930f01461034a57600080fd5b806358a997f6146102c65780635bbbb7ed146102e657600080fd5b8063153928f411610153578063153928f414610256578063200997b3146102935780633cb747bf146102a657600080fd5b80630546aaa9146102165780631532ec341461023657600080fd5b3661021157333b156101c75760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064015b60405180910390fd5b60405162461bcd60e51b815260206004820152601860248201527f646f206e6f742073656e6420657468206469726563746c79000000000000000060448201526064016101be565b005b600080fd5b34801561022257600080fd5b5061020f6102313660046120ca565b610467565b34801561024257600080fd5b5061020f610251366004612146565b610742565b34801561026257600080fd5b50600354610276906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61020f6102a13660046121d2565b610a1e565b3480156102b257600080fd5b50600054610276906001600160a01b031681565b3480156102d257600080fd5b5061020f6102e1366004612226565b610a68565b3480156102f257600080fd5b506102fc61044081565b60405190815260200161028a565b34801561031657600080fd5b5061020f61032536600461228b565b610ad2565b34801561033657600080fd5b5061020f61034536600461232c565b610c8a565b61020f6103583660046123c2565b610ca6565b34801561036957600080fd5b50600154610276906001600160a01b031681565b61020f61038b36600461241c565b610d3e565b61020f61039e36600461244b565b610d80565b3480156103af57600080fd5b5061020f6103be366004612478565b610de0565b61020f6103d13660046124f1565b610f99565b3480156103e257600080fd5b50600254610276906001600160a01b031681565b61020f610404366004612544565b61102f565b34801561041557600080fd5b506102fc6104243660046125c3565b600460209081526000938452604080852082529284528284209052825290205481565b34801561045357600080fd5b5061020f610462366004612605565b611040565b6001546001600160a01b03166104856000546001600160a01b031690565b6001600160a01b0316336001600160a01b03161461050b5760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016101be565b806001600160a01b03166105276000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105889190612661565b6001600160a01b0316146106045760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016101be565b604080516000808252602082019092526001600160a01b03871690869060405161062e91906126d9565b60006040518083038185875af1925050503d806000811461066b576040519150601f19603f3d011682016040523d82523d6000602084013e610670565b606091505b50509050806106e75760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016101be565b856001600160a01b0316876001600160a01b03167f727233b1ab656a027266fdc255d394b9aa8a2db3b7ff0fd6150dc3a8686f30cb8787878d6040516107309493929190612720565b60405180910390a35050505050505050565b6001546001600160a01b03166107606000546001600160a01b031690565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016101be565b806001600160a01b03166108026000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108639190612661565b6001600160a01b0316146108df5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016101be565b604080516000808252602082019092526001600160a01b03871690869060405161090991906126d9565b60006040518083038185875af1925050503d8060008114610946576040519150601f19603f3d011682016040523d82523d6000602084013e61094b565b606091505b50509050806109c25760405162461bcd60e51b815260206004820152603460248201527f5472616e7366657248656c7065723a3a736166655472616e736665724554483a60448201527f20455448207472616e73666572206661696c656400000000000000000000000060648201526084016101be565b856001600160a01b0316876001600160a01b03167f727233b1ab656a027266fdc255d394b9aa8a2db3b7ff0fd6150dc3a8686f30cb878787610440604051610a0d9493929190612720565b60405180910390a350505050505050565b610a618533868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061112792505050565b5050505050565b333b15610ab75760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016101be565b610aca610440878733338989898961144d565b505050505050565b6001546001600160a01b0316610af06000546001600160a01b031690565b6001600160a01b0316336001600160a01b031614610b765760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016101be565b806001600160a01b0316610b926000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf39190612661565b6001600160a01b031614610c6f5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016101be565b610c7f89898989898989896119e7565b505050505050505050565b610c9d610440888833898989898961144d565b50505050505050565b333b15610cf55760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016101be565b610d388433338686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061112792505050565b50505050565b610d3833858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611af792505050565b333b15610dcf5760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016101be565b610c9d87878733338989898961144d565b6001546001600160a01b0316610dfe6000546001600160a01b031690565b6001600160a01b0316336001600160a01b031614610e845760405162461bcd60e51b815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016101be565b806001600160a01b0316610ea06000546001600160a01b031690565b6001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f019190612661565b6001600160a01b031614610f7d5760405162461bcd60e51b815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016101be565b610f8f610440898989898989896119e7565b5050505050505050565b333b15610fe85760405162461bcd60e51b815260206004820152600f60248201527f4163636f756e74206e6f7420454f41000000000000000000000000000000000060448201526064016101be565b61102a33338585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611af792505050565b505050565b610f8f88888833898989898961144d565b6000546001600160a01b0316156110bf5760405162461bcd60e51b815260206004820152602660248201527f436f6e74726163742068617320616c7265616479206265656e20696e6974696160448201527f6c697a65642e000000000000000000000000000000000000000000000000000060648201526084016101be565b600080546001600160a01b039586167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556001805494861694821694909417909355600280549285169284169290921790915560038054919093169116179055565b6003546040517fbf40fac100000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d564d5f446973636f756e744f7261636c65000000000000000000000000000060448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa1580156111b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111db9190612661565b90506000816001600160a01b031663bf53926e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561121d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611241919061274b565b90508063ffffffff168463ffffffff16101561125b578093505b6000826001600160a01b031663d137874b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bf919061274b565b6112cf9063ffffffff8716612793565b9050348111156112de82611b06565b6040516020016112ee91906127d0565b6040516020818303038152906040529061131b5760405162461bcd60e51b81526004016101be9190612867565b5060007f662a633a000000000000000000000000000000000000000000000000000000008173deaddeaddeaddeaddeaddeaddeaddeaddead00008a8a611361873461287a565b8a60405160240161137796959493929190612891565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526001549091506113f3908a906001600160a01b0316888486611c66565b866001600160a01b0316886001600160a01b03167f742461272f8da1cbe655542d3257acb1f1d5f4e6eaa79692ac5609b0f89cb64434888d60405161143a939291906128df565b60405180910390a3505050505050505050565b6003546040517fbf40fac100000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d564d5f446973636f756e744f7261636c65000000000000000000000000000060448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa1580156114dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115019190612661565b9050806001600160a01b031663bf53926e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611541573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611565919061274b565b63ffffffff168463ffffffff1610156115dd57806001600160a01b031663bf53926e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115da919061274b565b93505b34816001600160a01b031663d137874b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611640919061274b565b6116509063ffffffff8716612793565b11156116cc826001600160a01b031663d137874b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b7919061274b565b6116c79063ffffffff8816612793565b611b06565b6040516020016116dc91906127d0565b604051602081830303815290604052906117095760405162461bcd60e51b81526004016101be9190612867565b5061171f6001600160a01b038a16883088611cf0565b6002546060906001600160a01b03908116908b16036117f55760405173deaddeaddeaddeaddeaddeaddeaddeaddead000099507f662a633a000000000000000000000000000000000000000000000000000000009061178f906000908c908c908c908c908b908b90602401612908565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050611896565b6040517f662a633a0000000000000000000000000000000000000000000000000000000090611834908c908c908c908c908c908b908b90602401612908565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b6001546118b0908c906001600160a01b0316878434611c66565b6001600160a01b03808b1660009081526004602090815260408083208f84528252808320938d16835292905220546118e9908790612958565b600460008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020819055507fc333b5c3e71358b85edbb94334230ac00644c26af29851f9034a7105eb84b0778b60405161197791815260200190565b60405180910390a1876001600160a01b0316896001600160a01b03168b6001600160a01b03167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d03968a8a89896040516119d29493929190612970565b60405180910390a45050505050505050505050565b6001600160a01b0380881660009081526004602090815260408083208c84528252808320938a1683529290522054611a2090849061287a565b6001600160a01b0380891660008181526004602090815260408083208e84528252808320948c1683529390529190912091909155611a5f908585611da1565b6040518881527fc333b5c3e71358b85edbb94334230ac00644c26af29851f9034a7105eb84b0779060200160405180910390a1846001600160a01b0316866001600160a01b0316886001600160a01b03167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b387878787604051611ae59493929190612970565b60405180910390a45050505050505050565b610d3861044085858585611127565b606081600003611b4957505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115611b735780611b5d816129a3565b9150611b6c9050600a836129db565b9150611b4d565b60008167ffffffffffffffff811115611b8e57611b8e61267e565b6040519080825280601f01601f191660200182016040528015611bb8576020820181803683370190505b509050815b8515611c5d57611bce60018261287a565b90506000611bdd600a886129db565b611be890600a612793565b611bf2908861287a565b611bfd906030612a16565b905060008160f81b905080848481518110611c1a57611c1a612a3b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611c54600a896129db565b97505050611bbd565b50949350505050565b6000546040517f44dd5ed60000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906344dd5ed6908390611cb7908990899088908a90600401612a6a565b6000604051808303818588803b158015611cd057600080fd5b505af1158015611ce4573d6000803e3d6000fd5b50505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610d389085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611dea565b6040516001600160a01b03831660248201526044810182905261102a9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611d3d565b6000611e3f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611ecf9092919063ffffffff16565b80519091501561102a5780806020019051810190611e5d9190612aa9565b61102a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101be565b6060611ede8484600085611ee8565b90505b9392505050565b606082471015611f605760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101be565b6001600160a01b0385163b611fb75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101be565b600080866001600160a01b03168587604051611fd391906126d9565b60006040518083038185875af1925050503d8060008114612010576040519150601f19603f3d011682016040523d82523d6000602084013e612015565b606091505b5091509150612025828286612030565b979650505050505050565b6060831561203f575081611ee1565b82511561204f5782518084602001fd5b8160405162461bcd60e51b81526004016101be9190612867565b6001600160a01b038116811461207e57600080fd5b50565b60008083601f84011261209357600080fd5b50813567ffffffffffffffff8111156120ab57600080fd5b6020830191508360208285010111156120c357600080fd5b9250929050565b60008060008060008060a087890312156120e357600080fd5b8635955060208701356120f581612069565b9450604087013561210581612069565b935060608701359250608087013567ffffffffffffffff81111561212857600080fd5b61213489828a01612081565b979a9699509497509295939492505050565b60008060008060006080868803121561215e57600080fd5b853561216981612069565b9450602086013561217981612069565b935060408601359250606086013567ffffffffffffffff81111561219c57600080fd5b6121a888828901612081565b969995985093965092949392505050565b803563ffffffff811681146121cd57600080fd5b919050565b6000806000806000608086880312156121ea57600080fd5b8535945060208601356121fc81612069565b935061220a604087016121b9565b9250606086013567ffffffffffffffff81111561219c57600080fd5b60008060008060008060a0878903121561223f57600080fd5b863561224a81612069565b9550602087013561225a81612069565b94506040870135935061226f606088016121b9565b9250608087013567ffffffffffffffff81111561212857600080fd5b60008060008060008060008060e0898b0312156122a757600080fd5b8835975060208901356122b981612069565b965060408901356122c981612069565b955060608901356122d981612069565b945060808901356122e981612069565b935060a0890135925060c089013567ffffffffffffffff81111561230c57600080fd5b6123188b828c01612081565b999c989b5096995094979396929594505050565b600080600080600080600060c0888a03121561234757600080fd5b873561235281612069565b9650602088013561236281612069565b9550604088013561237281612069565b945060608801359350612387608089016121b9565b925060a088013567ffffffffffffffff8111156123a357600080fd5b6123af8a828b01612081565b989b979a50959850939692959293505050565b600080600080606085870312156123d857600080fd5b843593506123e8602086016121b9565b9250604085013567ffffffffffffffff81111561240457600080fd5b61241087828801612081565b95989497509550505050565b6000806000806060858703121561243257600080fd5b843561243d81612069565b93506123e8602086016121b9565b600080600080600080600060c0888a03121561246657600080fd5b87359650602088013561236281612069565b600080600080600080600060c0888a03121561249357600080fd5b873561249e81612069565b965060208801356124ae81612069565b955060408801356124be81612069565b945060608801356124ce81612069565b93506080880135925060a088013567ffffffffffffffff8111156123a357600080fd5b60008060006040848603121561250657600080fd5b61250f846121b9565b9250602084013567ffffffffffffffff81111561252b57600080fd5b61253786828701612081565b9497909650939450505050565b60008060008060008060008060e0898b03121561256057600080fd5b88359750602089013561257281612069565b9650604089013561258281612069565b9550606089013561259281612069565b9450608089013593506125a760a08a016121b9565b925060c089013567ffffffffffffffff81111561230c57600080fd5b6000806000606084860312156125d857600080fd5b83356125e381612069565b92506020840135915060408401356125fa81612069565b809150509250925092565b6000806000806080858703121561261b57600080fd5b843561262681612069565b9350602085013561263681612069565b9250604085013561264681612069565b9150606085013561265681612069565b939692955090935050565b60006020828403121561267357600080fd5b8151611ee181612069565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b838110156126c85781810151838201526020016126b0565b83811115610d385750506000910152565b600082516126eb8184602087016126ad565b9190910192915050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b84815260606020820152600061273a6060830185876126f5565b905082604083015295945050505050565b60006020828403121561275d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156127cb576127cb612764565b500290565b7f696e73756666696369656e742066656520737570706c6965642e2073656e642081527f6174206c6561737420000000000000000000000000000000000000000000000060208201526000825161282e8160298501602087016126ad565b9190910160290192915050565b600081518084526128538160208601602086016126ad565b601f01601f19169290920160200192915050565b602081526000611ee1602083018461283b565b60008282101561288c5761288c612764565b500390565b60006001600160a01b0380891683528088166020840152808716604084015280861660608401525083608083015260c060a08301526128d360c083018461283b565b98975050505050505050565b8381526060602082015260006128f8606083018561283b565b9050826040830152949350505050565b60006001600160a01b03808a1683528089166020840152808816604084015280871660608401525084608083015260c060a083015261294b60c0830184866126f5565b9998505050505050505050565b6000821982111561296b5761296b612764565b500190565b6001600160a01b03851681528360208201526060604082015260006129996060830184866126f5565b9695505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129d4576129d4612764565b5060010190565b600082612a11577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060ff821660ff84168060ff03821115612a3357612a33612764565b019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8481526001600160a01b0384166020820152608060408201526000612a92608083018561283b565b905063ffffffff8316606083015295945050505050565b600060208284031215612abb57600080fd5b81518015158114611ee157600080fdfea2646970667358221220619b29ec0b45dd84f4c6f0ea7ba2d47e5cec71daf62ef75df525db2b2981945064736f6c634300080f0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
