60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b613bf080620000f46000396000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c80636352211e1161012a578063b88d4fde116100bd578063d547741f1161008c578063eaebef6c11610071578063eaebef6c1461050e578063f0c7887514610521578063f663cde31461054857600080fd5b8063d547741f146104bf578063e985e9c5146104d257600080fd5b8063b88d4fde1461045f578063c87b56dd14610472578063d0def52114610485578063d53913931461049857600080fd5b806391d14854116100f957806391d148541461040357806395d89b411461043c578063a217fddf14610444578063a22cb4651461044c57600080fd5b80636352211e146103c257806370a08231146103d5578063805491d7146103e85780638129fc1c146103fb57600080fd5b806327272b81116101bd578063339194501161018c57806342842e0e1161017157806342842e0e1461038957806342966c681461039c5780634f6ccce7146103af57600080fd5b8063339194501461036357806336568abe1461037657600080fd5b806327272b8114610303578063282c51f3146103165780632f2ff15d1461033d5780632f745c591461035057600080fd5b80630ee1d00b116101f95780630ee1d00b146102a857806318160ddd146102bb57806323b872dd146102cd578063248a9ca3146102e057600080fd5b806301ffc9a71461022b57806306fdde0314610253578063081812fc14610268578063095ea7b314610293575b600080fd5b61023e6102393660046133e9565b61055b565b60405190151581526020015b60405180910390f35b61025b61057b565b60405161024a919061345e565b61027b610276366004613471565b61060d565b6040516001600160a01b03909116815260200161024a565b6102a66102a13660046134a6565b610634565b005b6102a66102b6366004613519565b61076b565b6099545b60405190815260200161024a565b6102a66102db36600461355b565b6108ea565b6102bf6102ee366004613471565b600090815260c9602052604090206001015490565b6102a6610311366004613597565b610971565b6102bf7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b6102a661034b366004613606565b610b65565b6102bf61035e3660046134a6565b610b8a565b6102bf610371366004613519565b610c32565b6102a6610384366004613606565b610c51565b6102a661039736600461355b565b610cdd565b6102a66103aa366004613471565b610cf8565b6102bf6103bd366004613471565b610d79565b61027b6103d0366004613471565b610e1d565b6102bf6103e3366004613632565b610e82565b6102a66103f636600461364d565b610f1c565b6102a66110a0565b61023e610411366004613606565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61025b6112c5565b6102bf600081565b6102a661045a3660046136b9565b6112d4565b6102a661046d36600461370b565b6112df565b61025b610480366004613471565b61136d565b6102bf6104933660046137e7565b61142f565b6102bf7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102a66104cd366004613606565b611561565b61023e6104e036600461383a565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61023e61051c366004613519565b611586565b6102bf7f30d6324eebe3722f56379e9b2d3ba42f71cbb1ff97030cdf27359d15466f81fb81565b61025b610556366004613519565b6115b6565b60006105668261166d565b80610575575061057582611708565b92915050565b60606065805461058a90613864565b80601f01602080910402602001604051908101604052809291908181526020018280546105b690613864565b80156106035780601f106105d857610100808354040283529160200191610603565b820191906000526020600020905b8154815290600101906020018083116105e657829003601f168201915b5050505050905090565b600061061882611746565b506000908152606960205260409020546001600160a01b031690565b600061063f82610e1d565b9050806001600160a01b0316836001600160a01b031614156106ce5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b03821614806106ea57506106ea81336104e0565b61075c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016106c5565b61076683836117aa565b505050565b7f30d6324eebe3722f56379e9b2d3ba42f71cbb1ff97030cdf27359d15466f81fb61079581611825565b61012d83836040516107a892919061389f565b9081526040519081900360200190205460ff166107d8576040516332bd027760e11b815260040160405180910390fd5b60015b61080661012d85856040516107f192919061389f565b90815260200160405180910390206002015490565b81116108675761085561085085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525086925061182f915050565b611872565b8061085f816138c5565b9150506107db565b5061012d838360405161087b92919061389f565b908152604051908190036020019020805460ff1916815560006108a16001830182613300565b506000600291909101556040517fbff00fd3f23ce5d1ab2d654287ce0a731a925ef661170a88d36677bc2701fac1906108dd908590859061390b565b60405180910390a1505050565b6108f43382611922565b6109665760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016106c5565b6107668383836119a1565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661099b81611825565b61012d84846040516109ae92919061389f565b9081526040519081900360200190205460ff166109de576040516332bd027760e11b815260040160405180910390fd5b60008263ffffffff1667ffffffffffffffff8111156109ff576109ff6136f5565b604051908082528060200260200182016040528015610a28578160200160208202803683370190505b50905060005b8363ffffffff16811015610b1557610a6c61012d8787604051610a5292919061389f565b908152602001604051809103902060020180546001019055565b610ac286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610abd925061012d91506107f1908b908b9061389f565b61182f565b828281518110610ad457610ad461391f565b602002602001018181525050610b0387838381518110610af657610af661391f565b6020026020010151611be4565b80610b0d816138c5565b915050610a2e565b50856001600160a01b03167f63d1f08b84d608ad172f9c47096733576e76017c68ba90838d791ddaabf012b586868685604051610b559493929190613935565b60405180910390a2505050505050565b600082815260c96020526040902060010154610b8081611825565b6107668383611bfe565b6000610b9583610e82565b8210610c095760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e647300000000000000000000000000000000000000000060648201526084016106c5565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6000610c4a61012d84846040516107f192919061389f565b9392505050565b6001600160a01b0381163314610ccf5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016106c5565b610cd98282611ca0565b5050565b610766838383604051806020016040528060008152506112df565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848610d2281611825565b6000828152606760205260409020546001600160a01b0316610d70576040517f7c2f5b0100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cd982611872565b6000610d8460995490565b8210610df85760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e6473000000000000000000000000000000000000000060648201526084016106c5565b60998281548110610e0b57610e0b61391f565b90600052602060002001549050919050565b6000818152606760205260408120546001600160a01b0316806105755760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016106c5565b60006001600160a01b038216610f005760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016106c5565b506001600160a01b031660009081526068602052604090205490565b7f30d6324eebe3722f56379e9b2d3ba42f71cbb1ff97030cdf27359d15466f81fb610f4681611825565b61012d8585604051610f5992919061389f565b9081526040519081900360200190205460ff1615610fa3576040517f19a9f50400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806060016040528060011515815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505060408051602081810183529381529290930191909152505161012d90611017908890889061389f565b908152604051602091819003820190208251815460ff1916901515178155828201518051919261104f9260018501929091019061333a565b5060409182015151600290910155517f42a8315271b748e68b2e34a93005609b9616ac6b89fe6582b9e36d2d4df0e37f9061109190879087908790879061399b565b60405180910390a15050505050565b600054610100900460ff16158080156110c05750600054600160ff909116105b806110da5750303b1580156110da575060005460ff166001145b61114c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106c5565b6000805460ff19166001179055801561116f576000805461ff0019166101001790555b6111e36040518060400160405280600781526020017f5374796c6c6172000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5354594c4c000000000000000000000000000000000000000000000000000000815250611d23565b6111eb611d98565b6111f3611e05565b6111fe600033611bfe565b6112287f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633611bfe565b6112527f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833611bfe565b61127c7f30d6324eebe3722f56379e9b2d3ba42f71cbb1ff97030cdf27359d15466f81fb33611bfe565b80156112c2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60606066805461058a90613864565b610cd9338383611e78565b6112e93383611922565b61135b5760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f7665640000000000000000000000000000000000000060648201526084016106c5565b61136784848484611f47565b50505050565b6060600061137a83611fd0565b905061012d8160405161138d91906139cd565b908152602001604051809103902060010180546113a990613864565b80601f01602080910402602001604051908101604052809291908181526020018280546113d590613864565b80156114225780601f106113f757610100808354040283529160200191611422565b820191906000526020600020905b81548152906001019060200180831161140557829003601f168201915b5050505050915050919050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661145b81611825565b61012d848460405161146e92919061389f565b9081526040519081900360200190205460ff1661149e576040516332bd027760e11b815260040160405180910390fd5b6114b461012d8585604051610a5292919061389f565b600061150785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051610abd925061012d91506107f1908a908a9061389f565b90506115138682611be4565b856001600160a01b03167f37021d1908eb5d88f0643480d365f74a16995c98633411b11ab6b27f60ddfe1e868684604051611550939291906139e9565b60405180910390a295945050505050565b600082815260c9602052604090206001015461157c81611825565b6107668383611ca0565b600061012d838360405161159b92919061389f565b9081526040519081900360200190205460ff16905092915050565b606061012d83836040516115cb92919061389f565b908152602001604051809103902060010180546115e790613864565b80601f016020809104026020016040519081016040528092919081815260200182805461161390613864565b80156116605780601f1061163557610100808354040283529160200191611660565b820191906000526020600020905b81548152906001019060200180831161164357829003601f168201915b5050505050905092915050565b60006001600160e01b031982167f80ac58cd0000000000000000000000000000000000000000000000000000000014806116d057506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061057557507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610575565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480610575575061057582611ffc565b6000818152606760205260409020546001600160a01b03166112c25760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016106c5565b6000818152606960205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03841690811790915581906117ec82610e1d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6112c2813361203a565b6000808361183c846120af565b60405160200161184d929190613a0d565b6040516020818303038152906040529050600061186982612159565b95945050505050565b600061187d82610e1d565b905061188d81600084600161219f565b61189682610e1d565b6000838152606960209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60008061192e83610e1d565b9050806001600160a01b0316846001600160a01b0316148061197557506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806119995750836001600160a01b031661198e8461060d565b6001600160a01b0316145b949350505050565b826001600160a01b03166119b482610e1d565b6001600160a01b031614611a305760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016106c5565b6001600160a01b038216611aab5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106c5565b611ab8838383600161219f565b826001600160a01b0316611acb82610e1d565b6001600160a01b031614611b475760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016106c5565b6000818152606960209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610cd98282604051806020016040528060008152506122e7565b600082815260c9602090815260408083206001600160a01b038516845290915290205460ff16610cd957600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff19166001179055611c5c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260c9602090815260408083206001600160a01b038516845290915290205460ff1615610cd957600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600054610100900460ff16611d8e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106c5565b610cd98282612370565b600054610100900460ff16611e035760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106c5565b565b600054610100900460ff16611e705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106c5565b611e03612402565b816001600160a01b0316836001600160a01b03161415611eda5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106c5565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611f528484846119a1565b611f5e84848484612474565b6113675760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106c5565b6060610575827f5f00000000000000000000000000000000000000000000000000000000000000612609565b60006001600160e01b031982167f780e9d6300000000000000000000000000000000000000000000000000000000148061057557506105758261166d565b600082815260c9602090815260408083206001600160a01b038516845290915290205460ff16610cd95761206d81612bc7565b612078836020612bd9565b604051602001612089929190613a65565b60408051601f198184030181529082905262461bcd60e51b82526106c59160040161345e565b606060006120bc83612dba565b600101905060008167ffffffffffffffff8111156120dc576120dc6136f5565b6040519080825280601f01601f191660200182016040528015612106576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461214c57612151565b612110565b509392505050565b6000602082511115612197576040517fda9a1c6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506020015190565b6121ab84848484612e9c565b60018111156122225760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e736563757469766520747260448201527f616e7366657273206e6f7420737570706f72746564000000000000000000000060648201526084016106c5565b816001600160a01b03851661227e5761227981609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6122a1565b836001600160a01b0316856001600160a01b0316146122a1576122a18582612f24565b6001600160a01b0384166122bd576122b881612fc1565b6122e0565b846001600160a01b0316846001600160a01b0316146122e0576122e08482613070565b5050505050565b6122f183836130b4565b6122fe6000848484612474565b6107665760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106c5565b600054610100900460ff166123db5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106c5565b81516123ee90606590602085019061333a565b50805161076690606690602084019061333a565b600054610100900460ff1661246d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106c5565b600160fb55565b60006001600160a01b0384163b156125fe576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a02906124d1903390899088908890600401613ae6565b602060405180830381600087803b1580156124eb57600080fd5b505af192505050801561251b575060408051601f3d908101601f1916820190925261251891810190613b22565b60015b6125cb573d808015612549576040519150601f19603f3d011682016040523d82523d6000602084013e61254e565b606091505b5080516125c35760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106c5565b805181602001fd5b6001600160e01b0319167f150b7a0200000000000000000000000000000000000000000000000000000000149050611999565b506001949350505050565b60606001600160f81b031982168360001a60f81b6001600160f81b03191614156126425750604080516020810190915260008152610575565b6001600160f81b031982168360011a60f81b6001600160f81b03191614156126765761266f83600161325a565b9050610575565b6001600160f81b031982168360021a60f81b6001600160f81b03191614156126a35761266f83600261325a565b6001600160f81b031982168360031a60f81b6001600160f81b03191614156126d05761266f83600361325a565b6001600160f81b031982168360041a60f81b6001600160f81b03191614156126fd5761266f83600461325a565b6001600160f81b031982168360051a60f81b6001600160f81b031916141561272a5761266f83600561325a565b6001600160f81b031982168360061a60f81b6001600160f81b03191614156127575761266f83600661325a565b6001600160f81b031982168360071a60f81b6001600160f81b03191614156127845761266f83600761325a565b6001600160f81b031982168360081a60f81b6001600160f81b03191614156127b15761266f83600861325a565b6001600160f81b031982168360091a60f81b6001600160f81b03191614156127de5761266f83600961325a565b6001600160f81b0319821683600a1a60f81b6001600160f81b031916141561280b5761266f83600a61325a565b6001600160f81b0319821683600b1a60f81b6001600160f81b03191614156128385761266f83600b61325a565b6001600160f81b0319821683600c1a60f81b6001600160f81b03191614156128655761266f83600c61325a565b6001600160f81b0319821683600d1a60f81b6001600160f81b03191614156128925761266f83600d61325a565b6001600160f81b0319821683600e1a60f81b6001600160f81b03191614156128bf5761266f83600e61325a565b6001600160f81b0319821683600f1a60f81b6001600160f81b03191614156128ec5761266f83600f61325a565b6001600160f81b031982168360101a60f81b6001600160f81b03191614156129195761266f83601061325a565b6001600160f81b031982168360111a60f81b6001600160f81b03191614156129465761266f83601161325a565b6001600160f81b031982168360121a60f81b6001600160f81b03191614156129735761266f83601261325a565b6001600160f81b031982168360131a60f81b6001600160f81b03191614156129a05761266f83601361325a565b6001600160f81b031982168360141a60f81b6001600160f81b03191614156129cd5761266f83601461325a565b6001600160f81b031982168360151a60f81b6001600160f81b03191614156129fa5761266f83601561325a565b6001600160f81b031982168360161a60f81b6001600160f81b0319161415612a275761266f83601661325a565b6001600160f81b031982168360171a60f81b6001600160f81b0319161415612a545761266f83601761325a565b6001600160f81b031982168360181a60f81b6001600160f81b0319161415612a815761266f83601861325a565b6001600160f81b031982168360191a60f81b6001600160f81b0319161415612aae5761266f83601961325a565b6001600160f81b0319821683601a1a60f81b6001600160f81b0319161415612adb5761266f83601a61325a565b6001600160f81b0319821683601b1a60f81b6001600160f81b0319161415612b085761266f83601b61325a565b6001600160f81b0319821683601c1a60f81b6001600160f81b0319161415612b355761266f83601c61325a565b6001600160f81b0319821683601d1a60f81b6001600160f81b0319161415612b625761266f83601d61325a565b6001600160f81b0319821683601e1a60f81b6001600160f81b0319161415612b8f5761266f83601e61325a565b6001600160f81b0319821683601f1a60f81b6001600160f81b0319161415612bbc5761266f83601f61325a565b61266f83602061325a565b60606105756001600160a01b03831660145b60606000612be8836002613b3f565b612bf3906002613b5e565b67ffffffffffffffff811115612c0b57612c0b6136f5565b6040519080825280601f01601f191660200182016040528015612c35576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612c6c57612c6c61391f565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612cb757612cb761391f565b60200101906001600160f81b031916908160001a9053506000612cdb846002613b3f565b612ce6906001613b5e565b90505b6001811115612d6b577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612d2757612d2761391f565b1a60f81b828281518110612d3d57612d3d61391f565b60200101906001600160f81b031916908160001a90535060049490941c93612d6481613b76565b9050612ce9565b508315610c4a5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106c5565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612e03577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612e2f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612e4d57662386f26fc10000830492506010015b6305f5e1008310612e65576305f5e100830492506008015b6127108310612e7957612710830492506004015b60648310612e8b576064830492506002015b600a83106105755760010192915050565b6001811115611367576001600160a01b03841615612ee2576001600160a01b03841660009081526068602052604081208054839290612edc908490613b8d565b90915550505b6001600160a01b03831615611367576001600160a01b03831660009081526068602052604081208054839290612f19908490613b5e565b909155505050505050565b60006001612f3184610e82565b612f3b9190613b8d565b600083815260986020526040902054909150808214612f8e576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b609954600090612fd390600190613b8d565b6000838152609a602052604081205460998054939450909284908110612ffb57612ffb61391f565b90600052602060002001549050806099838154811061301c5761301c61391f565b6000918252602080832090910192909255828152609a9091526040808220849055858252812055609980548061305457613054613ba4565b6001900381819060005260206000200160009055905550505050565b600061307b83610e82565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6001600160a01b03821661310a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106c5565b6000818152606760205260409020546001600160a01b03161561316f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106c5565b61317d60008383600161219f565b6000818152606760205260409020546001600160a01b0316156131e25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016106c5565b6001600160a01b0382166000818152606860209081526040808320805460010190558483526067909152808220805473ffffffffffffffffffffffffffffffffffffffff19168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606060008267ffffffffffffffff811115613277576132776136f5565b6040519080825280601f01601f1916602001820160405280156132a1576020820181803683370190505b50905060005b83811015612151578481602081106132c1576132c161391f565b1a60f81b8282815181106132d7576132d761391f565b60200101906001600160f81b031916908160001a905350806132f8816138c5565b9150506132a7565b50805461330c90613864565b6000825580601f1061331c575050565b601f0160209004906000526020600020908101906112c291906133be565b82805461334690613864565b90600052602060002090601f01602090048101928261336857600085556133ae565b82601f1061338157805160ff19168380011785556133ae565b828001600101855582156133ae579182015b828111156133ae578251825591602001919060010190613393565b506133ba9291506133be565b5090565b5b808211156133ba57600081556001016133bf565b6001600160e01b0319811681146112c257600080fd5b6000602082840312156133fb57600080fd5b8135610c4a816133d3565b60005b83811015613421578181015183820152602001613409565b838111156113675750506000910152565b6000815180845261344a816020860160208601613406565b601f01601f19169290920160200192915050565b602081526000610c4a6020830184613432565b60006020828403121561348357600080fd5b5035919050565b80356001600160a01b03811681146134a157600080fd5b919050565b600080604083850312156134b957600080fd5b6134c28361348a565b946020939093013593505050565b60008083601f8401126134e257600080fd5b50813567ffffffffffffffff8111156134fa57600080fd5b60208301915083602082850101111561351257600080fd5b9250929050565b6000806020838503121561352c57600080fd5b823567ffffffffffffffff81111561354357600080fd5b61354f858286016134d0565b90969095509350505050565b60008060006060848603121561357057600080fd5b6135798461348a565b92506135876020850161348a565b9150604084013590509250925092565b600080600080606085870312156135ad57600080fd5b6135b68561348a565b9350602085013567ffffffffffffffff8111156135d257600080fd5b6135de878288016134d0565b909450925050604085013563ffffffff811681146135fb57600080fd5b939692955090935050565b6000806040838503121561361957600080fd5b823591506136296020840161348a565b90509250929050565b60006020828403121561364457600080fd5b610c4a8261348a565b6000806000806040858703121561366357600080fd5b843567ffffffffffffffff8082111561367b57600080fd5b613687888389016134d0565b909650945060208701359150808211156136a057600080fd5b506136ad878288016134d0565b95989497509550505050565b600080604083850312156136cc57600080fd5b6136d58361348a565b9150602083013580151581146136ea57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561372157600080fd5b61372a8561348a565b93506137386020860161348a565b925060408501359150606085013567ffffffffffffffff8082111561375c57600080fd5b818701915087601f83011261377057600080fd5b813581811115613782576137826136f5565b604051601f8201601f19908116603f011681019083821181831017156137aa576137aa6136f5565b816040528281528a60208487010111156137c357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806000604084860312156137fc57600080fd5b6138058461348a565b9250602084013567ffffffffffffffff81111561382157600080fd5b61382d868287016134d0565b9497909650939450505050565b6000806040838503121561384d57600080fd5b6138568361348a565b91506136296020840161348a565b600181811c9082168061387857607f821691505b6020821081141561389957634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156138d9576138d96138af565b5060010190565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6020815260006119996020830184866138e0565b634e487b7160e01b600052603260045260246000fd5b6060815260006139496060830186886138e0565b63ffffffff8516602084810191909152838203604085015284518083528582019282019060005b8181101561398c57845183529383019391830191600101613970565b50909998505050505050505050565b6040815260006139af6040830186886138e0565b82810360208401526139c28185876138e0565b979650505050505050565b600082516139df818460208701613406565b9190910192915050565b6040815260006139fd6040830185876138e0565b9050826020830152949350505050565b60008351613a1f818460208801613406565b7f5f000000000000000000000000000000000000000000000000000000000000009083019081528351613a59816001840160208801613406565b01600101949350505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613a9d816017850160208801613406565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613ada816028840160208801613406565b01602801949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152613b186080830184613432565b9695505050505050565b600060208284031215613b3457600080fd5b8151610c4a816133d3565b6000816000190483118215151615613b5957613b596138af565b500290565b60008219821115613b7157613b716138af565b500190565b600081613b8557613b856138af565b506000190190565b600082821015613b9f57613b9f6138af565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220966fc6a2a4e70d3de02fa415650cd9b2652f8d323eea0ff33962f5aeaec5318764736f6c63430008090033