0x608060405234801561001057600080fd5b50613f42806100206000396000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c8063715018a6116101f4578063abe258f21161011a578063e6e7fad0116100ad578063f1ff732b1161007c578063f1ff732b14610932578063f2fde38b14610945578063f4a0a52814610958578063fc0c546a1461096b57600080fd5b8063e6e7fad0146108ea578063efe61da3146108f3578063f0911cab14610906578063f1b6d2a91461092957600080fd5b8063c5601242116100e9578063c5601242146108bf578063d46d5574146108d2578063dd22db80146108da578063e6abf936146108e257600080fd5b8063abe258f214610863578063b1324f7b14610886578063b5f9554814610899578063c54e44eb146108ac57600080fd5b80638da5cb5b11610192578063994b754811610161578063994b75481461082c578063a11e6f491461083f578063a607a8d914610848578063a693e9041461085057600080fd5b80638da5cb5b146107e2578063949d8c93146107f357806397a0d5351461080657806398ecd3391461081957600080fd5b806376e11286116101ce57806376e11286146107945780637ce9d03b146107a75780638129fc1c146107c7578063816a8aab146107cf57600080fd5b8063715018a61461076657806374003de91461076e57806375630c531461078157600080fd5b806335eb2b10116102e457806352bab041116102775780635af2c978116102465780635af2c9781461071757806365465a921461072a5780636817c76c1461073d57806369423f4c1461074657600080fd5b806352bab0411461063457806353cb127a1461066757806356b6c89d146106e15780635782332b146106f457600080fd5b806348fbbb19116102b357806348fbbb19146105f357806350c1b923146105fb57806351b228921461060e57806352902e741461062157600080fd5b806335eb2b10146105bd5780633ccfd60b146105d0578063402ffb8d146105d8578063482e9adc146105e057600080fd5b80631959a0021161035c578063253394cc1161032b578063253394cc1461056d578063253a0b3e1461058057806325737061146105975780632792949d146105aa57600080fd5b80631959a00214610471578063200d2ed214610508578063213d88a114610547578063247ce85b1461055a57600080fd5b80630dedd64a116103985780630dedd64a14610417578063144fa6d71461042a578063150b7a021461043d57806316672fe81461046957600080fd5b80630a85654d146103bf5780630ab9db5b146103ef5780630b8c657e14610402575b600080fd5b609c546103d2906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b609f546103d2906001600160a01b031681565b61041561041036600461397a565b61097e565b005b6104156104253660046138c0565b61109d565b6104156104383660046134b2565b6110aa565b61045061044b366004613525565b6110d4565b6040516001600160e01b031990911681526020016103e6565b6104156110e5565b6104c961047f3660046134b2565b609b60205260009081526040902080546001820154600283015460048401546005850154600686015460079096015494956001600160a01b039094169492939192909160ff169087565b604080519788526001600160a01b0390961660208801529486019390935260608501919091526080840152151560a083015260c082015260e0016103e6565b609a546105289060ff808216916101008104821691620100009091041683565b60408051931515845291151560208401521515908201526060016103e6565b6104156105553660046136ed565b611363565b6104156105683660046134b2565b611382565b61041561057b3660046134b2565b611556565b61058960b05481565b6040519081526020016103e6565b60a1546103d2906001600160a01b031681565b60a2546103d2906001600160a01b031681565b60a0546103d2906001600160a01b031681565b610415611580565b60a954610589565b6104156105ee3660046134b2565b611693565b6104156116bd565b6104156106093660046134b2565b6118d9565b6097546103d2906001600160a01b031681565b61058961062f3660046134b2565b611903565b6106576106423660046138c0565b60ae6020526000908152604090205460ff1681565b60405190151581526020016103e6565b6106b16106753660046134b2565b60ab602052600090815260409020805460019091015460ff80831692610100810482169262010000820483169263010000009092049091169085565b6040805195151586529315156020860152911515928401929092529015156060830152608082015260a0016103e6565b6104156106ef366004613933565b6119c8565b6106576107023660046134b2565b60b66020526000908152604090205460ff1681565b6104156107253660046138f2565b611b20565b61041561073836600461382e565b611e38565b61058960995481565b6107596107543660046134b2565b611e79565b6040516103e69190613ab9565b610415611ef2565b61058961077c3660046134b2565b611f06565b61041561078f3660046138c0565b6121a5565b6104156107a23660046134ec565b6121b2565b6105896107b53660046138c0565b60af6020526000908152604090205481565b6104156121e8565b6104156107dd3660046138c0565b6123b8565b6033546001600160a01b03166103d2565b6105896108013660046134b2565b6123c5565b61041561081436600461365d565b61249d565b6104156108273660046138c0565b6124b2565b61041561083a3660046134b2565b6124bf565b61058960b55481565b6105896124e9565b61041561085e3660046135a5565b61262c565b6106576108713660046138c0565b60b26020526000908152604090205460ff1681565b609d546103d2906001600160a01b031681565b6104156108a73660046134b2565b6126a3565b6098546103d2906001600160a01b031681565b6104156108cd366004613879565b6126cd565b60b354610589565b610589612bd9565b610415612cab565b61058960a65481565b6105896109013660046134b2565b612dfe565b6106576109143660046138c0565b609e6020526000908152604090205460ff1681565b61058960ad5481565b6104156109403660046134b2565b612ede565b6104156109533660046134b2565b612f08565b6104156109663660046138c0565b612f7e565b60a7546103d2906001600160a01b031681565b3332146109a65760405162461bcd60e51b815260040161099d90613be0565b60405180910390fd5b609a5462010000900460ff166109ce5760405162461bcd60e51b815260040161099d90613b94565b609d546040516370a0823160e01b81523360048201526001600160a01b03909116906370a082319060240160206040518083038186803b158015610a1157600080fd5b505afa158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4991906138d9565b15610a7f5760405162461bcd60e51b81526020600482015260066024820152651b5a5b9d195960d21b604482015260640161099d565b609c546040516331a9108f60e11b81526004810187905233916001600160a01b031690636352211e9060240160206040518083038186803b158015610ac357600080fd5b505afa158015610ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afb91906134cf565b6001600160a01b031614610b3d5760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b604482015260640161099d565b600085815260b2602052604090205460ff1615610b925760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481cdbdd5b08189bdb991959606a1b604482015260640161099d565b600085815260b260209081526040808320805460ff1916600117905551610bd891879133910191825260601b6bffffffffffffffffffffffff1916602082015260340190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff86169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015610c43573d6000803e3d6000fd5b5050604051601f190151609f549092506001600160a01b038084169116149050610c9c5760405162461bcd60e51b815260206004820152600a6024820152693737ba103130b735b2b960b11b604482015260640161099d565b60a3600081548110610cb057610cb0613e8e565b90600052602060002001548611610d9057609d546040516340c10f1960e01b81526001600160a01b03909116906340c10f1990610cf4903390600190600401613a7c565b600060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b5050505060b054421015610d6f576001600090815260af6020527f900700e6bd57e6422dfd94f65cfe467c2bdd2d930a52c3d0980a8f38ab604c7f805491610d6983613e5d565b91905055505b6040516001903390600080516020613eed83398151915290600090a3611094565b60a38054610da090600190613df7565b81548110610db057610db0613e8e565b9060005260206000200154861115610f7257681b1ae4d6e2ef500000610dd533611f06565b1115610ebe57609d5460a3546001600160a01b03909116906340c10f19903390610e00906001613ca1565b6040518363ffffffff1660e01b8152600401610e1d929190613a7c565b600060405180830381600087803b158015610e3757600080fd5b505af1158015610e4b573d6000803e3d6000fd5b5050505060b054421015610e925760a35460af90600090610e6d906001613ca1565b81526020019081526020016000206000815480929190610e8c90613e5d565b91905055505b60a354610ea0906001613ca1565b6040513390600080516020613eed83398151915290600090a3611094565b609d5460a3546040516340c10f1960e01b81526001600160a01b03909216916340c10f1991610ef291339190600401613a7c565b600060405180830381600087803b158015610f0c57600080fd5b505af1158015610f20573d6000803e3d6000fd5b5050505060b054421015610f515760a354600090815260af60205260408120805491610f4b83613e5d565b91905055505b60a3546040513390600080516020613eed83398151915290600090a3611094565b60015b60a3548110156110925760a3610f8c600183613df7565b81548110610f9c57610f9c613e8e565b906000526020600020015487118015610fd2575060a38181548110610fc357610fc3613e8e565b90600052602060002001548711155b1561108057609d546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906110099033908590600401613a7c565b600060405180830381600087803b15801561102357600080fd5b505af1158015611037573d6000803e3d6000fd5b5050604051839250339150600080516020613eed83398151915290600090a360b05442101561108057600081815260af6020526040812080549161107a83613e5d565b91905055505b8061108a81613e5d565b915050610f75565b505b50505050505050565b6110a5612f8b565b60b055565b6110b2612f8b565b60a280546001600160a01b0319166001600160a01b0392909216919091179055565b630a85bd0160e11b5b949350505050565b3332146111045760405162461bcd60e51b815260040161099d90613be0565b60b5544210156111265760405162461bcd60e51b815260040161099d90613b6c565b609c546040516364da10bf60e01b81523360048201526a7c13bc4b2c133c56000000916000916001600160a01b03909116906364da10bf9060240160006040518083038186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111b59190810190613785565b90506000805b82518110156112605760ae60008483815181106111da576111da613e8e565b60209081029190910181015182528101919091526040016000205460ff1661124e576112068483613ca1565b9150600160ae600085848151811061122057611220613e8e565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8061125881613e5d565b9150506111bb565b50806112a45760405162461bcd60e51b81526020600482015260136024820152726e6f2061697244726f7020746f20636c61696d60681b604482015260640161099d565b60a75460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906112d69033908590600401613a7c565b602060405180830381600087803b1580156112f057600080fd5b505af1158015611304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113289190613811565b5060405181815233907fd2d69d4455b12aed1f7136676675abf42f83b9b3728ae78e790d2a49edadc1609060200160405180910390a2505050565b61136b612f8b565b805161137e9060a39060208401906132e0565b5050565b3332146113a15760405162461bcd60e51b815260040161099d90613be0565b336000908152609b60205260409020600101546001600160a01b0316156113f95760405162461bcd60e51b815260206004820152600c60248201526b185b1c9958591e48189bdb9960a21b604482015260640161099d565b6001600160a01b0381163314156114465760405162461bcd60e51b815260206004820152601160248201527031b0b7103737ba103137b7321039b2b63360791b604482015260640161099d565b60ad5442106114875760405162461bcd60e51b815260206004820152600d60248201526c189bdb99081e5d5c9a48195b99609a1b604482015260640161099d565b6001600160a01b0381166000908152609b602052604081206002018054916114ae83613e5d565b9091555050336000818152609b60209081526040808320600190810180546001600160a01b0388166001600160a01b03199182168117909255908552918420600301805491820181558452918320909101805490911690921790915560a980549161151883613e5d565b909155505060405133906001600160a01b038316907f926f98e4b543897a75b3e34b7494ba68a47829d3aa39ffd9c478ccc51bfbfb4490600090a350565b61155e612f8b565b609c80546001600160a01b0319166001600160a01b0392909216919091179055565b611588612f8b565b6098546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb907321f2e2efb73ce38befbde175ba3fa501696c1c349083906370a082319060240160206040518083038186803b1580156115e957600080fd5b505afa1580156115fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162191906138d9565b6040518363ffffffff1660e01b815260040161163e929190613a7c565b602060405180830381600087803b15801561165857600080fd5b505af115801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190613811565b50565b61169b612f8b565b60a780546001600160a01b0319166001600160a01b0392909216919091179055565b3332146116dc5760405162461bcd60e51b815260040161099d90613be0565b60b5544210156116fe5760405162461bcd60e51b815260040161099d90613b6c565b33600090815260ab602052604090205462010000900460ff16156117345760405162461bcd60e51b815260040161099d90613b43565b609d54604051633a31b60160e21b81523360048201526000916001600160a01b03169063e8c6d8049060240160206040518083038186803b15801561177857600080fd5b505afa15801561178c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b091906138d9565b9050600081116117f25760405162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdbdd5b08189bdb99609a1b604482015260640161099d565b33600081815260ab60205260408120805462ff00001916620100001790559061181a906123c5565b60a75460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb9061184d9033908590600401613a7c565b602060405180830381600087803b15801561186757600080fd5b505af115801561187b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189f9190613811565b5060405181815233907fb61d876ec3aa9557b2a754e79a5c0f0970d4df2f611c7608ba95ae83a17278459060200160405180910390a25050565b6118e1612f8b565b609880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152609b60205260408120600501546a52b7d2dcc80cd2e40000009082906119389083613dd8565b6001600160a01b0385166000908152609b60205260408120600701549192506a52b7d2dcc80cd2e40000009161196e9083613dd8565b6001600160a01b038781166000908152609b60205260408120600101549293509116156119a357506a108b2a2c280290940000005b806000816119b18588613ca1565b6119bb9190613ca1565b9998505050505050505050565b3332146119e75760405162461bcd60e51b815260040161099d90613be0565b609a54610100900460ff16611a0e5760405162461bcd60e51b815260040161099d90613b94565b609754604051632142170760e11b8152336004820152306024820152604481018490526001600160a01b03909116906342842e0e90606401600060405180830381600087803b158015611a6057600080fd5b505af1158015611a74573d6000803e3d6000fd5b5050609c5460405163d0def52160e01b81526001600160a01b03909116925063d0def5219150611aaa9033908590600401613a95565b600060405180830381600087803b158015611ac457600080fd5b505af1158015611ad8573d6000803e3d6000fd5b5050505080604051611aea9190613a60565b6040519081900381209033907fa785fc346da73c9ad6c933dde68fe85362a97b7b07706c3e23ff3400cc5d93b590600090a35050565b333214611b3f5760405162461bcd60e51b815260040161099d90613be0565b60b554421015611b615760405162461bcd60e51b815260040161099d90613b6c565b60b45460ff16611b795760b4805460ff191660011790555b60b45460ff16611bb75760405162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015260640161099d565b610bb860b35410611bda5760405162461bcd60e51b815260040161099d90613bba565b33600090815260ab602052604090205460ff1615611c0a5760405162461bcd60e51b815260040161099d90613b43565b42841015611c445760405162461bcd60e51b8152602060048201526007602482015266195e1c1a5c995960ca1b604482015260640161099d565b60008433604051602001611c7492919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff86169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611cdf573d6000803e3d6000fd5b5050604051601f190151609f549092506001600160a01b038084169116149050611d385760405162461bcd60e51b815260206004820152600a6024820152693737ba103130b735b2b960b11b604482015260640161099d565b33600081815260ab602052604090819020805460ff1916600117905560a754905163a9059cbb60e01b81526a52b7d2dcc80cd2e4000000926001600160a01b03929092169163a9059cbb91611d9291908590600401613a7c565b602060405180830381600087803b158015611dac57600080fd5b505af1158015611dc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de49190613811565b5060b38054906000611df583613e5d565b909155505060405181815233907fedb9dd9dfccacf38e1b23a1f2c67e38177632f8f3111f1c9c644cfd8058bb7cc9060200160405180910390a250505050505050565b611e40612f8b565b609a805461ffff191693151561ff00191693909317610100921515929092029190911762ff000019166201000091151591909102179055565b6001600160a01b0381166000908152609b6020908152604091829020600301805483518184028101840190945280845260609392830182828015611ee657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ec8575b50505050509050919050565b611efa612f8b565b611f046000612fe5565b565b60008060a260009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611f5757600080fd5b505afa158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f9190613a17565b60ff16611f9a612bd9565b60a2546040516370a0823160e01b81526001600160a01b038781166004830152909116906370a082319060240160206040518083038186803b158015611fdf57600080fd5b505afa158015611ff3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201791906138d9565b6120219190613dd8565b61202b9190613cb9565b90506000670de0b6b3a76400006120406124e9565b612054906001600160a01b03871631613dd8565b61205e9190613cb9565b90506000609860009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156120b057600080fd5b505afa1580156120c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e89190613a17565b6120f3906012613e0e565b6120fe90600a613d2a565b6098546040516370a0823160e01b81526001600160a01b038881166004830152909116906370a082319060240160206040518083038186803b15801561214357600080fd5b505afa158015612157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217b91906138d9565b6121859190613dd8565b9050806121928385613ca1565b61219c9190613ca1565b95945050505050565b6121ad612f8b565b60b555565b6121ba612f8b565b60a080546001600160a01b039384166001600160a01b03199182161790915560a18054929093169116179055565b600054610100900460ff16158080156122085750600054600160ff909116105b806122225750303b158015612222575060005460ff166001145b6122855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161099d565b6000805460ff1916600117905580156122a8576000805461ff0019166101001790555b6122b0613037565b6122b861305e565b621e848060995560408051608081018252600a8152600f6020820152601991810191909152603260608201526122f29060ac90600461332b565b50612301426301da9c00613ca1565b60b0556040805160e08101825260008152600360208201526007918101829052600f606082015260146080820152601960a0820152601e60c082015261234a9160b1919061332b565b506123584262278d00613ca1565b60ad55620174f860a55569d3c21bcecceda100000060a6558015611690576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6123c0612f8b565b60ad55565b6001600160a01b038116600090815260ab602052604081205462010000900460ff16156123f457506000919050565b60b05442101561240657506000919050565b609d546040516370a0823160e01b81526001600160a01b03848116600483015260009216906370a082319060240160206040518083038186803b15801561244c57600080fd5b505afa158015612460573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248491906138d9565b905060006110dd826aa56fa5b99019a5c8000000613dd8565b6124a5612f8b565b61137e60b482600461336b565b6124ba612f8b565b60a655565b6124c7612f8b565b609d80546001600160a01b0319166001600160a01b0392909216919091179055565b60008060a160009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561253a57600080fd5b505afa15801561254e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257291906139c7565b505050915050600060a160009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c857600080fd5b505afa1580156125dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126009190613a17565b60ff169050612610816012613df7565b61261b90600a613d1e565b6126259083613dd8565b9250505090565b612634612f8b565b60005b825181101561269e5781609b600085848151811061265757612657613e8e565b6020908102919091018101516001600160a01b03168252810191909152604001600020600601805460ff19169115159190911790558061269681613e5d565b915050612637565b505050565b6126ab612f8b565b609780546001600160a01b0319166001600160a01b0392909216919091179055565b3332146126ec5760405162461bcd60e51b815260040161099d90613be0565b609a5460ff1661270e5760405162461bcd60e51b815260040161099d90613b94565b60b5544211156127505760405162461bcd60e51b815260206004820152600d60248201526c1b5a5b9d081e5d5c9a48195b99609a1b604482015260640161099d565b801561287657336000908152609b6020526040902060050154600a116127885760405162461bcd60e51b815260040161099d90613bba565b336000908152609b6020526040812060020154906127a7600383613cb9565b336000908152609b602052604090206006015490915060ff16156127d357806127cf81613e5d565b9150505b336000908152609b60205260408120600501546127f09083613df7565b9050600081116128315760405162461bcd60e51b815260206004820152600c60248201526b1b9bc8199c9959481b5a5b9d60a21b604482015260640161099d565b336000908152609b60205260408120600501805460019290612854908490613ca1565b909155505060a8805490600061286983613e5d565b9190505550505050612b10565b336000908152609b60205260409020600581015490546101f49161289991613df7565b106128b65760405162461bcd60e51b815260040161099d90613bba565b6099546098546128d5916001600160a01b03909116903390309061308e565b336000908152609b60205260409020600101546001600160a01b031680156129cd576098546099546001600160a01b039091169063a9059cbb90839061291d90600a90613cb9565b6040518363ffffffff1660e01b815260040161293a929190613a7c565b602060405180830381600087803b15801561295457600080fd5b505af1158015612968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298c9190613811565b50600a60995461299c9190613cb9565b6001600160a01b0382166000908152609b6020526040812060040180549091906129c7908490613ca1565b90915550505b6098546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb907321f2e2efb73ce38befbde175ba3fa501696c1c349083906370a082319060240160206040518083038186803b158015612a2e57600080fd5b505afa158015612a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6691906138d9565b6040518363ffffffff1660e01b8152600401612a83929190613a7c565b602060405180830381600087803b158015612a9d57600080fd5b505af1158015612ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad59190613811565b50336000908152609b60205260408120600701805491612af483613e5d565b909155505060aa8054906000612b0983613e5d565b9190505550505b609754604051631c351a9d60e01b81526001600160a01b0390911690631c351a9d90612b429085903390600401613b19565b600060405180830381600087803b158015612b5c57600080fd5b505af1158015612b70573d6000803e3d6000fd5b5050336000908152609b60205260408120805493509150612b9083613e5d565b919050555081604051612ba39190613a60565b6040519081900381209033907f4c2f6dd3c99d950ddda88131093e3e393b8e548551839aa501d799a7e94c2a1490600090a35050565b60a0805460408051633fabe5a360e21b8152905160009384936001600160a01b03169263feaf968c9260048083019392829003018186803b158015612c1d57600080fd5b505afa158015612c31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5591906139c7565b505050915050600060a060009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c857600080fd5b333214612cca5760405162461bcd60e51b815260040161099d90613be0565b33600090815260b6602052604090205460ff1615612cfa5760405162461bcd60e51b815260040161099d90613b43565b60b554421015612d1c5760405162461bcd60e51b815260040161099d90613b6c565b6000612d2733611903565b33600081815260b6602052604090819020805460ff1916600117905560a754905163a9059cbb60e01b81529293506001600160a01b03169163a9059cbb91612d73918590600401613a7c565b602060405180830381600087803b158015612d8d57600080fd5b505af1158015612da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc59190613811565b5060405181815233907ffb99404fc1b8d4b16f0c3ae243aae54f053b9299e4eb8f11a5d59a331ceb44479060200160405180910390a250565b609c546040516364da10bf60e01b81526001600160a01b0383811660048301526000926a7c13bc4b2c133c56000000928492909116906364da10bf9060240160006040518083038186803b158015612e5557600080fd5b505afa158015612e69573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e919190810190613785565b90506000805b8251811015612ed557600081815260ae602052604090205460ff16612ec357612ec08483613ca1565b91505b80612ecd81613e5d565b915050612e97565b50949350505050565b612ee6612f8b565b609f80546001600160a01b0319166001600160a01b0392909216919091179055565b612f10612f8b565b6001600160a01b038116612f755760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099d565b61169081612fe5565b612f86612f8b565b609955565b6033546001600160a01b03163314611f045760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16611f045760405162461bcd60e51b815260040161099d90613c01565b600054610100900460ff166130855760405162461bcd60e51b815260040161099d90613c01565b611f0433612fe5565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526130e89085906130ee565b50505050565b6000613143826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131c09092919063ffffffff16565b80519091501561269e57808060200190518101906131619190613811565b61269e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161099d565b60606110dd848460008585600080866001600160a01b031685876040516131e79190613a60565b60006040518083038185875af1925050503d8060008114613224576040519150601f19603f3d011682016040523d82523d6000602084013e613229565b606091505b509150915061323a87838387613245565b979650505050505050565b606083156132b15782516132aa576001600160a01b0385163b6132aa5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161099d565b50816110dd565b6110dd83838151156132c65781518083602001fd5b8060405162461bcd60e51b815260040161099d9190613b06565b82805482825590600052602060002090810192821561331b579160200282015b8281111561331b578251825591602001919060010190613300565b506133279291506133f4565b5090565b82805482825590600052602060002090810192821561331b579160200282015b8281111561331b578251829060ff1690559160200191906001019061334b565b60018301918390821561331b5791602002820160005b838211156133be57835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302613381565b80156133eb5782816101000a81549060ff02191690556001016020816000010492830192600103026133be565b50506133279291505b5b8082111561332757600081556001016133f5565b600067ffffffffffffffff83111561342357613423613ea4565b613436601f8401601f1916602001613c4c565b905082815283838301111561344a57600080fd5b828260208301376000602084830101529392505050565b803561346c81613ecf565b919050565b600082601f83011261348257600080fd5b61349183833560208501613409565b9392505050565b805169ffffffffffffffffffff8116811461346c57600080fd5b6000602082840312156134c457600080fd5b813561349181613eba565b6000602082840312156134e157600080fd5b815161349181613eba565b600080604083850312156134ff57600080fd5b823561350a81613eba565b9150602083013561351a81613eba565b809150509250929050565b6000806000806080858703121561353b57600080fd5b843561354681613eba565b9350602085013561355681613eba565b925060408501359150606085013567ffffffffffffffff81111561357957600080fd5b8501601f8101871361358a57600080fd5b61359987823560208401613409565b91505092959194509250565b600080604083850312156135b857600080fd5b823567ffffffffffffffff8111156135cf57600080fd5b8301601f810185136135e057600080fd5b803560206135f56135f083613c7d565b613c4c565b80838252828201915082850189848660051b880101111561361557600080fd5b600095505b8486101561364157803561362d81613eba565b83526001959095019491830191830161361a565b5095506136519050868201613461565b93505050509250929050565b60006080828403121561366f57600080fd5b82601f83011261367e57600080fd5b6040516080810181811067ffffffffffffffff821117156136a1576136a1613ea4565b6040528083608081018610156136b657600080fd5b60005b60048110156136e25781356136cd81613ecf565b835260209283019291909101906001016136b9565b509195945050505050565b6000602080838503121561370057600080fd5b823567ffffffffffffffff81111561371757600080fd5b8301601f8101851361372857600080fd5b80356137366135f082613c7d565b80828252848201915084840188868560051b870101111561375657600080fd5b600094505b8385101561377957803583526001949094019391850191850161375b565b50979650505050505050565b6000602080838503121561379857600080fd5b825167ffffffffffffffff8111156137af57600080fd5b8301601f810185136137c057600080fd5b80516137ce6135f082613c7d565b80828252848201915084840188868560051b87010111156137ee57600080fd5b600094505b838510156137795780518352600194909401939185019185016137f3565b60006020828403121561382357600080fd5b815161349181613ecf565b60008060006060848603121561384357600080fd5b833561384e81613ecf565b9250602084013561385e81613ecf565b9150604084013561386e81613ecf565b809150509250925092565b6000806040838503121561388c57600080fd5b823567ffffffffffffffff8111156138a357600080fd5b6138af85828601613471565b925050602083013561351a81613ecf565b6000602082840312156138d257600080fd5b5035919050565b6000602082840312156138eb57600080fd5b5051919050565b6000806000806080858703121561390857600080fd5b843593506020850135925060408501359150606085013561392881613edd565b939692955090935050565b6000806040838503121561394657600080fd5b82359150602083013567ffffffffffffffff81111561396457600080fd5b61397085828601613471565b9150509250929050565b600080600080600060a0868803121561399257600080fd5b8535945060208601359350604086013592506060860135915060808601356139b981613edd565b809150509295509295909350565b600080600080600060a086880312156139df57600080fd5b6139e886613498565b9450602086015193506040860151925060608601519150613a0b60808701613498565b90509295509295909350565b600060208284031215613a2957600080fd5b815161349181613edd565b60008151808452613a4c816020860160208601613e31565b601f01601f19169290920160200192915050565b60008251613a72818460208701613e31565b9190910192915050565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03831681526040602082018190526000906110dd90830184613a34565b6020808252825182820181905260009190848201906040850190845b81811015613afa5783516001600160a01b031683529284019291840191600101613ad5565b50909695505050505050565b6020815260006134916020830184613a34565b604081526000613b2c6040830185613a34565b905060018060a01b03831660208301529392505050565b6020808252600f908201526e185b1c9958591e4818db185a5b5959608a1b604082015260600190565b6020808252600e908201526d6e6f7420636c61696d2074696d6560901b604082015260600190565b6020808252600c908201526b1b9bdd081bdc195b881e595d60a21b604082015260600190565b6020808252600c908201526b1bdd5d081bd9881b1a5b5a5d60a21b604082015260600190565b6020808252600790820152666f6e6c79454f4160c81b604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715613c7557613c75613ea4565b604052919050565b600067ffffffffffffffff821115613c9757613c97613ea4565b5060051b60200190565b60008219821115613cb457613cb4613e78565b500190565b600082613cd657634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613d16578160001904821115613cfc57613cfc613e78565b80851615613d0957918102915b93841c9390800290613ce0565b509250929050565b60006134918383613d35565b600061349160ff8416835b600082613d4457506001613dd2565b81613d5157506000613dd2565b8160018114613d675760028114613d7157613d8d565b6001915050613dd2565b60ff841115613d8257613d82613e78565b50506001821b613dd2565b5060208310610133831016604e8410600b8410161715613db0575081810a613dd2565b613dba8383613cdb565b8060001904821115613dce57613dce613e78565b0290505b92915050565b6000816000190483118215151615613df257613df2613e78565b500290565b600082821015613e0957613e09613e78565b500390565b600060ff821660ff841680821015613e2857613e28613e78565b90039392505050565b60005b83811015613e4c578181015183820152602001613e34565b838111156130e85750506000910152565b6000600019821415613e7157613e71613e78565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461169057600080fd5b801515811461169057600080fd5b60ff8116811461169057600080fdfe8ba9efccbabb60d1ee6c2431e64b92c6f46f002ee310368ac9013035be651318a2646970667358221220396ecc2be969bf4fdfc0fdfd9640b05f0b3da7c5ebc95bdbf85b71e4e1f7985a64736f6c63430008070033