{
  "_format": "hh-sol-artifact-1",
  "contractName": "PositionMock",
  "sourceName": "contracts/mocks/PositionMock.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_setTotalSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_componentPreviousBalance",
          "type": "uint256"
        }
      ],
      "name": "testCalculateAndEditDefaultPosition",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_setTokenSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_preTotalNotional",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_postTotalNotional",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_prePositionUnit",
          "type": "uint256"
        }
      ],
      "name": "testCalculateDefaultEditPositionUnit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newUnit",
          "type": "uint256"
        }
      ],
      "name": "testEditDefaultPosition",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_module",
          "type": "address"
        },
        {
          "internalType": "int256",
          "name": "_newUnit",
          "type": "int256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "testEditExternalPosition",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_setTokenSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_totalNotional",
          "type": "uint256"
        }
      ],
      "name": "testGetDefaultPositionUnit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_setTokenSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_positionUnit",
          "type": "uint256"
        }
      ],
      "name": "testGetDefaultTotalNotional",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        }
      ],
      "name": "testGetDefaultTrackedBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        }
      ],
      "name": "testHasDefaultPosition",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        }
      ],
      "name": "testHasExternalPosition",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_unit",
          "type": "uint256"
        }
      ],
      "name": "testHasSufficientDefaultUnits",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ISetToken",
          "name": "_setToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_component",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_module",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_unit",
          "type": "uint256"
        }
      ],
      "name": "testHasSufficientExternalUnits",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506116e1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a6c10f7c11610071578063a6c10f7c14610152578063a8dccfa414610165578063ad91431114610185578063c4d66de814610198578063fa688e3d146101ab578063fcab8797146101be576100b4565b8063068f42eb146100b9578063088f08bc146100e25780630cffd362146100f757806314d0d5ef1461011957806326517c481461012c5780634699427b1461013f575b600080fd5b6100cc6100c73660046111c4565b6101d1565b6040516100d991906114ea565b60405180910390f35b6100f56100f03660046111fc565b6101e6565b005b61010a610105366004611359565b6101fa565b6040516100d993929190611656565b6100cc6101273660046111c4565b61021b565b6100cc61013a366004611319565b610227565b6100f561014d366004611319565b61023c565b6100cc6101603660046112c9565b61024c565b6101786101733660046113b6565b610263565b6040516100d9919061164d565b6101786101933660046113b6565b61026f565b6100f56101a63660046111a8565b61027b565b6101786101b93660046113d7565b6102ca565b6101786101cc3660046111c4565b6102d8565b60006101dd83836102e4565b90505b92915050565b6101f3858585858561036b565b5050505050565b600080600061020b8787878761092c565b9250925092509450945094915050565b60006101dd8383610a72565b6000610234848484610afe565b949350505050565b610247838383610b8f565b505050565b600061025a85858585610d0d565b95945050505050565b60006101dd8383610da1565b60006101dd8383610db3565b806001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156102b657600080fd5b505af11580156101f3573d6000803e3d6000fd5b600061025a85858585610dc5565b60006101dd8383610e14565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b81526004016103139190611453565b60206040518083038186803b15801561032b57600080fd5b505afa15801561033f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610363919061139e565b139392505050565b81156106605760405163df5e9b2960e01b81526001600160a01b0386169063df5e9b299061039d908790600401611453565b60206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190611188565b6104b4576040516304e3532760e41b81526001600160a01b03861690634e3532709061041d908790600401611453565b600060405180830381600087803b15801561043757600080fd5b505af115801561044b573d6000803e3d6000fd5b505060405163ea0ee55960e01b81526001600160a01b038816925063ea0ee559915061047d9087908790600401611467565b600060405180830381600087803b15801561049757600080fd5b505af11580156104ab573d6000803e3d6000fd5b50505050610597565b604051637d96659360e01b81526001600160a01b03861690637d966593906104e29087908790600401611467565b60206040518083038186803b1580156104fa57600080fd5b505afa15801561050e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105329190611188565b6105975760405163ea0ee55960e01b81526001600160a01b0386169063ea0ee559906105649087908790600401611467565b600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050505b6040516363a90fc160e01b81526001600160a01b038616906363a90fc1906105c7908790879087906004016114ad565b600060405180830381600087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b50506040516326898fe160e01b81526001600160a01b03881692506326898fe1915061062990879087908690600401611481565b600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b505050506101f3565b8051156106885760405162461bcd60e51b815260040161067f906115ce565b60405180910390fd5b6040516308bafae960e21b81526001600160a01b038616906322ebeba4906106b69087908790600401611467565b60206040518083038186803b1580156106ce57600080fd5b505afa1580156106e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610706919061139e565b156101f35760405163a7bdad0360e01b81526060906001600160a01b0387169063a7bdad039061073a908890600401611453565b60006040518083038186803b15801561075257600080fd5b505afa158015610766573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261078e91908101906110dd565b6040516366cb8d2f60e01b81529091506001600160a01b038716906366cb8d2f906107bd908890600401611453565b60206040518083038186803b1580156107d557600080fd5b505afa1580156107e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080d919061139e565b15801561081b575080516001145b156108c457836001600160a01b03168160008151811061083757fe5b60200260200101516001600160a01b0316146108655760405162461bcd60e51b815260040161067f9061153d565b604051636f86c89760e01b81526001600160a01b03871690636f86c89790610891908890600401611453565b600060405180830381600087803b1580156108ab57600080fd5b505af11580156108bf573d6000803e3d6000fd5b505050505b60405163acf3f07760e01b81526001600160a01b0387169063acf3f077906108f29088908890600401611467565b600060405180830381600087803b15801561090c57600080fd5b505af1158015610920573d6000803e3d6000fd5b50505050505050505050565b600080600080866001600160a01b03166370a08231896040518263ffffffff1660e01b815260040161095e9190611453565b60206040518083038186803b15801561097657600080fd5b505afa15801561098a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ae919061139e565b90506000610a36896001600160a01b03166366cb8d2f8a6040518263ffffffff1660e01b81526004016109e19190611453565b60206040518083038186803b1580156109f957600080fd5b505afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a31919061139e565b610f1e565b905060008215610a5357610a4c88888585610dc5565b9050610a57565b5060005b610a628a8a83610b8f565b9199909850909650945050505050565b600080836001600160a01b031663a7bdad03846040518263ffffffff1660e01b8152600401610aa19190611453565b60006040518083038186803b158015610ab957600080fd5b505afa158015610acd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af591908101906110dd565b51119392505050565b6000610b0982610f44565b6040516366cb8d2f60e01b81526001600160a01b038616906366cb8d2f90610b35908790600401611453565b60206040518083038186803b158015610b4d57600080fd5b505afa158015610b61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b85919061139e565b1215949350505050565b6000610b9b84846102e4565b905080158015610bab5750600082115b15610c2257610bba8484610a72565b610c1d576040516304e3532760e41b81526001600160a01b03851690634e35327090610bea908690600401611453565b600060405180830381600087803b158015610c0457600080fd5b505af1158015610c18573d6000803e3d6000fd5b505050505b610c9f565b808015610c2d575081155b15610c9f57610c3c8484610a72565b610c9f57604051636f86c89760e01b81526001600160a01b03851690636f86c89790610c6c908690600401611453565b600060405180830381600087803b158015610c8657600080fd5b505af1158015610c9a573d6000803e3d6000fd5b505050505b836001600160a01b0316632ba57d1784610cb885610f44565b6040518363ffffffff1660e01b8152600401610cd59291906114d1565b600060405180830381600087803b158015610cef57600080fd5b505af1158015610d03573d6000803e3d6000fd5b5050505050505050565b6000610d1882610f44565b6040516308bafae960e21b81526001600160a01b038716906322ebeba490610d469088908890600401611467565b60206040518083038186803b158015610d5e57600080fd5b505afa158015610d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d96919061139e565b121595945050505050565b60006101dd838363ffffffff610f6916565b60006101dd828463ffffffff610f9316565b600080610de8610ddb848863ffffffff610f6916565b869063ffffffff610fb116565b9050610e0a86610dfe868463ffffffff610fb116565b9063ffffffff610f9316565b9695505050505050565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b8152600401610e439190611453565b60206040518083038186803b158015610e5b57600080fd5b505afa158015610e6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e93919061139e565b9050610234610ea182610f1e565b856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eda57600080fd5b505afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f12919061139e565b9063ffffffff610f6916565b600080821215610f405760405162461bcd60e51b815260040161067f90611508565b5090565b6000600160ff1b8210610f405760405162461bcd60e51b815260040161067f90611605565b60006101dd670de0b6b3a7640000610f87858563ffffffff610ff316565b9063ffffffff61102d16565b60006101dd82610f8785670de0b6b3a764000063ffffffff610ff316565b60006101dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061106f565b600082611002575060006101e0565b8282028284828161100f57fe5b04146101dd5760405162461bcd60e51b815260040161067f9061158d565b60006101dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061109b565b600081848411156110935760405162461bcd60e51b815260040161067f91906114f5565b505050900390565b600081836110bc5760405162461bcd60e51b815260040161067f91906114f5565b5060008385816110c857fe5b0495945050505050565b80516101e081611693565b600060208083850312156110ef578182fd5b825167ffffffffffffffff80821115611106578384fd5b81850186601f820112611117578485fd5b8051925081831115611127578485fd5b838302915061113784830161166c565b8381528481019082860184840187018a1015611151578788fd5b8794505b8585101561117b576111678a826110d2565b835260019490940193918601918601611155565b5098975050505050505050565b600060208284031215611199578081fd5b815180151581146101dd578182fd5b6000602082840312156111b9578081fd5b81356101dd81611693565b600080604083850312156111d6578081fd5b82356111e181611693565b915060208301356111f181611693565b809150509250929050565b600080600080600060a08688031215611213578081fd5b853561121e81611693565b945060208681013561122f81611693565b9450604087013561123f81611693565b935060608701359250608087013567ffffffffffffffff80821115611262578384fd5b8189018a601f820112611273578485fd5b8035925081831115611283578485fd5b611295601f8401601f1916850161166c565b91508282528a848483010111156112aa578485fd5b8284820185840137509081019091019190915293969295509093509190565b600080600080608085870312156112de578384fd5b84356112e981611693565b935060208501356112f981611693565b9250604085013561130981611693565b9396929550929360600135925050565b60008060006060848603121561132d578283fd5b833561133881611693565b9250602084013561134881611693565b929592945050506040919091013590565b6000806000806080858703121561136e578384fd5b843561137981611693565b9350602085013561138981611693565b93969395505050506040820135916060013590565b6000602082840312156113af578081fd5b5051919050565b600080604083850312156113c8578182fd5b50508035926020909101359150565b600080600080608085870312156113ec578081fd5b5050823594602084013594506040840135936060013592509050565b60008151808452815b8181101561142d57602081850181015186830182015201611411565b8181111561143e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0384811682528316602082015260606040820181905260009061025a90830184611408565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526101dd6020830184611408565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526030908201527f45787465726e616c20706f736974696f6e73206d757374206265203020746f2060408201526f1c995b5bdd994818dbdb5c1bdb995b9d60821b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526018908201527f5061737365642064617461206d757374206265206e756c6c0000000000000000604082015260600190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b90815260200190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff8111828210171561168b57600080fd5b604052919050565b6001600160a01b03811681146116a857600080fd5b5056fea2646970667358221220d2d905435fc56dce063f11009fd8c1a262158e2df3740ad7e783c2a4672fa13064736f6c634300060a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a6c10f7c11610071578063a6c10f7c14610152578063a8dccfa414610165578063ad91431114610185578063c4d66de814610198578063fa688e3d146101ab578063fcab8797146101be576100b4565b8063068f42eb146100b9578063088f08bc146100e25780630cffd362146100f757806314d0d5ef1461011957806326517c481461012c5780634699427b1461013f575b600080fd5b6100cc6100c73660046111c4565b6101d1565b6040516100d991906114ea565b60405180910390f35b6100f56100f03660046111fc565b6101e6565b005b61010a610105366004611359565b6101fa565b6040516100d993929190611656565b6100cc6101273660046111c4565b61021b565b6100cc61013a366004611319565b610227565b6100f561014d366004611319565b61023c565b6100cc6101603660046112c9565b61024c565b6101786101733660046113b6565b610263565b6040516100d9919061164d565b6101786101933660046113b6565b61026f565b6100f56101a63660046111a8565b61027b565b6101786101b93660046113d7565b6102ca565b6101786101cc3660046111c4565b6102d8565b60006101dd83836102e4565b90505b92915050565b6101f3858585858561036b565b5050505050565b600080600061020b8787878761092c565b9250925092509450945094915050565b60006101dd8383610a72565b6000610234848484610afe565b949350505050565b610247838383610b8f565b505050565b600061025a85858585610d0d565b95945050505050565b60006101dd8383610da1565b60006101dd8383610db3565b806001600160a01b0316630ffe0f1e6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156102b657600080fd5b505af11580156101f3573d6000803e3d6000fd5b600061025a85858585610dc5565b60006101dd8383610e14565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b81526004016103139190611453565b60206040518083038186803b15801561032b57600080fd5b505afa15801561033f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610363919061139e565b139392505050565b81156106605760405163df5e9b2960e01b81526001600160a01b0386169063df5e9b299061039d908790600401611453565b60206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed9190611188565b6104b4576040516304e3532760e41b81526001600160a01b03861690634e3532709061041d908790600401611453565b600060405180830381600087803b15801561043757600080fd5b505af115801561044b573d6000803e3d6000fd5b505060405163ea0ee55960e01b81526001600160a01b038816925063ea0ee559915061047d9087908790600401611467565b600060405180830381600087803b15801561049757600080fd5b505af11580156104ab573d6000803e3d6000fd5b50505050610597565b604051637d96659360e01b81526001600160a01b03861690637d966593906104e29087908790600401611467565b60206040518083038186803b1580156104fa57600080fd5b505afa15801561050e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105329190611188565b6105975760405163ea0ee55960e01b81526001600160a01b0386169063ea0ee559906105649087908790600401611467565b600060405180830381600087803b15801561057e57600080fd5b505af1158015610592573d6000803e3d6000fd5b505050505b6040516363a90fc160e01b81526001600160a01b038616906363a90fc1906105c7908790879087906004016114ad565b600060405180830381600087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b50506040516326898fe160e01b81526001600160a01b03881692506326898fe1915061062990879087908690600401611481565b600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b505050506101f3565b8051156106885760405162461bcd60e51b815260040161067f906115ce565b60405180910390fd5b6040516308bafae960e21b81526001600160a01b038616906322ebeba4906106b69087908790600401611467565b60206040518083038186803b1580156106ce57600080fd5b505afa1580156106e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610706919061139e565b156101f35760405163a7bdad0360e01b81526060906001600160a01b0387169063a7bdad039061073a908890600401611453565b60006040518083038186803b15801561075257600080fd5b505afa158015610766573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261078e91908101906110dd565b6040516366cb8d2f60e01b81529091506001600160a01b038716906366cb8d2f906107bd908890600401611453565b60206040518083038186803b1580156107d557600080fd5b505afa1580156107e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080d919061139e565b15801561081b575080516001145b156108c457836001600160a01b03168160008151811061083757fe5b60200260200101516001600160a01b0316146108655760405162461bcd60e51b815260040161067f9061153d565b604051636f86c89760e01b81526001600160a01b03871690636f86c89790610891908890600401611453565b600060405180830381600087803b1580156108ab57600080fd5b505af11580156108bf573d6000803e3d6000fd5b505050505b60405163acf3f07760e01b81526001600160a01b0387169063acf3f077906108f29088908890600401611467565b600060405180830381600087803b15801561090c57600080fd5b505af1158015610920573d6000803e3d6000fd5b50505050505050505050565b600080600080866001600160a01b03166370a08231896040518263ffffffff1660e01b815260040161095e9190611453565b60206040518083038186803b15801561097657600080fd5b505afa15801561098a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ae919061139e565b90506000610a36896001600160a01b03166366cb8d2f8a6040518263ffffffff1660e01b81526004016109e19190611453565b60206040518083038186803b1580156109f957600080fd5b505afa158015610a0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a31919061139e565b610f1e565b905060008215610a5357610a4c88888585610dc5565b9050610a57565b5060005b610a628a8a83610b8f565b9199909850909650945050505050565b600080836001600160a01b031663a7bdad03846040518263ffffffff1660e01b8152600401610aa19190611453565b60006040518083038186803b158015610ab957600080fd5b505afa158015610acd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610af591908101906110dd565b51119392505050565b6000610b0982610f44565b6040516366cb8d2f60e01b81526001600160a01b038616906366cb8d2f90610b35908790600401611453565b60206040518083038186803b158015610b4d57600080fd5b505afa158015610b61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b85919061139e565b1215949350505050565b6000610b9b84846102e4565b905080158015610bab5750600082115b15610c2257610bba8484610a72565b610c1d576040516304e3532760e41b81526001600160a01b03851690634e35327090610bea908690600401611453565b600060405180830381600087803b158015610c0457600080fd5b505af1158015610c18573d6000803e3d6000fd5b505050505b610c9f565b808015610c2d575081155b15610c9f57610c3c8484610a72565b610c9f57604051636f86c89760e01b81526001600160a01b03851690636f86c89790610c6c908690600401611453565b600060405180830381600087803b158015610c8657600080fd5b505af1158015610c9a573d6000803e3d6000fd5b505050505b836001600160a01b0316632ba57d1784610cb885610f44565b6040518363ffffffff1660e01b8152600401610cd59291906114d1565b600060405180830381600087803b158015610cef57600080fd5b505af1158015610d03573d6000803e3d6000fd5b5050505050505050565b6000610d1882610f44565b6040516308bafae960e21b81526001600160a01b038716906322ebeba490610d469088908890600401611467565b60206040518083038186803b158015610d5e57600080fd5b505afa158015610d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d96919061139e565b121595945050505050565b60006101dd838363ffffffff610f6916565b60006101dd828463ffffffff610f9316565b600080610de8610ddb848863ffffffff610f6916565b869063ffffffff610fb116565b9050610e0a86610dfe868463ffffffff610fb116565b9063ffffffff610f9316565b9695505050505050565b600080836001600160a01b03166366cb8d2f846040518263ffffffff1660e01b8152600401610e439190611453565b60206040518083038186803b158015610e5b57600080fd5b505afa158015610e6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e93919061139e565b9050610234610ea182610f1e565b856001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610eda57600080fd5b505afa158015610eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f12919061139e565b9063ffffffff610f6916565b600080821215610f405760405162461bcd60e51b815260040161067f90611508565b5090565b6000600160ff1b8210610f405760405162461bcd60e51b815260040161067f90611605565b60006101dd670de0b6b3a7640000610f87858563ffffffff610ff316565b9063ffffffff61102d16565b60006101dd82610f8785670de0b6b3a764000063ffffffff610ff316565b60006101dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061106f565b600082611002575060006101e0565b8282028284828161100f57fe5b04146101dd5760405162461bcd60e51b815260040161067f9061158d565b60006101dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061109b565b600081848411156110935760405162461bcd60e51b815260040161067f91906114f5565b505050900390565b600081836110bc5760405162461bcd60e51b815260040161067f91906114f5565b5060008385816110c857fe5b0495945050505050565b80516101e081611693565b600060208083850312156110ef578182fd5b825167ffffffffffffffff80821115611106578384fd5b81850186601f820112611117578485fd5b8051925081831115611127578485fd5b838302915061113784830161166c565b8381528481019082860184840187018a1015611151578788fd5b8794505b8585101561117b576111678a826110d2565b835260019490940193918601918601611155565b5098975050505050505050565b600060208284031215611199578081fd5b815180151581146101dd578182fd5b6000602082840312156111b9578081fd5b81356101dd81611693565b600080604083850312156111d6578081fd5b82356111e181611693565b915060208301356111f181611693565b809150509250929050565b600080600080600060a08688031215611213578081fd5b853561121e81611693565b945060208681013561122f81611693565b9450604087013561123f81611693565b935060608701359250608087013567ffffffffffffffff80821115611262578384fd5b8189018a601f820112611273578485fd5b8035925081831115611283578485fd5b611295601f8401601f1916850161166c565b91508282528a848483010111156112aa578485fd5b8284820185840137509081019091019190915293969295509093509190565b600080600080608085870312156112de578384fd5b84356112e981611693565b935060208501356112f981611693565b9250604085013561130981611693565b9396929550929360600135925050565b60008060006060848603121561132d578283fd5b833561133881611693565b9250602084013561134881611693565b929592945050506040919091013590565b6000806000806080858703121561136e578384fd5b843561137981611693565b9350602085013561138981611693565b93969395505050506040820135916060013590565b6000602082840312156113af578081fd5b5051919050565b600080604083850312156113c8578182fd5b50508035926020909101359150565b600080600080608085870312156113ec578081fd5b5050823594602084013594506040840135936060013592509050565b60008151808452815b8181101561142d57602081850181015186830182015201611411565b8181111561143e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0384811682528316602082015260606040820181905260009061025a90830184611408565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602082526101dd6020830184611408565b6020808252818101527f53616665436173743a2076616c7565206d75737420626520706f736974697665604082015260600190565b60208082526030908201527f45787465726e616c20706f736974696f6e73206d757374206265203020746f2060408201526f1c995b5bdd994818dbdb5c1bdb995b9d60821b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60208082526018908201527f5061737365642064617461206d757374206265206e756c6c0000000000000000604082015260600190565b60208082526028908201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604082015267371034b73a191a9b60c11b606082015260800190565b90815260200190565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff8111828210171561168b57600080fd5b604052919050565b6001600160a01b03811681146116a857600080fd5b5056fea2646970667358221220d2d905435fc56dce063f11009fd8c1a262158e2df3740ad7e783c2a4672fa13064736f6c634300060a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
