{
  "_format": "hh-sol-artifact-1",
  "contractName": "veUSDToken_CrossChain",
  "sourceName": "contracts/veUSD/veUSDToken_CrossChain.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "effectiveTime",
          "type": "uint256"
        }
      ],
      "name": "BridgeMintLimitProposalNotReady",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "alreadyHasRole",
          "type": "bytes32"
        }
      ],
      "name": "DuplicateBridgeAndProtocolRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IXERC20_LimitsTooHigh",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IXERC20_NotFactory",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IXERC20_NotHighEnoughLimits",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InitializerAlreadySet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InitializerNotSet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "InvalidBurnerRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidEnableMintingRole",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "InvalidMinterRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidPauseMintingRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LockboxIsDisabled",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MintingAlreadySet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "newMintLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "currentMintLimit",
          "type": "uint256"
        }
      ],
      "name": "MustProposeMintingLimitIncrease",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoValidUpdatesProvided",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotAdminOrBridgeRiskManagerRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotAuthorizedInitializer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "minRatio",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "currentRatio",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "protocolSupply",
          "type": "uint256"
        },
        {
          "internalType": "int256",
          "name": "bridgeSupply",
          "type": "int256"
        }
      ],
      "name": "SupplyRatioBelowLimit",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "ratio",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minRatio",
          "type": "uint256"
        }
      ],
      "name": "SupplyRatioTooLow",
      "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": false,
          "internalType": "address",
          "name": "_oldBorrowerOperationsAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newBorrowerOperationsAddress",
          "type": "address"
        }
      ],
      "name": "BorrowerOperationsAddressChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "remainingBurnLimit",
          "type": "uint256"
        }
      ],
      "name": "BridgeBurn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_burningLimit",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "BridgeBurnLimitChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_mintingLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_burningLimit",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "BridgeLimitsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "remainingMintLimit",
          "type": "uint256"
        }
      ],
      "name": "BridgeMint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_mintingLimit",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "BridgeMintLimitChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newMintLimit",
          "type": "uint256"
        }
      ],
      "name": "BridgeMintLimitIncreaseExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newMintLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "executionTime",
          "type": "uint256"
        }
      ],
      "name": "BridgeMintLimitIncreaseProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "currentMintLimit",
          "type": "uint256"
        }
      ],
      "name": "BridgeMintLimitIncreaseRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "BridgingPaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "BridgingUnpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EIP712DomainChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "lockbox",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LockBoxBurn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "lockbox",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LockBoxMint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "LockboxDisabled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_lockbox",
          "type": "address"
        }
      ],
      "name": "LockboxSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldRatio",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newRatio",
          "type": "uint256"
        }
      ],
      "name": "MinProtocolSupplyToBridgeSupplyRatioUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_oldStabilityPoolAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newStabilityPoolAddress",
          "type": "address"
        }
      ],
      "name": "StabilityPoolAddressChanged",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "burner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isValid",
          "type": "bool"
        }
      ],
      "name": "VEUSDBurnerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isValid",
          "type": "bool"
        }
      ],
      "name": "VEUSDMinterChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_oldVaultManagerDiamondAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newVaultManagerDiamondAddress",
          "type": "address"
        }
      ],
      "name": "VaultManagerDiamondAddressChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "veUSDTokenBalanceUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BRIDGE_MINT_INCREASE_DELAY",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "BRIDGE_PAUSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "BRIDGE_RISK_MANAGER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "BRIDGE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINT_PAUSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MIN_PROTOCOL_SUPPLY_TO_BRIDGE_SUPPLY_RATIO",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PROTOCOL_BURNER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PROTOCOL_MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "borrowerOperationsAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "bridgeMintLimitIncreaseProposals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "newMintLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "executionTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bridgePaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bridgeSupply",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "bridges",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ratePerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "currentLimit",
              "type": "uint256"
            }
          ],
          "internalType": "struct XERC20.BridgeParameters",
          "name": "minterParams",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ratePerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "currentLimit",
              "type": "uint256"
            }
          ],
          "internalType": "struct XERC20.BridgeParameters",
          "name": "burnerParams",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "burningCurrentLimitOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "burningMaxLimitOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "canMint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "eip712Domain",
      "outputs": [
        {
          "internalType": "bytes1",
          "name": "fields",
          "type": "bytes1"
        },
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "version",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "verifyingContract",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        },
        {
          "internalType": "uint256[]",
          "name": "extensions",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "executeMintLimitIncreaseProposal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupplyRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "supplyRatio",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governorAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "vaultManagerDiamondAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stabilityPoolAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "borrowerOperationsAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "governorAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "ownerAndAdminRole",
              "type": "address"
            }
          ],
          "internalType": "struct IveUSDToken_Initializer.InitializerParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isValidProtocolBurner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isValidProtocolMinter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lockbox",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vaultManagerDiamondAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_stabilityPoolAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_borrowerOperationsAddress",
          "type": "address"
        }
      ],
      "name": "migrateProtocolContracts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minProtocolSupplyToBridgeSupplyRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "mintingCurrentLimitOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "mintingMaxLimitOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pauseBridging",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newMintingLimit",
          "type": "uint256"
        }
      ],
      "name": "proposeMintLimitIncrease",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "protocolSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "initializer_",
          "type": "address"
        }
      ],
      "name": "registerInitializer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registeredInitializer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_poolAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "returnFromPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "revokeMintLimitIncreaseProposal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_poolAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "sendToPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_mintingLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_burningLimit",
          "type": "uint256"
        }
      ],
      "name": "setLimits",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_lockbox",
          "type": "address"
        }
      ],
      "name": "setLockbox",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_ratio",
          "type": "uint256"
        }
      ],
      "name": "setMinProtocolSupplyToBridgeSupplyRatio",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stabilityPoolAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpauseBridging",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_canMint",
          "type": "bool"
        }
      ],
      "name": "updateMinting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vaultManagerDiamondAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405261019b805460ff191690553480156200001c57600080fd5b506200002762000037565b6200003162000037565b620000f8565b600054610100900460ff1615620000a45760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000f6576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614ee280620001086000396000f3fe608060405234801561001057600080fd5b50600436106104a85760003560e01c806384b0196e1161026b578063a9059cbb11610150578063beb9716d116100c8578063ced67f0c11610097578063d547741f1161007c578063d547741f14610ae1578063dd62ed3e14610af4578063ffa1ad7414610b2d57600080fd5b8063ced67f0c14610a3b578063d505accf14610ace57600080fd5b8063beb9716d146109d3578063c1eb7137146109e8578063ca15c87314610a15578063cbf50de714610a2857600080fd5b8063b5bfddea1161011f578063b937134311610104578063b9371343146109a3578063bb997bac146109ad578063bcf47d33146109c057600080fd5b8063b5bfddea1461097a578063b7f8cf9b1461098f57600080fd5b8063a9059cbb1461093a578063ae0e890a1461094d578063b22b784014610955578063b59913471461096857600080fd5b806395d89b41116101e35780639dc29fac116101b2578063a167490311610197578063a1674903146108e2578063a217fddf1461091f578063a457c2d71461092757600080fd5b80639dc29fac146108bc578063a08d5654146108cf57600080fd5b806395d89b4114610867578063998955d31461086f5780639a9232f6146108825780639d1b636c1461089557600080fd5b80638f656d221161023a57806390acdb0b1161021f57806390acdb0b1461081a57806391d1485414610841578063933cc28f1461085457600080fd5b80638f656d22146107f45780639010d07c1461080757600080fd5b806384b0196e146107a057806387dc5182146107bb5780638a1d7fd0146107c55780638da5cb5b146107ec57600080fd5b806336568abe1161039157806352033ede11610309578063674ca237116102d857806370a08231116102bd57806370a082311461075157806379cc67901461077a5780637ecebe001461078d57600080fd5b8063674ca2371461073d5780636ccf20d51461074557600080fd5b806352033ede146106ef578063651e1f9114610703578063651fd2681461071657806366cc57021461072957600080fd5b806342966c6811610360578063460ab5ad11610345578063460ab5ad146106c1578063472fa5cb146106d45780634a0bea12146106e757600080fd5b806342966c681461069b578063435350b7146106ae57600080fd5b806336568abe1461064f57806339509351146106625780633f7f9d941461067557806340c10f191461068857600080fd5b806320c582be116104245780632f2ff15d116103f3578063318e2486116103d8578063318e248614610616578063363ce28d146106205780633644e5151461064757600080fd5b80632f2ff15d146105f4578063313ce5671461060757600080fd5b806320c582be146105a557806323b872dd146105ba578063248a9ca3146105cd578063276f1c41146105e057600080fd5b8063095ea7b31161047b5780630c05f82c116104605780630c05f82c1461056657806318160ddd146105935780631cfd2d621461059b57600080fd5b8063095ea7b3146105275780630b622ab21461053a57600080fd5b8063015556e8146104ad57806301ffc9a7146104e757806306fdde031461050a578063073aa8a91461051f575b600080fd5b6104d47f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4581565b6040519081526020015b60405180910390f35b6104fa6104f536600461471a565b610b69565b60405190151581526020016104de565b610512610bad565b6040516104de9190614794565b6104d4600281565b6104fa6105353660046147c3565b610c3f565b6101645461054e906001600160a01b031681565b6040516001600160a01b0390911681526020016104de565b6104d46105743660046147ed565b6001600160a01b0316600090815261019a602052604090206002015490565b6035546104d4565b6104d46101ce5481565b6105b86105b3366004614808565b610c57565b005b6104fa6105c8366004614808565b610c6f565b6104d46105db366004614844565b610c8f565b6101665461054e906001600160a01b031681565b6105b861060236600461485d565b610ca6565b604051601281526020016104de565b6104d46101d05481565b6104d47facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf81565b6104d4610cb4565b6105b861065d36600461485d565b610cc3565b6104fa6106703660046147c3565b610ccd565b6105b86106833660046147ed565b610d0c565b6105b86106963660046147c3565b610dd7565b6105b86106a9366004614844565b610e77565b6105b86106bc3660046147ed565b610e84565b6105b86106cf366004614889565b610e97565b6104fa6106e23660046147ed565b6110bb565b6105b86110e7565b6101635461054e906001600160a01b031681565b6105b8610711366004614844565b6110fb565b6104d46107243660046147ed565b6111e2565b6101995461054e906001600160a01b031681565b6104d4611217565b61019b5460ff166104fa565b6104d461075f3660046147ed565b6001600160a01b031660009081526033602052604090205490565b6105b86107883660046147c3565b61124a565b6104d461079b3660046147ed565b611254565b6107a8611272565b6040516104de97969594939291906148cc565b6104d46201518081565b6104d47fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0681565b61054e611334565b6105b8610802366004614994565b611340565b61054e610815366004614a22565b6114ea565b6104d47feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0681565b6104fa61084f36600461485d565b611503565b6104fa6108623660046147ed565b61152e565b61051261155a565b6104d461087d3660046147ed565b611569565b6105b86108903660046147ed565b6115a1565b6104d47ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744681565b6105b86108ca3660046147c3565b6116fe565b6105b86108dd366004614a44565b611775565b61090a6108f03660046147ed565b6101d1602052600090815260409020805460019091015482565b604080519283526020830191909152016104de565b6104d4600081565b6104fa6109353660046147c3565b61185f565b6104fa6109483660046147c3565b611914565b6105b8611929565b6105b8610963366004614a77565b61195b565b610162546001600160a01b031661054e565b6104d4600080516020614e8d83398151915281565b6101655461054e906001600160a01b031681565b6104d46101cf5481565b6105b86109bb366004614808565b611a4d565b6105b86109ce3660046147ed565b611a55565b610162546104fa90600160a81b900460ff1681565b6104d46109f63660046147ed565b6001600160a01b0316600090815261019a602052604090206006015490565b6104d4610a23366004614844565b611ada565b6105b8610a363660046147c3565b611af2565b610ac0610a493660046147ed565b61019a602090815260009182526040918290208251608080820185528254825260018301548285015260028301548286015260038301546060808401919091528551918201865260048401548252600584015494820194909452600683015494810194909452600790910154918301919091529082565b6040516104de929190614a99565b6105b8610adc366004614ae5565b611c20565b6105b8610aef36600461485d565b611d84565b6104d4610b02366004614b58565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6105126040518060400160405280600581526020017f312e322e3000000000000000000000000000000000000000000000000000000081525081565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480610ba75750610ba782611d8e565b92915050565b606060368054610bbc90614b82565b80601f0160208091040260200160405190810160405280929190818152602001828054610be890614b82565b8015610c355780601f10610c0a57610100808354040283529160200191610c35565b820191906000526020600020905b815481529060010190602001808311610c1857829003601f168201915b5050505050905090565b600033610c4d818585611df5565b5060019392505050565b610c5f611f4e565b610c6a838383611fe5565b505050565b6000610c7a836121d9565b610c8584848461227d565b90505b9392505050565b600081815260fe6020526040812060010154610ba7565b610cb08282612296565b5050565b6000610cbe612304565b905090565b610cb0828261230e565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190610c4d9082908690610d07908790614bcc565b611df5565b610d17600033611503565b158015610d4b5750610d497f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4533611503565b155b15610d7057604051630eabe6ed60e01b81523360048201526024015b60405180910390fd5b6001600160a01b03811660008181526101d16020908152604080832083815560010183905561019a9091529020600201547f564c58dd75b142d7ff24af2e91492e8cdc5ae3e3b1b9a06b03c0c42e5040ba8c9060405190815260200160405180910390a250565b610ddf612396565b610e097ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744633611503565b15610e1857610cb082826123f0565b610e30600080516020614e8d83398151915233611503565b15610e3f57610cb08282612413565b610199546001600160a01b03163303610e5c57610cb0828261248a565b604051637ddde23760e01b8152336004820152602401610d67565b610e8133826116fe565b50565b610e8e600061251a565b610e8181612524565b610e9f6125f7565b60006001600160a01b03841615801590610ec85750610163546001600160a01b03858116911614155b15610f3f5761016354604080516001600160a01b03928316815291861660208301527fa97b341f77b0e4c8c68d09d703bbf67a1eaae5d761fcbdbecaca033d2af5ebd4910160405180910390a161016380546001600160a01b0319166001600160a01b03861617905580610f3b81614bdf565b9150505b6001600160a01b03831615801590610f665750610164546001600160a01b03848116911614155b15610fdd5761016454604080516001600160a01b03928316815291851660208301527ff9610b18e4a1d98238bc4ce7a524941ee9f274fbec476687c10d11f4a51c03af910160405180910390a161016480546001600160a01b0319166001600160a01b03851617905580610fd981614bdf565b9150505b6001600160a01b038216158015906110045750610165546001600160a01b03838116911614155b1561107b5761016554604080516001600160a01b03928316815291841660208301527f062e7312f73faf31fdc8f23b4c09073a463f3fb2c9c344d40858f2a23c03a2fa910160405180910390a161016580546001600160a01b0319166001600160a01b0384161790558061107781614bdf565b9150505b806000036110b5576040517f366deafc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610ba77fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0683611503565b6110f1600061251a565b6110f9612678565b565b611106600033611503565b15801561113a57506111387f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4533611503565b155b1561115a57604051630eabe6ed60e01b8152336004820152602401610d67565b600281101561119f576040517f3c267a030000000000000000000000000000000000000000000000000000000081526004810182905260026024820152604401610d67565b6101d05460408051918252602082018390527f1b61a6a4f8b6de02a48b7c5cecf97f9268b776620828a056b6fbb3eeb4ebc61d910160405180910390a16101d055565b6001600160a01b038116600090815261019a60205260408120600381015460028201548254600190930154610ba793906126cb565b600080611222612743565b9050806000036112355760001991505090565b806101ce546112449190614bf8565b91505090565b610cb082826116fe565b6001600160a01b038116600090815260996020526040812054610ba7565b6000606080600080600060606065546000801b1480156112925750606654155b6112de5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152606401610d67565b6112e6612764565b6112ee612773565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610cbe81806114ea565b600054610100900460ff16158080156113605750600054600160ff909116105b8061137a5750303b15801561137a575060005460ff166001145b6113ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610d67565b6000805460ff19166001179055801561140f576000805461ff0019166101001790555b61016254600160a01b900460ff16611453576040517f5009898300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610162546001600160a01b03163314611498576040517f396c907f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114a182612782565b8015610cb0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600082815261013060205260408120610c889083612873565b600082815260fe602090815260408083206001600160a01b038516845290915281205460ff16610c88565b6000610ba77ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744683611503565b606060378054610bbc90614b82565b6001600160a01b038116600090815261019a60205260408120600781015460068201546004830154600590930154610ba793906126cb565b6115ac600033611503565b1580156115e057506115de7f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4533611503565b155b1561160057604051630eabe6ed60e01b8152336004820152602401610d67565b61160861287f565b6001600160a01b03811660009081526101d1602052604090206001015442811115611671576040517f34f3c9cf0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610d67565b6001600160a01b03821660009081526101d160205260409020546116969083906128d3565b6001600160a01b03821660008181526101d16020908152604080832083815560010183905561019a9091529020600201547fa9fe2dca31a7e17f0b1fd319f0b30fb7eb9b6ccc77a73c8e833b20803a18f4739060405190815260200160405180910390a25050565b611707336110bb565b1561171657610cb082826129e5565b61172e600080516020614e8d83398151915233611503565b1561173d57610cb08282612a08565b610199546001600160a01b0316330361175a57610cb08282612a8d565b604051630c3373f760e21b8152336004820152602401610d67565b611780600033611503565b1580156117b457506117b27f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4533611503565b155b156117d457604051630eabe6ed60e01b8152336004820152602401610d67565b6001600160a01b038316600090815261019a60205260409020600201548083111561182b57604051637d5e3dfb60e11b81526001600160a01b03851660048201526024810184905260448101829052606401610d67565b611836848484612b15565b82158015611842575081155b156110b5576110b5600080516020614e8d83398151915285612b6a565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190838110156118fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610d67565b6119098286868403611df5565b506001949350505050565b600061191f836121d9565b610c888383612bb6565b7facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf6119538161251a565b610e81612bc4565b61016254600160a81b900460ff161515811515036119a5576040517f9f0e7d7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156119b8576119b36125f7565b611a2e565b6119e27feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0633611503565b1580156119f757506119f5600033611503565b155b15611a2e576040517f180b21fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101628054911515600160a81b0260ff60a81b19909216919091179055565b610c5f612c02565b61016254600160a01b900460ff1615611a9a576040517ff20d240500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016280547fffffffffffffffffffffff000000000000000000000000000000000000000000166001600160a01b0390921691909117600160a01b179055565b600081815261013060205260408120610ba790612c83565b611afc600061251a565b611b0461287f565b611b1c600080516020614e8d83398151915283612c8d565b6001600160a01b038216600090815261019a6020526040902060020154811015611b97578181611b65846001600160a01b0316600090815261019a602052604090206002015490565b604051637d5e3dfb60e11b81526001600160a01b03909316600484015260248301919091526044820152606401610d67565b6000611ba66201518042614bcc565b60408051808201825284815260208082018481526001600160a01b03881660008181526101d184528590209351845590516001909301929092558251868152908101849052929350917f72d7cf1baaca85718c75c17aa2992dd9d7b93a9f3911be475af37078dad40a3e91015b60405180910390a2505050565b83421115611c705760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610d67565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611c9f8c612ce6565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611cfa82612d0e565b90506000611d0a82878787612d56565b9050896001600160a01b0316816001600160a01b031614611d6d5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610d67565b611d788a8a8a611df5565b50505050505050505050565b610cb08282612d7e565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480610ba757507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610ba7565b6001600160a01b038316611e705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b038216611eec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b610164546001600160a01b0316331480611f735750610163546001600160a01b031633145b6110f95760405162461bcd60e51b815260206004820152603e60248201527f76655553443a2043616c6c6572206973206e656974686572205661756c744d6160448201527f6e616765724469616d6f6e64206e6f722053746162696c697479506f6f6c00006064820152608401610d67565b6001600160a01b0383166120615760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0382166120dd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0383166000908152603360205260409020548181101561216c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121cc9086815260200190565b60405180910390a36110b5565b306001600160a01b03821603610e815760405162461bcd60e51b815260206004820152604260248201527f76655553443a2043616e6e6f74207472616e7366657220746f6b656e7320646960448201527f726563746c7920746f2074686520766555534420746f6b656e20636f6e74726160648201527f6374000000000000000000000000000000000000000000000000000000000000608482015260a401610d67565b60003361228b858285612e5c565b611909858585611fe5565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468214806122e357507fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682145b156122fa576122f06125f7565b610cb08282612e67565b610cb08282612fd8565b6000610cbe612ff4565b6001600160a01b038116331461238c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610d67565b610cb08282612b6a565b61016254600160a81b900460ff166110f95760405162461bcd60e51b815260206004820152601a60248201527f76655553443a204d696e74696e672069732064697361626c65640000000000006044820152606401610d67565b806101ce60008282546124039190614bcc565b90915550610cb090508282613068565b61242a600080516020614e8d83398151915261251a565b33612436818484613082565b826001600160a01b0316816001600160a01b03167fe3bac5b9cc7159f3586d12aeb1bb8a028deddd03280eae86def97a83d380c97e84612475856111e2565b60408051928352602083019190915201611f41565b610199546001600160a01b031633146124b857604051637ddde23760e01b8152336004820152602401610d67565b610199546124d0906001600160a01b03168383613082565b610199546040518281526001600160a01b038481169216907f75bf99f7db25a13871e188edd8a7e112d434444f9d952848f4c6ccd8ae05356a906020015b60405180910390a35050565b610e818133612c8d565b610199546001600160a01b031661deac190161256c576040517f30e0e3ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166125ac576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125b58161309e565b610199546001600160a01b031661deac1901610e81576040517f78768828eab66fdac6a78204b2027bd64810f2cbf324c908f5f5999b9018d1d790600090a150565b610166546001600160a01b031633146110f95760405162461bcd60e51b815260206004820152602160248201527f76655553443a2043616c6c6572206973206e6f742074686520676f7665726e6f60448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6126806130f3565b61019b805460ff191690557f2cc50ebc4cffd414482dbc0d6ba24ba02e8e58e3174f391834ff08642aeabd87335b6040516001600160a01b03909116815260200160405180910390a1565b8383811461273b57426126e16201518085614bcc565b116126ed57508261273b565b426126fb6201518085614bcc565b111561273b57600061270d8442614c1a565b9050600061271b8483614c2d565b6127259084614bcc565b90508581116127345780612736565b855b925050505b949350505050565b6000806101cf541261275757506101cf5490565b6101cf54610cbe90614c44565b606060678054610bbc90614b82565b606060688054610bbc90614b82565b600054610100900460ff166127ed5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b6127f68161316c565b6127fe613450565b600a6101d05561281d600080516020614e8d83398151915260006134c3565b6128487facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf60006134c3565b610e817f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4560006134c3565b6000610c888383613516565b61019b5460ff16156110f95760405162461bcd60e51b815260206004820152601f60248201527f4272696467655061757361626c653a206272696467696e6720706175736564006044820152606401610d67565b806128e16002600019614bf8565b8111156129015760405163f596480960e01b815260040160405180910390fd5b6001600160a01b038316600090815261019a602052604081206002015490612928856111e2565b6001600160a01b038616600090815261019a602052604090206002018590559050612954848383613540565b6001600160a01b038616600090815261019a602052604090206003015561297e6201518085614bf8565b6001600160a01b038616600081815261019a60205260409081902060018101939093554290925590517f73a45fb9bdf4314eef462282cb306b703aff37ebf3d8365e1cb184b6e4f81e26906129d69087815260200190565b60405180910390a25050505050565b806101ce60008282546129f89190614c1a565b90915550610cb090508282613597565b612a1061287f565b612a27600080516020614e8d83398151915261251a565b336001600160a01b0383168114612a4357612a43838284612e5c565b612a4e8184846135a9565b826001600160a01b0316816001600160a01b03167f23d4617ad0c271f3212274f0c9e7f4e0297eb842756610af3d94aee34be4b9ba8461247585611569565b610199546001600160a01b03163314612abb57604051630c3373f760e21b8152336004820152602401610d67565b61019954612ad3906001600160a01b031683836135a9565b610199546040518281526001600160a01b038481169216907fce5305b40b7abd03afee067707e7d214b3e1eec39cdaa19123e9405bc5e60f3c9060200161250e565b612b1f83836128d3565b612b2983826135cd565b60408051838152602081018390526001600160a01b038516917f93f3bbfe8cfb354ec059175107653f49f6eb479a8622a7d83866ea015435c9449101611c13565b600080516020614e8d8339815191528203612bac57612b8b81600080612b15565b6001600160a01b03811660009081526101d160205260408120818155600101555b610cb082826136d6565b600033610c4d818585611fe5565b612bcc61287f565b61019b805460ff191660011790557faf0e7bc1034b70c2371e91aed036232c1e293fbb61b07a9b5f8d6b069b63e8096126ae3390565b610164546001600160a01b031633146110f95760405162461bcd60e51b815260206004820152602660248201527f76655553443a2043616c6c6572206973206e6f74207468652053746162696c6960448201527f7479506f6f6c00000000000000000000000000000000000000000000000000006064820152608401610d67565b6000610ba7825490565b612c978282611503565b610cb057612ca4816136f9565b612caf83602061370b565b604051602001612cc0929190614c7c565b60408051601f198184030181529082905262461bcd60e51b8252610d6791600401614794565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b6000610ba7612d1b612304565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000612d67878787876138ec565b91509150612d74816139b0565b5095945050505050565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468203612de857604080516001600160a01b0383168152600060208201527f73d12e94857635af82b7d94f9c40b816942c33758efc90aee65a314c96415149910160405180910390a15b7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068203612e5257604080516001600160a01b0383168152600060208201527f19d9f64b5a71d1b38748c6d0200adb8687cbfdd74263adc72ffdf8d0b6225aba910160405180910390a15b610cb08282613b15565b610c6a838383613b31565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468203612ee857612ea6600080516020614e8d83398151915282611503565b15612ee357604051639c2b7ba760e01b81526001600160a01b0382166004820152600080516020614e8d8339815191526024820152604401610d67565b612fce565b600080516020614e8d8339815191528203612fce57612f277ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744682611503565b15612f7657604051639c2b7ba760e01b81526001600160a01b03821660048201527ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74466024820152604401610d67565b612f7f816110bb565b15612fce57604051639c2b7ba760e01b81526001600160a01b03821660048201527f50726f746f636f6c204275726e657200000000000000000000000000000000006024820152604401610d67565b610cb08282613bbd565b612fe182610c8f565b612fea8161251a565b610c6a8383612e67565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61301f613be0565b613027613c39565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b613070612396565b613078613c6a565b610cb08282613ce5565b61308a61287f565b613095838383613cef565b610c6a81613d49565b61019980546001600160a01b0319166001600160a01b0383169081179091556040519081527ffa2e15ea41196e438f0593ecdd6036acd83bdfcd39d627b77c17eab43f376a399060200160405180910390a150565b61019b5460ff166110f95760405162461bcd60e51b815260206004820152602360248201527f4272696467655061757361626c653a206272696467696e67206e6f742070617560448201527f73656400000000000000000000000000000000000000000000000000000000006064820152608401610d67565b600054610100900460ff166131d75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b61324b6040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e0000000000000000000000008152506040518060400160405280600581526020017f7665555344000000000000000000000000000000000000000000000000000000815250613de9565b6132896040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e000000000000000000000000815250613e5e565b613291613f08565b610162805460ff60a81b1916600160a81b179055805161016380546001600160a01b039283166001600160a01b0319918216179091556020830151610164805491841691831691909117905560408301516101658054918416918316919091179055606083015161016680549190931691161790556133317ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744660006134c3565b61335c7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0660006134c3565b6133877feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0660006134c3565b6133986000801b8260800151612e67565b6133c67ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468260400151612e67565b6133f47fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260000151612e67565b6134227fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260200151612e67565b610e817fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260400151612e67565b600054610100900460ff166134bb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b6110f9613f73565b60006134ce83610c8f565b600084815260fe6020526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600082600001828154811061352d5761352d614cfd565b9060005260206000200154905092915050565b60008084841115613576576135558585614c1a565b905080831161356557600061356f565b61356f8184614c1a565b915061358f565b6135808486614c1a565b905061358c8184614bcc565b91505b509392505050565b61359f613feb565b610cb08282614066565b6135b161287f565b6135bc838383614070565b610c6a6135c882614c44565b613d49565b806135db6002600019614bf8565b8111156135fb5760405163f596480960e01b815260040160405180910390fd5b6001600160a01b038316600090815261019a60205260408120600601549061362285611569565b6001600160a01b038616600090815261019a60205260409020600601859055905061364e848383613540565b6001600160a01b038616600090815261019a60205260409020600701556136786201518085614bf8565b6001600160a01b038616600081815261019a60205260409081902060058101939093554260049093019290925590517f1d819f0022f2d01a98a05488bb5993957bc7280bf8aac3550af10b75e84e9c50906129d69087815260200190565b6136e082826140ca565b600082815261013060205260409020610c6a9082614131565b6060610ba76001600160a01b03831660145b6060600061371a836002614c2d565b613725906002614bcc565b67ffffffffffffffff81111561373d5761373d61497e565b6040519080825280601f01601f191660200182016040528015613767576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061379e5761379e614cfd565b60200101906001600160f81b031916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106137e9576137e9614cfd565b60200101906001600160f81b031916908160001a905350600061380d846002614c2d565b613818906001614bcc565b90505b600181111561389d577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061385957613859614cfd565b1a60f81b82828151811061386f5761386f614cfd565b60200101906001600160f81b031916908160001a90535060049490941c9361389681614d13565b905061381b565b508315610c885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d67565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561392357506000905060036139a7565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613977573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166139a0576000600192509250506139a7565b9150600090505b94509492505050565b60008160048111156139c4576139c4614d2a565b036139cc5750565b60018160048111156139e0576139e0614d2a565b03613a2d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610d67565b6002816004811115613a4157613a41614d2a565b03613a8e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610d67565b6003816004811115613aa257613aa2614d2a565b03610e815760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b613b1e82610c8f565b613b278161251a565b610c6a8383612b6a565b6001600160a01b0383811660009081526034602090815260408083209386168352929052205460001981146110b55781811015613bb05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d67565b6110b58484848403611df5565b613bc78282614146565b600082815261013060205260409020610c6a90826141cc565b600080613beb612764565b805190915015613c02578051602090910120919050565b6065548015613c115792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080613c44612773565b805190915015613c5b578051602090910120919050565b6066548015613c115792915050565b613c733361152e565b6110f95760405162461bcd60e51b815260206004820152602660248201527f7665555344546f6b656e3a2043616c6c6572206973206e6f742056616c69642060448201527f4d696e74657200000000000000000000000000000000000000000000000000006064820152608401610d67565b610cb082826141e1565b610199546001600160a01b03848116911614613d3f576000613d10846111e2565b905081811015613d33576040516305b4215560e11b815260040160405180910390fd5b613d3d84836142a2565b505b610c6a8282613ce5565b806101cf6000828254613d5c9190614d40565b90915550506000811380613d74575060006101cf5412155b15613d7c5750565b6000613d86611217565b90506101d054811015610cb0576101d0546101ce546101cf546040517f0515664b00000000000000000000000000000000000000000000000000000000815260048101939093526024830184905260448301919091526064820152608401610d67565b600054610100900460ff16613e545760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b610cb082826142fa565b600054610100900460ff16613ec95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b610e81816040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525061437e565b600054610100900460ff166110f95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b600054610100900460ff16613fde5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b61019b805460ff19169055565b613ff4336110bb565b6110f95760405162461bcd60e51b815260206004820152602c60248201527f76655553443a2043616c6c6572206973206e6f7420612076616c69642070726f60448201527f746f636f6c206275726e657200000000000000000000000000000000000000006064820152608401610d67565b610cb08282614411565b610199546001600160a01b038481169116146140c057600061409184611569565b9050818110156140b4576040516305b4215560e11b815260040160405180910390fd5b6140be848361457c565b505b610c6a8282614066565b6140d48282611503565b15610cb057600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610c88836001600160a01b0384166145d8565b6141508282611503565b610cb057600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556141883390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610c88836001600160a01b0384166146cb565b6001600160a01b0382166142375760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d67565b80603560008282546142499190614bcc565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006142ad836111e2565b6001600160a01b038416600090815261019a6020526040902042905590506142d58282614c1a565b6001600160a01b03909316600090815261019a60205260409020600301929092555050565b600054610100900460ff166143655760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b60366143718382614db6565b506037610c6a8282614db6565b600054610100900460ff166143e95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b60676143f58382614db6565b5060686144028282614db6565b50506000606581905560665550565b6001600160a01b03821661448d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0382166000908152603360205260409020548181101561451c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600061458783611569565b6001600160a01b038416600090815261019a602052604090204260049091015590506145b38282614c1a565b6001600160a01b03909316600090815261019a60205260409020600701929092555050565b600081815260018301602052604081205480156146c15760006145fc600183614c1a565b855490915060009061461090600190614c1a565b905081811461467557600086600001828154811061463057614630614cfd565b906000526020600020015490508087600001848154811061465357614653614cfd565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061468657614686614e76565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610ba7565b6000915050610ba7565b600081815260018301602052604081205461471257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ba7565b506000610ba7565b60006020828403121561472c57600080fd5b81356001600160e01b031981168114610c8857600080fd5b60005b8381101561475f578181015183820152602001614747565b50506000910152565b60008151808452614780816020860160208601614744565b601f01601f19169290920160200192915050565b602081526000610c886020830184614768565b80356001600160a01b03811681146147be57600080fd5b919050565b600080604083850312156147d657600080fd5b6147df836147a7565b946020939093013593505050565b6000602082840312156147ff57600080fd5b610c88826147a7565b60008060006060848603121561481d57600080fd5b614826846147a7565b9250614834602085016147a7565b9150604084013590509250925092565b60006020828403121561485657600080fd5b5035919050565b6000806040838503121561487057600080fd5b82359150614880602084016147a7565b90509250929050565b60008060006060848603121561489e57600080fd5b6148a7846147a7565b92506148b5602085016147a7565b91506148c3604085016147a7565b90509250925092565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261490860e084018a614768565b838103604085015261491a818a614768565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561496c57835183529284019291840191600101614950565b50909c9b505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600060a082840312156149a657600080fd5b60405160a0810181811067ffffffffffffffff821117156149c9576149c961497e565b6040526149d5836147a7565b81526149e3602084016147a7565b60208201526149f4604084016147a7565b6040820152614a05606084016147a7565b6060820152614a16608084016147a7565b60808201529392505050565b60008060408385031215614a3557600080fd5b50508035926020909101359150565b600080600060608486031215614a5957600080fd5b614a62846147a7565b95602085013595506040909401359392505050565b600060208284031215614a8957600080fd5b81358015158114610c8857600080fd5b82518152602080840151818301526040808501518184015260608086015181850152845160808501529184015160a084015283015160c083015282015160e08201526101008101610c88565b600080600080600080600060e0888a031215614b0057600080fd5b614b09886147a7565b9650614b17602089016147a7565b95506040880135945060608801359350608088013560ff81168114614b3b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215614b6b57600080fd5b614b74836147a7565b9150614880602084016147a7565b600181811c90821680614b9657607f821691505b602082108103612d0857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610ba757610ba7614bb6565b600060018201614bf157614bf1614bb6565b5060010190565b600082614c1557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610ba757610ba7614bb6565b8082028115828204841417610ba757610ba7614bb6565b60007f80000000000000000000000000000000000000000000000000000000000000008203614c7557614c75614bb6565b5060000390565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614cb4816017850160208801614744565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614cf1816028840160208801614744565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081614d2257614d22614bb6565b506000190190565b634e487b7160e01b600052602160045260246000fd5b8082018281126000831280158216821582161715614d6057614d60614bb6565b505092915050565b601f821115610c6a57600081815260208120601f850160051c81016020861015614d8f5750805b601f850160051c820191505b81811015614dae57828155600101614d9b565b505050505050565b815167ffffffffffffffff811115614dd057614dd061497e565b614de481614dde8454614b82565b84614d68565b602080601f831160018114614e195760008415614e015750858301515b600019600386901b1c1916600185901b178555614dae565b600085815260208120601f198616915b82811015614e4857888601518255948401946001909101908401614e29565b5085821015614e665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfe52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5fa26469706673582212206ac8c905f385ea49eb30e6eba2adcdb753176dcfeb4ae58bb9fc70e50bc3596a64736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104a85760003560e01c806384b0196e1161026b578063a9059cbb11610150578063beb9716d116100c8578063ced67f0c11610097578063d547741f1161007c578063d547741f14610ae1578063dd62ed3e14610af4578063ffa1ad7414610b2d57600080fd5b8063ced67f0c14610a3b578063d505accf14610ace57600080fd5b8063beb9716d146109d3578063c1eb7137146109e8578063ca15c87314610a15578063cbf50de714610a2857600080fd5b8063b5bfddea1161011f578063b937134311610104578063b9371343146109a3578063bb997bac146109ad578063bcf47d33146109c057600080fd5b8063b5bfddea1461097a578063b7f8cf9b1461098f57600080fd5b8063a9059cbb1461093a578063ae0e890a1461094d578063b22b784014610955578063b59913471461096857600080fd5b806395d89b41116101e35780639dc29fac116101b2578063a167490311610197578063a1674903146108e2578063a217fddf1461091f578063a457c2d71461092757600080fd5b80639dc29fac146108bc578063a08d5654146108cf57600080fd5b806395d89b4114610867578063998955d31461086f5780639a9232f6146108825780639d1b636c1461089557600080fd5b80638f656d221161023a57806390acdb0b1161021f57806390acdb0b1461081a57806391d1485414610841578063933cc28f1461085457600080fd5b80638f656d22146107f45780639010d07c1461080757600080fd5b806384b0196e146107a057806387dc5182146107bb5780638a1d7fd0146107c55780638da5cb5b146107ec57600080fd5b806336568abe1161039157806352033ede11610309578063674ca237116102d857806370a08231116102bd57806370a082311461075157806379cc67901461077a5780637ecebe001461078d57600080fd5b8063674ca2371461073d5780636ccf20d51461074557600080fd5b806352033ede146106ef578063651e1f9114610703578063651fd2681461071657806366cc57021461072957600080fd5b806342966c6811610360578063460ab5ad11610345578063460ab5ad146106c1578063472fa5cb146106d45780634a0bea12146106e757600080fd5b806342966c681461069b578063435350b7146106ae57600080fd5b806336568abe1461064f57806339509351146106625780633f7f9d941461067557806340c10f191461068857600080fd5b806320c582be116104245780632f2ff15d116103f3578063318e2486116103d8578063318e248614610616578063363ce28d146106205780633644e5151461064757600080fd5b80632f2ff15d146105f4578063313ce5671461060757600080fd5b806320c582be146105a557806323b872dd146105ba578063248a9ca3146105cd578063276f1c41146105e057600080fd5b8063095ea7b31161047b5780630c05f82c116104605780630c05f82c1461056657806318160ddd146105935780631cfd2d621461059b57600080fd5b8063095ea7b3146105275780630b622ab21461053a57600080fd5b8063015556e8146104ad57806301ffc9a7146104e757806306fdde031461050a578063073aa8a91461051f575b600080fd5b6104d47f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4581565b6040519081526020015b60405180910390f35b6104fa6104f536600461471a565b610b69565b60405190151581526020016104de565b610512610bad565b6040516104de9190614794565b6104d4600281565b6104fa6105353660046147c3565b610c3f565b6101645461054e906001600160a01b031681565b6040516001600160a01b0390911681526020016104de565b6104d46105743660046147ed565b6001600160a01b0316600090815261019a602052604090206002015490565b6035546104d4565b6104d46101ce5481565b6105b86105b3366004614808565b610c57565b005b6104fa6105c8366004614808565b610c6f565b6104d46105db366004614844565b610c8f565b6101665461054e906001600160a01b031681565b6105b861060236600461485d565b610ca6565b604051601281526020016104de565b6104d46101d05481565b6104d47facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf81565b6104d4610cb4565b6105b861065d36600461485d565b610cc3565b6104fa6106703660046147c3565b610ccd565b6105b86106833660046147ed565b610d0c565b6105b86106963660046147c3565b610dd7565b6105b86106a9366004614844565b610e77565b6105b86106bc3660046147ed565b610e84565b6105b86106cf366004614889565b610e97565b6104fa6106e23660046147ed565b6110bb565b6105b86110e7565b6101635461054e906001600160a01b031681565b6105b8610711366004614844565b6110fb565b6104d46107243660046147ed565b6111e2565b6101995461054e906001600160a01b031681565b6104d4611217565b61019b5460ff166104fa565b6104d461075f3660046147ed565b6001600160a01b031660009081526033602052604090205490565b6105b86107883660046147c3565b61124a565b6104d461079b3660046147ed565b611254565b6107a8611272565b6040516104de97969594939291906148cc565b6104d46201518081565b6104d47fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0681565b61054e611334565b6105b8610802366004614994565b611340565b61054e610815366004614a22565b6114ea565b6104d47feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0681565b6104fa61084f36600461485d565b611503565b6104fa6108623660046147ed565b61152e565b61051261155a565b6104d461087d3660046147ed565b611569565b6105b86108903660046147ed565b6115a1565b6104d47ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744681565b6105b86108ca3660046147c3565b6116fe565b6105b86108dd366004614a44565b611775565b61090a6108f03660046147ed565b6101d1602052600090815260409020805460019091015482565b604080519283526020830191909152016104de565b6104d4600081565b6104fa6109353660046147c3565b61185f565b6104fa6109483660046147c3565b611914565b6105b8611929565b6105b8610963366004614a77565b61195b565b610162546001600160a01b031661054e565b6104d4600080516020614e8d83398151915281565b6101655461054e906001600160a01b031681565b6104d46101cf5481565b6105b86109bb366004614808565b611a4d565b6105b86109ce3660046147ed565b611a55565b610162546104fa90600160a81b900460ff1681565b6104d46109f63660046147ed565b6001600160a01b0316600090815261019a602052604090206006015490565b6104d4610a23366004614844565b611ada565b6105b8610a363660046147c3565b611af2565b610ac0610a493660046147ed565b61019a602090815260009182526040918290208251608080820185528254825260018301548285015260028301548286015260038301546060808401919091528551918201865260048401548252600584015494820194909452600683015494810194909452600790910154918301919091529082565b6040516104de929190614a99565b6105b8610adc366004614ae5565b611c20565b6105b8610aef36600461485d565b611d84565b6104d4610b02366004614b58565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6105126040518060400160405280600581526020017f312e322e3000000000000000000000000000000000000000000000000000000081525081565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480610ba75750610ba782611d8e565b92915050565b606060368054610bbc90614b82565b80601f0160208091040260200160405190810160405280929190818152602001828054610be890614b82565b8015610c355780601f10610c0a57610100808354040283529160200191610c35565b820191906000526020600020905b815481529060010190602001808311610c1857829003601f168201915b5050505050905090565b600033610c4d818585611df5565b5060019392505050565b610c5f611f4e565b610c6a838383611fe5565b505050565b6000610c7a836121d9565b610c8584848461227d565b90505b9392505050565b600081815260fe6020526040812060010154610ba7565b610cb08282612296565b5050565b6000610cbe612304565b905090565b610cb0828261230e565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190610c4d9082908690610d07908790614bcc565b611df5565b610d17600033611503565b158015610d4b5750610d497f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4533611503565b155b15610d7057604051630eabe6ed60e01b81523360048201526024015b60405180910390fd5b6001600160a01b03811660008181526101d16020908152604080832083815560010183905561019a9091529020600201547f564c58dd75b142d7ff24af2e91492e8cdc5ae3e3b1b9a06b03c0c42e5040ba8c9060405190815260200160405180910390a250565b610ddf612396565b610e097ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744633611503565b15610e1857610cb082826123f0565b610e30600080516020614e8d83398151915233611503565b15610e3f57610cb08282612413565b610199546001600160a01b03163303610e5c57610cb0828261248a565b604051637ddde23760e01b8152336004820152602401610d67565b610e8133826116fe565b50565b610e8e600061251a565b610e8181612524565b610e9f6125f7565b60006001600160a01b03841615801590610ec85750610163546001600160a01b03858116911614155b15610f3f5761016354604080516001600160a01b03928316815291861660208301527fa97b341f77b0e4c8c68d09d703bbf67a1eaae5d761fcbdbecaca033d2af5ebd4910160405180910390a161016380546001600160a01b0319166001600160a01b03861617905580610f3b81614bdf565b9150505b6001600160a01b03831615801590610f665750610164546001600160a01b03848116911614155b15610fdd5761016454604080516001600160a01b03928316815291851660208301527ff9610b18e4a1d98238bc4ce7a524941ee9f274fbec476687c10d11f4a51c03af910160405180910390a161016480546001600160a01b0319166001600160a01b03851617905580610fd981614bdf565b9150505b6001600160a01b038216158015906110045750610165546001600160a01b03838116911614155b1561107b5761016554604080516001600160a01b03928316815291841660208301527f062e7312f73faf31fdc8f23b4c09073a463f3fb2c9c344d40858f2a23c03a2fa910160405180910390a161016580546001600160a01b0319166001600160a01b0384161790558061107781614bdf565b9150505b806000036110b5576040517f366deafc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610ba77fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0683611503565b6110f1600061251a565b6110f9612678565b565b611106600033611503565b15801561113a57506111387f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4533611503565b155b1561115a57604051630eabe6ed60e01b8152336004820152602401610d67565b600281101561119f576040517f3c267a030000000000000000000000000000000000000000000000000000000081526004810182905260026024820152604401610d67565b6101d05460408051918252602082018390527f1b61a6a4f8b6de02a48b7c5cecf97f9268b776620828a056b6fbb3eeb4ebc61d910160405180910390a16101d055565b6001600160a01b038116600090815261019a60205260408120600381015460028201548254600190930154610ba793906126cb565b600080611222612743565b9050806000036112355760001991505090565b806101ce546112449190614bf8565b91505090565b610cb082826116fe565b6001600160a01b038116600090815260996020526040812054610ba7565b6000606080600080600060606065546000801b1480156112925750606654155b6112de5760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152606401610d67565b6112e6612764565b6112ee612773565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610cbe81806114ea565b600054610100900460ff16158080156113605750600054600160ff909116105b8061137a5750303b15801561137a575060005460ff166001145b6113ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610d67565b6000805460ff19166001179055801561140f576000805461ff0019166101001790555b61016254600160a01b900460ff16611453576040517f5009898300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610162546001600160a01b03163314611498576040517f396c907f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114a182612782565b8015610cb0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600082815261013060205260408120610c889083612873565b600082815260fe602090815260408083206001600160a01b038516845290915281205460ff16610c88565b6000610ba77ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744683611503565b606060378054610bbc90614b82565b6001600160a01b038116600090815261019a60205260408120600781015460068201546004830154600590930154610ba793906126cb565b6115ac600033611503565b1580156115e057506115de7f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4533611503565b155b1561160057604051630eabe6ed60e01b8152336004820152602401610d67565b61160861287f565b6001600160a01b03811660009081526101d1602052604090206001015442811115611671576040517f34f3c9cf0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610d67565b6001600160a01b03821660009081526101d160205260409020546116969083906128d3565b6001600160a01b03821660008181526101d16020908152604080832083815560010183905561019a9091529020600201547fa9fe2dca31a7e17f0b1fd319f0b30fb7eb9b6ccc77a73c8e833b20803a18f4739060405190815260200160405180910390a25050565b611707336110bb565b1561171657610cb082826129e5565b61172e600080516020614e8d83398151915233611503565b1561173d57610cb08282612a08565b610199546001600160a01b0316330361175a57610cb08282612a8d565b604051630c3373f760e21b8152336004820152602401610d67565b611780600033611503565b1580156117b457506117b27f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4533611503565b155b156117d457604051630eabe6ed60e01b8152336004820152602401610d67565b6001600160a01b038316600090815261019a60205260409020600201548083111561182b57604051637d5e3dfb60e11b81526001600160a01b03851660048201526024810184905260448101829052606401610d67565b611836848484612b15565b82158015611842575081155b156110b5576110b5600080516020614e8d83398151915285612b6a565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190838110156118fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610d67565b6119098286868403611df5565b506001949350505050565b600061191f836121d9565b610c888383612bb6565b7facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf6119538161251a565b610e81612bc4565b61016254600160a81b900460ff161515811515036119a5576040517f9f0e7d7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156119b8576119b36125f7565b611a2e565b6119e27feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0633611503565b1580156119f757506119f5600033611503565b155b15611a2e576040517f180b21fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101628054911515600160a81b0260ff60a81b19909216919091179055565b610c5f612c02565b61016254600160a01b900460ff1615611a9a576040517ff20d240500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016280547fffffffffffffffffffffff000000000000000000000000000000000000000000166001600160a01b0390921691909117600160a01b179055565b600081815261013060205260408120610ba790612c83565b611afc600061251a565b611b0461287f565b611b1c600080516020614e8d83398151915283612c8d565b6001600160a01b038216600090815261019a6020526040902060020154811015611b97578181611b65846001600160a01b0316600090815261019a602052604090206002015490565b604051637d5e3dfb60e11b81526001600160a01b03909316600484015260248301919091526044820152606401610d67565b6000611ba66201518042614bcc565b60408051808201825284815260208082018481526001600160a01b03881660008181526101d184528590209351845590516001909301929092558251868152908101849052929350917f72d7cf1baaca85718c75c17aa2992dd9d7b93a9f3911be475af37078dad40a3e91015b60405180910390a2505050565b83421115611c705760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610d67565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611c9f8c612ce6565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611cfa82612d0e565b90506000611d0a82878787612d56565b9050896001600160a01b0316816001600160a01b031614611d6d5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610d67565b611d788a8a8a611df5565b50505050505050505050565b610cb08282612d7e565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480610ba757507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610ba7565b6001600160a01b038316611e705760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b038216611eec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b610164546001600160a01b0316331480611f735750610163546001600160a01b031633145b6110f95760405162461bcd60e51b815260206004820152603e60248201527f76655553443a2043616c6c6572206973206e656974686572205661756c744d6160448201527f6e616765724469616d6f6e64206e6f722053746162696c697479506f6f6c00006064820152608401610d67565b6001600160a01b0383166120615760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0382166120dd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0383166000908152603360205260409020548181101561216c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121cc9086815260200190565b60405180910390a36110b5565b306001600160a01b03821603610e815760405162461bcd60e51b815260206004820152604260248201527f76655553443a2043616e6e6f74207472616e7366657220746f6b656e7320646960448201527f726563746c7920746f2074686520766555534420746f6b656e20636f6e74726160648201527f6374000000000000000000000000000000000000000000000000000000000000608482015260a401610d67565b60003361228b858285612e5c565b611909858585611fe5565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468214806122e357507fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682145b156122fa576122f06125f7565b610cb08282612e67565b610cb08282612fd8565b6000610cbe612ff4565b6001600160a01b038116331461238c5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610d67565b610cb08282612b6a565b61016254600160a81b900460ff166110f95760405162461bcd60e51b815260206004820152601a60248201527f76655553443a204d696e74696e672069732064697361626c65640000000000006044820152606401610d67565b806101ce60008282546124039190614bcc565b90915550610cb090508282613068565b61242a600080516020614e8d83398151915261251a565b33612436818484613082565b826001600160a01b0316816001600160a01b03167fe3bac5b9cc7159f3586d12aeb1bb8a028deddd03280eae86def97a83d380c97e84612475856111e2565b60408051928352602083019190915201611f41565b610199546001600160a01b031633146124b857604051637ddde23760e01b8152336004820152602401610d67565b610199546124d0906001600160a01b03168383613082565b610199546040518281526001600160a01b038481169216907f75bf99f7db25a13871e188edd8a7e112d434444f9d952848f4c6ccd8ae05356a906020015b60405180910390a35050565b610e818133612c8d565b610199546001600160a01b031661deac190161256c576040517f30e0e3ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166125ac576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125b58161309e565b610199546001600160a01b031661deac1901610e81576040517f78768828eab66fdac6a78204b2027bd64810f2cbf324c908f5f5999b9018d1d790600090a150565b610166546001600160a01b031633146110f95760405162461bcd60e51b815260206004820152602160248201527f76655553443a2043616c6c6572206973206e6f742074686520676f7665726e6f60448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6126806130f3565b61019b805460ff191690557f2cc50ebc4cffd414482dbc0d6ba24ba02e8e58e3174f391834ff08642aeabd87335b6040516001600160a01b03909116815260200160405180910390a1565b8383811461273b57426126e16201518085614bcc565b116126ed57508261273b565b426126fb6201518085614bcc565b111561273b57600061270d8442614c1a565b9050600061271b8483614c2d565b6127259084614bcc565b90508581116127345780612736565b855b925050505b949350505050565b6000806101cf541261275757506101cf5490565b6101cf54610cbe90614c44565b606060678054610bbc90614b82565b606060688054610bbc90614b82565b600054610100900460ff166127ed5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b6127f68161316c565b6127fe613450565b600a6101d05561281d600080516020614e8d83398151915260006134c3565b6128487facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf60006134c3565b610e817f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4560006134c3565b6000610c888383613516565b61019b5460ff16156110f95760405162461bcd60e51b815260206004820152601f60248201527f4272696467655061757361626c653a206272696467696e6720706175736564006044820152606401610d67565b806128e16002600019614bf8565b8111156129015760405163f596480960e01b815260040160405180910390fd5b6001600160a01b038316600090815261019a602052604081206002015490612928856111e2565b6001600160a01b038616600090815261019a602052604090206002018590559050612954848383613540565b6001600160a01b038616600090815261019a602052604090206003015561297e6201518085614bf8565b6001600160a01b038616600081815261019a60205260409081902060018101939093554290925590517f73a45fb9bdf4314eef462282cb306b703aff37ebf3d8365e1cb184b6e4f81e26906129d69087815260200190565b60405180910390a25050505050565b806101ce60008282546129f89190614c1a565b90915550610cb090508282613597565b612a1061287f565b612a27600080516020614e8d83398151915261251a565b336001600160a01b0383168114612a4357612a43838284612e5c565b612a4e8184846135a9565b826001600160a01b0316816001600160a01b03167f23d4617ad0c271f3212274f0c9e7f4e0297eb842756610af3d94aee34be4b9ba8461247585611569565b610199546001600160a01b03163314612abb57604051630c3373f760e21b8152336004820152602401610d67565b61019954612ad3906001600160a01b031683836135a9565b610199546040518281526001600160a01b038481169216907fce5305b40b7abd03afee067707e7d214b3e1eec39cdaa19123e9405bc5e60f3c9060200161250e565b612b1f83836128d3565b612b2983826135cd565b60408051838152602081018390526001600160a01b038516917f93f3bbfe8cfb354ec059175107653f49f6eb479a8622a7d83866ea015435c9449101611c13565b600080516020614e8d8339815191528203612bac57612b8b81600080612b15565b6001600160a01b03811660009081526101d160205260408120818155600101555b610cb082826136d6565b600033610c4d818585611fe5565b612bcc61287f565b61019b805460ff191660011790557faf0e7bc1034b70c2371e91aed036232c1e293fbb61b07a9b5f8d6b069b63e8096126ae3390565b610164546001600160a01b031633146110f95760405162461bcd60e51b815260206004820152602660248201527f76655553443a2043616c6c6572206973206e6f74207468652053746162696c6960448201527f7479506f6f6c00000000000000000000000000000000000000000000000000006064820152608401610d67565b6000610ba7825490565b612c978282611503565b610cb057612ca4816136f9565b612caf83602061370b565b604051602001612cc0929190614c7c565b60408051601f198184030181529082905262461bcd60e51b8252610d6791600401614794565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b6000610ba7612d1b612304565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000612d67878787876138ec565b91509150612d74816139b0565b5095945050505050565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468203612de857604080516001600160a01b0383168152600060208201527f73d12e94857635af82b7d94f9c40b816942c33758efc90aee65a314c96415149910160405180910390a15b7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068203612e5257604080516001600160a01b0383168152600060208201527f19d9f64b5a71d1b38748c6d0200adb8687cbfdd74263adc72ffdf8d0b6225aba910160405180910390a15b610cb08282613b15565b610c6a838383613b31565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468203612ee857612ea6600080516020614e8d83398151915282611503565b15612ee357604051639c2b7ba760e01b81526001600160a01b0382166004820152600080516020614e8d8339815191526024820152604401610d67565b612fce565b600080516020614e8d8339815191528203612fce57612f277ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744682611503565b15612f7657604051639c2b7ba760e01b81526001600160a01b03821660048201527ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74466024820152604401610d67565b612f7f816110bb565b15612fce57604051639c2b7ba760e01b81526001600160a01b03821660048201527f50726f746f636f6c204275726e657200000000000000000000000000000000006024820152604401610d67565b610cb08282613bbd565b612fe182610c8f565b612fea8161251a565b610c6a8383612e67565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61301f613be0565b613027613c39565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b613070612396565b613078613c6a565b610cb08282613ce5565b61308a61287f565b613095838383613cef565b610c6a81613d49565b61019980546001600160a01b0319166001600160a01b0383169081179091556040519081527ffa2e15ea41196e438f0593ecdd6036acd83bdfcd39d627b77c17eab43f376a399060200160405180910390a150565b61019b5460ff166110f95760405162461bcd60e51b815260206004820152602360248201527f4272696467655061757361626c653a206272696467696e67206e6f742070617560448201527f73656400000000000000000000000000000000000000000000000000000000006064820152608401610d67565b600054610100900460ff166131d75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b61324b6040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e0000000000000000000000008152506040518060400160405280600581526020017f7665555344000000000000000000000000000000000000000000000000000000815250613de9565b6132896040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e000000000000000000000000815250613e5e565b613291613f08565b610162805460ff60a81b1916600160a81b179055805161016380546001600160a01b039283166001600160a01b0319918216179091556020830151610164805491841691831691909117905560408301516101658054918416918316919091179055606083015161016680549190931691161790556133317ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744660006134c3565b61335c7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0660006134c3565b6133877feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0660006134c3565b6133986000801b8260800151612e67565b6133c67ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468260400151612e67565b6133f47fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260000151612e67565b6134227fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260200151612e67565b610e817fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260400151612e67565b600054610100900460ff166134bb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b6110f9613f73565b60006134ce83610c8f565b600084815260fe6020526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600082600001828154811061352d5761352d614cfd565b9060005260206000200154905092915050565b60008084841115613576576135558585614c1a565b905080831161356557600061356f565b61356f8184614c1a565b915061358f565b6135808486614c1a565b905061358c8184614bcc565b91505b509392505050565b61359f613feb565b610cb08282614066565b6135b161287f565b6135bc838383614070565b610c6a6135c882614c44565b613d49565b806135db6002600019614bf8565b8111156135fb5760405163f596480960e01b815260040160405180910390fd5b6001600160a01b038316600090815261019a60205260408120600601549061362285611569565b6001600160a01b038616600090815261019a60205260409020600601859055905061364e848383613540565b6001600160a01b038616600090815261019a60205260409020600701556136786201518085614bf8565b6001600160a01b038616600081815261019a60205260409081902060058101939093554260049093019290925590517f1d819f0022f2d01a98a05488bb5993957bc7280bf8aac3550af10b75e84e9c50906129d69087815260200190565b6136e082826140ca565b600082815261013060205260409020610c6a9082614131565b6060610ba76001600160a01b03831660145b6060600061371a836002614c2d565b613725906002614bcc565b67ffffffffffffffff81111561373d5761373d61497e565b6040519080825280601f01601f191660200182016040528015613767576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061379e5761379e614cfd565b60200101906001600160f81b031916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106137e9576137e9614cfd565b60200101906001600160f81b031916908160001a905350600061380d846002614c2d565b613818906001614bcc565b90505b600181111561389d577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061385957613859614cfd565b1a60f81b82828151811061386f5761386f614cfd565b60200101906001600160f81b031916908160001a90535060049490941c9361389681614d13565b905061381b565b508315610c885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d67565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561392357506000905060036139a7565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613977573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166139a0576000600192509250506139a7565b9150600090505b94509492505050565b60008160048111156139c4576139c4614d2a565b036139cc5750565b60018160048111156139e0576139e0614d2a565b03613a2d5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610d67565b6002816004811115613a4157613a41614d2a565b03613a8e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610d67565b6003816004811115613aa257613aa2614d2a565b03610e815760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b613b1e82610c8f565b613b278161251a565b610c6a8383612b6a565b6001600160a01b0383811660009081526034602090815260408083209386168352929052205460001981146110b55781811015613bb05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d67565b6110b58484848403611df5565b613bc78282614146565b600082815261013060205260409020610c6a90826141cc565b600080613beb612764565b805190915015613c02578051602090910120919050565b6065548015613c115792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080613c44612773565b805190915015613c5b578051602090910120919050565b6066548015613c115792915050565b613c733361152e565b6110f95760405162461bcd60e51b815260206004820152602660248201527f7665555344546f6b656e3a2043616c6c6572206973206e6f742056616c69642060448201527f4d696e74657200000000000000000000000000000000000000000000000000006064820152608401610d67565b610cb082826141e1565b610199546001600160a01b03848116911614613d3f576000613d10846111e2565b905081811015613d33576040516305b4215560e11b815260040160405180910390fd5b613d3d84836142a2565b505b610c6a8282613ce5565b806101cf6000828254613d5c9190614d40565b90915550506000811380613d74575060006101cf5412155b15613d7c5750565b6000613d86611217565b90506101d054811015610cb0576101d0546101ce546101cf546040517f0515664b00000000000000000000000000000000000000000000000000000000815260048101939093526024830184905260448301919091526064820152608401610d67565b600054610100900460ff16613e545760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b610cb082826142fa565b600054610100900460ff16613ec95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b610e81816040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525061437e565b600054610100900460ff166110f95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b600054610100900460ff16613fde5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b61019b805460ff19169055565b613ff4336110bb565b6110f95760405162461bcd60e51b815260206004820152602c60248201527f76655553443a2043616c6c6572206973206e6f7420612076616c69642070726f60448201527f746f636f6c206275726e657200000000000000000000000000000000000000006064820152608401610d67565b610cb08282614411565b610199546001600160a01b038481169116146140c057600061409184611569565b9050818110156140b4576040516305b4215560e11b815260040160405180910390fd5b6140be848361457c565b505b610c6a8282614066565b6140d48282611503565b15610cb057600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610c88836001600160a01b0384166145d8565b6141508282611503565b610cb057600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556141883390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610c88836001600160a01b0384166146cb565b6001600160a01b0382166142375760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d67565b80603560008282546142499190614bcc565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006142ad836111e2565b6001600160a01b038416600090815261019a6020526040902042905590506142d58282614c1a565b6001600160a01b03909316600090815261019a60205260409020600301929092555050565b600054610100900460ff166143655760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b60366143718382614db6565b506037610c6a8282614db6565b600054610100900460ff166143e95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610d67565b60676143f58382614db6565b5060686144028282614db6565b50506000606581905560665550565b6001600160a01b03821661448d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b0382166000908152603360205260409020548181101561451c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610d67565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600061458783611569565b6001600160a01b038416600090815261019a602052604090204260049091015590506145b38282614c1a565b6001600160a01b03909316600090815261019a60205260409020600701929092555050565b600081815260018301602052604081205480156146c15760006145fc600183614c1a565b855490915060009061461090600190614c1a565b905081811461467557600086600001828154811061463057614630614cfd565b906000526020600020015490508087600001848154811061465357614653614cfd565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061468657614686614e76565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610ba7565b6000915050610ba7565b600081815260018301602052604081205461471257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ba7565b506000610ba7565b60006020828403121561472c57600080fd5b81356001600160e01b031981168114610c8857600080fd5b60005b8381101561475f578181015183820152602001614747565b50506000910152565b60008151808452614780816020860160208601614744565b601f01601f19169290920160200192915050565b602081526000610c886020830184614768565b80356001600160a01b03811681146147be57600080fd5b919050565b600080604083850312156147d657600080fd5b6147df836147a7565b946020939093013593505050565b6000602082840312156147ff57600080fd5b610c88826147a7565b60008060006060848603121561481d57600080fd5b614826846147a7565b9250614834602085016147a7565b9150604084013590509250925092565b60006020828403121561485657600080fd5b5035919050565b6000806040838503121561487057600080fd5b82359150614880602084016147a7565b90509250929050565b60008060006060848603121561489e57600080fd5b6148a7846147a7565b92506148b5602085016147a7565b91506148c3604085016147a7565b90509250925092565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e08184015261490860e084018a614768565b838103604085015261491a818a614768565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561496c57835183529284019291840191600101614950565b50909c9b505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600060a082840312156149a657600080fd5b60405160a0810181811067ffffffffffffffff821117156149c9576149c961497e565b6040526149d5836147a7565b81526149e3602084016147a7565b60208201526149f4604084016147a7565b6040820152614a05606084016147a7565b6060820152614a16608084016147a7565b60808201529392505050565b60008060408385031215614a3557600080fd5b50508035926020909101359150565b600080600060608486031215614a5957600080fd5b614a62846147a7565b95602085013595506040909401359392505050565b600060208284031215614a8957600080fd5b81358015158114610c8857600080fd5b82518152602080840151818301526040808501518184015260608086015181850152845160808501529184015160a084015283015160c083015282015160e08201526101008101610c88565b600080600080600080600060e0888a031215614b0057600080fd5b614b09886147a7565b9650614b17602089016147a7565b95506040880135945060608801359350608088013560ff81168114614b3b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215614b6b57600080fd5b614b74836147a7565b9150614880602084016147a7565b600181811c90821680614b9657607f821691505b602082108103612d0857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610ba757610ba7614bb6565b600060018201614bf157614bf1614bb6565b5060010190565b600082614c1557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610ba757610ba7614bb6565b8082028115828204841417610ba757610ba7614bb6565b60007f80000000000000000000000000000000000000000000000000000000000000008203614c7557614c75614bb6565b5060000390565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614cb4816017850160208801614744565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614cf1816028840160208801614744565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b600081614d2257614d22614bb6565b506000190190565b634e487b7160e01b600052602160045260246000fd5b8082018281126000831280158216821582161715614d6057614d60614bb6565b505092915050565b601f821115610c6a57600081815260208120601f850160051c81016020861015614d8f5750805b601f850160051c820191505b81811015614dae57828155600101614d9b565b505050505050565b815167ffffffffffffffff811115614dd057614dd061497e565b614de481614dde8454614b82565b84614d68565b602080601f831160018114614e195760008415614e015750858301515b600019600386901b1c1916600185901b178555614dae565b600085815260208120601f198616915b82811015614e4857888601518255948401946001909101908401614e29565b5085821015614e665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfe52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5fa26469706673582212206ac8c905f385ea49eb30e6eba2adcdb753176dcfeb4ae58bb9fc70e50bc3596a64736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
