010000000131bc10d27a37b545bc41557dc1b8ee90c44edd6e705330a41cd45e541cfd4bac020000006a473044022076289bb34829eac1c9d701772fd8a49889b720a0b3191c82854798ba0b40b20a0220223127d0e56eef8c05ff5c7d14d3757132e48ca047d2e5feb2294fdcdf00f08701210235b804a6277e4371ab61096f34e70fc07c671f7d875e700bcac6bfc24577b432ffffffff020000000000000000fd54275403a0252601284d492760806040523480156200001157600080fd5b50604080518082018252600781527f5174756d4e46540000000000000000000000000000000000000000000000000060208083019182528351808501909452600384527f514e5400000000000000000000000000000000000000000000000000000000009084015281519192916200008c91600091620000ab565b508051620000a2906001906020840190620000ab565b505050620001a7565b828054620000b99062000151565b90600052602060002090601f016020900481019282620000dd576000855562000128565b82601f10620000f857805160ff191683800117855562000128565b8280016001018555821562000128579182015b82811115620001285782518255916020019190600101906200010b565b50620001369291506200013a565b5090565b5b808211156200013657600081556001016200013b565b600181811c908216806200016657607f821691505b60208210811415620001a1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b61259280620001b76000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636095ecda116100a2578063a22cb46511610071578063a22cb4651461026e578063b88d4fde14610281578063c87b56dd14610294578063e08ffe4a146102a7578063e985e9c5146102cc57600080fd5b80636095ecda146102205780636352211e1461024057806370a082311461025357806395d89b411461026657600080fd5b806323b872dd116100e957806323b872dd1461019857806332b7d710146101ab578063361dcd10146101cb57806342842e0e146101ec5780635184659d146101ff57600080fd5b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e610129366004612046565b610308565b60405190151581526020015b60405180910390f35b61014b61035a565b60405161013a91906122cb565b61016b610166366004612113565b6103ec565b6040516001600160a01b03909116815260200161013a565b610196610191366004611f3a565b610486565b005b6101966101a6366004611e4c565b61059c565b6101be6101b9366004612113565b6105cd565b60405161013a9190612381565b6101de6101d936600461207e565b6107f8565b60405190815260200161013a565b6101966101fa366004611e4c565b6109aa565b61021261020d366004611f63565b6109c5565b60405161013a9291906122a9565b61023361022e366004611f9e565b610cff565b60405161013a9190612296565b61016b61024e366004612113565b611081565b6101de610261366004611e00565b6110f8565b61014b61117f565b61019661027c366004611f00565b61118e565b61019661028f366004611e87565b611253565b61014b6102a2366004612113565b61128b565b6102ba6102b5366004612113565b611373565b60405161013a96959493929190612394565b61012e6102da366004611e1a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061033957506001600160e01b03198216635b5e139f60e01b145b8061035457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461036990612497565b80601f016020809104026020016040519081016040528092919081815260200182805461039590612497565b80156103e25780601f106103b7576101008083540402835291602001916103e2565b820191906000526020600020905b8154815290600101906020018083116103c557829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661046a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061049182611081565b9050806001600160a01b0316836001600160a01b031614156104ff5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610461565b336001600160a01b038216148061051b575061051b81336102da565b61058d5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610461565b610597838361155f565b505050565b6105a633826115cd565b6105c25760405162461bcd60e51b815260040161046190612330565b6105978383836116c0565b6105d5611c7e565b600682815481106105f657634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016040518060c00160405290816000820154815260200160018201805461062990612497565b80601f016020809104026020016040519081016040528092919081815260200182805461065590612497565b80156106a25780601f10610677576101008083540402835291602001916106a2565b820191906000526020600020905b81548152906001019060200180831161068557829003601f168201915b505050505081526020016002820180546106bb90612497565b80601f01602080910402602001604051908101604052809291908181526020018280546106e790612497565b80156107345780601f1061070957610100808354040283529160200191610734565b820191906000526020600020905b81548152906001019060200180831161071757829003601f168201915b5050505050815260200160038201805461074d90612497565b80601f016020809104026020016040519081016040528092919081815260200182805461077990612497565b80156107c65780601f1061079b576101008083540402835291602001916107c6565b820191906000526020600020905b8154815290600101906020018083116107a957829003601f168201915b50505091835250506004919091015463ffffffff80821660208401526401000000009091041660409091015292915050565b6000600a8263ffffffff1611158015610817575060008263ffffffff16115b61082057600080fd5b600061082c8686611860565b6040805160c08101825282815260208082018a81529282018990526060820188905263ffffffff4281166080840152871660a083015260068054600181018255600091909152825160059091027ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f810191825593518051959650929490936108da937ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40909101920190611cc0565b50604082015180516108f6916002840191602090910190611cc0565b5060608201518051610912916003840191602090910190611cc0565b5060808201516004909101805460a09093015163ffffffff9081166401000000000267ffffffffffffffff1990941692169190911791909117905560065460009061095f90600190612454565b905061096b3382611894565b6040518281527fa86d874aca24eac022f266ee05908ba2b39acb5df551b7eb8c53b3a001e8d1f29060200160405180910390a19150505b949350505050565b61059783838360405180602001604052806000815250611253565b60606000808363ffffffff1667ffffffffffffffff8111156109f757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610a3057816020015b610a1d611c7e565b815260200190600190039081610a155790505b509050600085805b600654811015610cee578091508663ffffffff16831115610a615750919350909150610cf79050565b886001600160a01b0316610a7482611081565b6001600160a01b03161415610cdc5760068181548110610aa457634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016040518060c001604052908160008201548152602001600182018054610ad790612497565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0390612497565b8015610b505780601f10610b2557610100808354040283529160200191610b50565b820191906000526020600020905b815481529060010190602001808311610b3357829003601f168201915b50505050508152602001600282018054610b6990612497565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9590612497565b8015610be25780601f10610bb757610100808354040283529160200191610be2565b820191906000526020600020905b815481529060010190602001808311610bc557829003601f168201915b50505050508152602001600382018054610bfb90612497565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2790612497565b8015610c745780601f10610c4957610100808354040283529160200191610c74565b820191906000526020600020905b815481529060010190602001808311610c5757829003601f168201915b50505091835250506004919091015463ffffffff8082166020840152640100000000909104166040909101528451859085908110610cc257634e487b7160e01b600052603260045260246000fd5b60200260200101819052508280610cd8906124d2565b9350505b80610ce6816124d2565b915050610a38565b50919350909150505b935093915050565b60606000825167ffffffffffffffff811115610d2b57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d6457816020015b610d51611c7e565b815260200190600190039081610d495790505b5090506000805b84518110156110785760006006868381518110610d9857634e487b7160e01b600052603260045260246000fd5b602002602001015181548110610dbe57634e487b7160e01b600052603260045260246000fd5b6000918252602090912060059091020160040154640100000000900463ffffffff161115611066576006858281518110610e0857634e487b7160e01b600052603260045260246000fd5b602002602001015181548110610e2e57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600502016040518060c001604052908160008201548152602001600182018054610e6190612497565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8d90612497565b8015610eda5780601f10610eaf57610100808354040283529160200191610eda565b820191906000526020600020905b815481529060010190602001808311610ebd57829003601f168201915b50505050508152602001600282018054610ef390612497565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1f90612497565b8015610f6c5780601f10610f4157610100808354040283529160200191610f6c565b820191906000526020600020905b815481529060010190602001808311610f4f57829003601f168201915b50505050508152602001600382018054610f8590612497565b80601f0160208091040260200160405190810160405280929190818152602001828054610fb190612497565b8015610ffe5780601f10610fd357610100808354040283529160200191610ffe565b820191906000526020600020905b815481529060010190602001808311610fe157829003601f168201915b50505091835250506004919091015463ffffffff808216602084015264010000000090910416604090910152835184908490811061104c57634e487b7160e01b600052603260045260246000fd5b60200260200101819052508180611062906124d2565b9250505b80611070816124d2565b915050610d6b565b50909392505050565b6000818152600260205260408120546001600160a01b0316806103545760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610461565b60006001600160a01b0382166111635760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610461565b506001600160a01b031660009081526003602052604090205490565b60606001805461036990612497565b6001600160a01b0382163314156111e75760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610461565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61125d33836115cd565b6112795760405162461bcd60e51b815260040161046190612330565b611285848484846118b2565b50505050565b6000818152600260205260409020546060906001600160a01b031661130a5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610461565b600061132160408051602081019091526000815290565b90506000815111611341576040518060200160405280600081525061136c565b8061134b846118e5565b60405160200161135c92919061222a565b6040516020818303038152906040525b9392505050565b6006818154811061138357600080fd5b600091825260209091206005909102018054600182018054919350906113a890612497565b80601f01602080910402602001604051908101604052809291908181526020018280546113d490612497565b80156114215780601f106113f657610100808354040283529160200191611421565b820191906000526020600020905b81548152906001019060200180831161140457829003601f168201915b50505050509080600201805461143690612497565b80601f016020809104026020016040519081016040528092919081815260200182805461146290612497565b80156114af5780601f10611484576101008083540402835291602001916114af565b820191906000526020600020905b81548152906001019060200180831161149257829003601f168201915b5050505050908060030180546114c490612497565b80601f01602080910402602001604051908101604052809291908181526020018280546114f090612497565b801561153d5780601f106115125761010080835404028352916020019161153d565b820191906000526020600020905b81548152906001019060200180831161152057829003601f168201915b5050506004909301549192505063ffffffff8082169164010000000090041686565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061159482611081565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166116465760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610461565b600061165183611081565b9050806001600160a01b0316846001600160a01b0316148061168c5750836001600160a01b0316611681846103ec565b6001600160a01b0316145b806109a257506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff166109a2565b826001600160a01b03166116d382611081565b6001600160a01b03161461173b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610461565b6001600160a01b03821661179d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610461565b6117a860008261155f565b6001600160a01b03831660009081526003602052604081208054600192906117d1908490612454565b90915550506001600160a01b03821660009081526003602052604081208054600192906117ff908490612428565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000828260405160200161187592919061222a565b60408051601f1981840301815291905280516020909101209392505050565b6118ae8282604051806020016040528060008152506119ff565b5050565b6118bd8484846116c0565b6118c984848484611a32565b6112855760405162461bcd60e51b8152600401610461906122de565b6060816119095750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611933578061191d816124d2565b915061192c9050600a83612440565b915061190d565b60008167ffffffffffffffff81111561195c57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611986576020820181803683370190505b5090505b84156109a25761199b600183612454565b91506119a8600a866124ed565b6119b3906030612428565b60f81b8183815181106119d657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506119f8600a86612440565b945061198a565b611a098383611b3c565b611a166000848484611a32565b6105975760405162461bcd60e51b8152600401610461906122de565b60006001600160a01b0384163b15611b3457604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611a76903390899088908890600401612259565b602060405180830381600087803b158015611a9057600080fd5b505af1925050508015611ac0575060408051601f3d908101601f19168201909252611abd91810190612062565b60015b611b1a573d808015611aee576040519150601f19603f3d011682016040523d82523d6000602084013e611af3565b606091505b508051611b125760405162461bcd60e51b8152600401610461906122de565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109a2565b5060016109a2565b6001600160a01b038216611b925760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610461565b6000818152600260205260409020546001600160a01b031615611bf75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610461565b6001600160a01b0382166000908152600360205260408120805460019290611c20908490612428565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040518060c0016040528060008152602001606081526020016060815260200160608152602001600063ffffffff168152602001600063ffffffff1681525090565b828054611ccc90612497565b90600052602060002090601f016020900481019282611cee5760008555611d34565b82601f10611d0757805160ff1916838001178555611d34565b82800160010185558215611d34579182015b82811115611d34578251825591602001919060010190611d19565b50611d40929150611d44565b5090565b5b80821115611d405760008155600101611d45565b600067ffffffffffffffff831115611d7357611d7361252d565b611d86601f8401601f19166020016123f7565b9050828152838383011115611d9a57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114611dc857600080fd5b919050565b600082601f830112611ddd578081fd5b61136c83833560208501611d59565b803563ffffffff81168114611dc857600080fd5b600060208284031215611e11578081fd5b61136c82611db1565b60008060408385031215611e2c578081fd5b611e3583611db1565b9150611e4360208401611db1565b90509250929050565b600080600060608486031215611e60578081fd5b611e6984611db1565b9250611e7760208501611db1565b9150604084013590509250925092565b60008060008060808587031215611e9c578081fd5b611ea585611db1565b9350611eb360208601611db1565b925060408501359150606085013567ffffffffffffffff811115611ed5578182fd5b8501601f81018713611ee5578182fd5b611ef487823560208401611d59565b91505092959194509250565b60008060408385031215611f12578182fd5b611f1b83611db1565b915060208301358015158114611f2f578182fd5b809150509250929050565b60008060408385031215611f4c578182fd5b611f5583611db1565b946020939093013593505050565b600080600060608486031215611f77578283fd5b611f8084611db1565b925060208401359150611f9560408501611dec565b90509250925092565b60006020808385031215611fb0578182fd5b823567ffffffffffffffff80821115611fc7578384fd5b818501915085601f830112611fda578384fd5b813581811115611fec57611fec61252d565b8060051b9150611ffd8483016123f7565b8181528481019084860184860187018a1015612017578788fd5b8795505b8386101561203957803583526001959095019491860191860161201b565b5098975050505050505050565b600060208284031215612057578081fd5b813561136c81612543565b600060208284031215612073578081fd5b815161136c81612543565b60008060008060808587031215612093578384fd5b843567ffffffffffffffff808211156120aa578586fd5b6120b688838901611dcd565b955060208701359150808211156120cb578485fd5b6120d788838901611dcd565b945060408701359150808211156120ec578384fd5b506120f987828801611dcd565b92505061210860608601611dec565b905092959194509250565b600060208284031215612124578081fd5b5035919050565b600081518084526020808501808196508360051b81019150828601855b858110156121725782840389526121608483516121ab565b98850198935090840190600101612148565b5091979650505050505050565b6000815180845261219781602086016020860161246b565b601f01601f19169290920160200192915050565b805182526000602082015160c060208501526121ca60c085018261217f565b9050604083015184820360408601526121e3828261217f565b915050606083015184820360608601526121fd828261217f565b915050608083015163ffffffff80821660808701528060a08601511660a087015250508091505092915050565b6000835161223c81846020880161246b565b83519083019061225081836020880161246b565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061228c9083018461217f565b9695505050505050565b60208152600061136c602083018461212b565b6040815260006122bc604083018561212b565b90508260208301529392505050565b60208152600061136c602083018461217f565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60208152600061136c60208301846121ab565b86815260c0602082015260006123ad60c083018861217f565b82810360408401526123bf818861217f565b905082810360608401526123d3818761217f565b91505063ffffffff808516608084015280841660a084015250979650505050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156124205761242061252d565b604052919050565b6000821982111561243b5761243b612501565b500190565b60008261244f5761244f612517565b500490565b60008282101561246657612466612501565b500390565b60005b8381101561248657818101518382015260200161246e565b838111156112855750506000910152565b600181811c908216806124ab57607f821691505b602082108114156124cc57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156124e6576124e6612501565b5060010190565b6000826124fc576124fc612517565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461255957600080fd5b5056fea2646970667358221220ce6180f1d994399619ed3deed6f2d6316b78b4d9dbacf4310d6c09739675464464736f6c63430008040033c11014a801000000001976a914b92d42285f559cd17668498b4f6261ae359e046588ac00000000