0x608060405234801561001057600080fd5b50615c2a80620000216000396000f3fe6080604052600436106102115760003560e01c8063050d79701461021d57806307ed57f31461023f57806313bd610c1461025f578063177a8553146102a45780631ce855b5146102c457806328ab6732146102e45780632b07af0e1461031f57806337d20fff1461034c5780633a57cd631461036c5780633d266812146103b45780634056ff2b146103d5578063413003f8146103f5578063483ee6801461041c5780634d7773901461043c578063529dca32146104695780635c975abb1461047c578063601d4300146104945780636c75bbde146104a7578063715018a6146104c757806373df4151146104dc57806379f0371d1461050c5780637cbf7a551461053957806381cbd3ea1461055957806384acd1bb146105795780638c1577c9146105995780638da5cb5b146105b95780638f4bef1c146105ce578063910a6038146105ee578063944437c61461060e5780639e94d47714610621578063a53c008214610634578063a8fb93681461066c578063b3c102491461068c578063c20860af146106ac578063c3f765c6146106c1578063c6a4fd1c146106e1578063c962cfbd14610701578063d65a3a2e14610721578063d9cded9314610741578063da25b72514610761578063dcd8c42d14610781578063e1a45218146107a1578063e1cc30ee146107b7578063ee54cfe0146107d7578063ef61a131146107ec578063f2fde38b1461080c57600080fd5b3661021857005b600080fd5b34801561022957600080fd5b5061023d6102383660046145c7565b61082c565b005b34801561024b57600080fd5b5061023d61025a3660046147e2565b610856565b34801561026b57600080fd5b5061028f61027a3660046145c7565b60cf6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156102b057600080fd5b5061023d6102bf366004614899565b6108a7565b3480156102d057600080fd5b5061023d6102df366004614904565b610956565b3480156102f057600080fd5b506103116102ff3660046145c7565b60cb6020526000908152604090205481565b60405190815260200161029b565b34801561032b57600080fd5b5061031161033a3660046145c7565b60d36020526000908152604090205481565b34801561035857600080fd5b5061023d6103673660046145c7565b610983565b34801561037857600080fd5b5061039f610387366004614970565b60da6020526000908152604090205463ffffffff1681565b60405163ffffffff909116815260200161029b565b6103c76103c236600461498d565b610a30565b60405161029b929190614a33565b3480156103e157600080fd5b5061023d6103f0366004614a4e565b610d07565b34801561040157600080fd5b5061040a600f81565b60405160ff909116815260200161029b565b34801561042857600080fd5b5061023d610437366004614899565b610f4f565b34801561044857600080fd5b5060d85461045c906001600160a01b031681565b60405161029b9190614a9c565b61023d610477366004614ab0565b610fe3565b34801561048857600080fd5b5060655460ff1661028f565b61023d6104a2366004614ba5565b61108a565b3480156104b357600080fd5b5061023d6104c23660046145c7565b611678565b3480156104d357600080fd5b5061023d6116a2565b3480156104e857600080fd5b5061028f6104f73660046145c7565b60d26020526000908152604090205460ff1681565b34801561051857600080fd5b50610311610527366004614970565b60d96020526000908152604090205481565b34801561054557600080fd5b506103c7610554366004614c16565b6116b6565b34801561056557600080fd5b5060ca5461045c906001600160a01b031681565b34801561058557600080fd5b5060d75461045c906001600160a01b031681565b3480156105a557600080fd5b5060d45461045c906001600160a01b031681565b3480156105c557600080fd5b5061045c6119c6565b3480156105da57600080fd5b5060cd5461045c906001600160a01b031681565b3480156105fa57600080fd5b5060d05461045c906001600160a01b031681565b61023d61061c366004614c8b565b6119d5565b61023d61062f366004614d28565b611c24565b34801561064057600080fd5b5061031161064f366004614d69565b60cc60209081526000928352604080842090915290825290205481565b34801561067857600080fd5b5061023d610687366004614d97565b6120e1565b34801561069857600080fd5b5061023d6106a7366004614899565b6122a9565b3480156106b857600080fd5b5061023d612351565b3480156106cd57600080fd5b5060c95461045c906001600160a01b031681565b3480156106ed57600080fd5b5061023d6106fc366004614dde565b612361565b34801561070d57600080fd5b5061023d61071c366004614d69565b612397565b34801561072d57600080fd5b5061023d61073c366004614d69565b6123cd565b34801561074d57600080fd5b5061023d61075c366004614d97565b6123ea565b34801561076d57600080fd5b5060d65461045c906001600160a01b031681565b34801561078d57600080fd5b5061023d61079c366004614e15565b6125b2565b3480156107ad57600080fd5b5061031161271081565b3480156107c357600080fd5b5060d55461045c906001600160a01b031681565b3480156107e357600080fd5b5061023d612658565b3480156107f857600080fd5b5060ce5461045c906001600160a01b031681565b34801561081857600080fd5b5061023d6108273660046145c7565b612668565b6108346126de565b60d080546001600160a01b0319166001600160a01b0392909216919091179055565b3330146108975760405162461bcd60e51b815260206004820152600a6024820152692737ba16bab734bd32b760b11b60448201526064015b60405180910390fd5b6108a283838361273d565b505050565b6108af6126de565b60005b60ff811684111561094f5782828260ff168181106108d2576108d2614e86565b90506020020160208101906108e79190614eaa565b60d2600087878560ff1681811061090057610900614e86565b905060200201602081019061091591906145c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061094781614edd565b9150506108b2565b5050505050565b61095e6126de565b600061096983612d15565b60d8549091506108a2906001600160a01b03168383612ea3565b61098b6126de565b6001600160a01b0381166109a6576109a33347612ef9565b50565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906109d5903090600401614a9c565b602060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a169190614efd565b9050610a2c6001600160a01b0383163383612ea3565b5050565b60ce546000906060906001600160a01b03163314610a605760405162461bcd60e51b815260040161088e90614f16565b6001600160a01b038416610a865760405162461bcd60e51b815260040161088e90614f41565b60008060008086806020019051810190610aa091906150bb565b6040516370a0823160e01b815293975091955093509150479085906000906001600160a01b038316906370a0823190610add903090600401614a9c565b602060405180830381865afa158015610afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1e9190614efd565b6040516307ed57f360e01b815290915030906307ed57f390610b49906000903490899060040161513b565b600060405180830381600087803b158015610b6357600080fd5b505af1925050508015610b74575060015b610bce57610b8b6001600160a01b038c1634612ef9565b8a6001600160a01b03168c600080516020615b95833981519152600034604051610bb69291906151ec565b60405180910390a36001985050505050505050610cff565b600081836001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401610bfd9190614a9c565b602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190614efd565b610c489190615205565b905086811115610c7557610c6888610c608984615205565b88600061300f565b610c729082615205565b90505b610c896001600160a01b0384168d83612ea3565b8b6001600160a01b03168d600080516020615bb58339815191528a84604051610cb39291906151ec565b60405180910390a36000610cc74786615205565b90506000610cd58234615205565b90508015610cf057610cf06001600160a01b038f1682612ef9565b60019b50505050505050505050505b935093915050565b610d0f613477565b3360005b82811015610e8d576001600160a01b038216600090815260cc6020526040812081868685818110610d4657610d46614e86565b9050602002016020810190610d5b91906145c7565b6001600160a01b03166001600160a01b03168152602001908152602001600020541115610e7b576001600160a01b038216600090815260cc60205260408120610e2091849190878786818110610db357610db3614e86565b9050602002016020810190610dc891906145c7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054868685818110610dfb57610dfb614e86565b9050602002016020810190610e1091906145c7565b6001600160a01b03169190612ea3565b6001600160a01b038216600090815260cc6020526040812081868685818110610e4b57610e4b614e86565b9050602002016020810190610e6091906145c7565b6001600160a01b031681526020810191909152604001600020555b80610e858161521c565b915050610d13565b506001600160a01b038116600090815260cc6020908152604080832083805290915290205415610f44576001600160a01b038116600081815260cc60209081526040808320838052909152808220549051909181818185875af1925050503d8060008114610f17576040519150601f19603f3d011682016040523d82523d6000602084013e610f1c565b606091505b5050506001600160a01b038116600090815260cc602090815260408083208380529091528120555b50610a2c6001609755565b610f576126de565b60005b8381101561094f57610f91838383818110610f7757610f77614e86565b9050602002016020810190610f8c91906145c7565b6134d1565b60d96000878785818110610fa757610fa7614e86565b9050602002016020810190610fbc9190614970565b61ffff16815260208101919091526040016000205580610fdb8161521c565b915050610f5a565b60018451111561100657604051631224475160e31b815260040160405180910390fd5b6000845160011415611038576110358560008151811061102857611028614e86565b6020026020010151612d15565b90505b6000808780602001905181019061104f9190615237565b9150915082821461107357604051633cc534b360e11b815260040160405180910390fd5b61108081848888886134dd565b5050505050505050565b611092613477565b61109a61382a565b60cf60006110ae60e0860160c087016145c7565b6001600160a01b0316815260208101919091526040016000205460ff166110e75760405162461bcd60e51b815260040161088e9061527e565b6000806110fa60a08601608087016145c7565b6001600160a01b031614905060a08401356000821561114657611122610160870135836152a9565b3410156111415760405162461bcd60e51b815260040161088e906152c1565b611192565b85610160013534101561116b5760405162461bcd60e51b815260040161088e906152e9565b61117b60a08701608088016145c7565b90506111926001600160a01b038216333085613870565b6111a0610200870187615311565b15801591506111b457506000866102200135115b15611230576112236111ca610200880188615311565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925061121191505060a08a0160808b016145c7565b858a61022001358b61024001356138ae565b61122d9083615205565b91505b600061124a61124560e0890160c08a016145c7565b6139f1565b9050600085156112c15761127761126760a08a0160808b016145c7565b85611272898b615357565b61273d565b8161128b61124560e08b0160c08c016145c7565b6112959190615205565b90508761010001358110156112bc5760405162461bcd60e51b815260040161088e90615364565b611313565b6112d160e0890160c08a016145c7565b6001600160a01b03166112ea60a08a0160808b016145c7565b6001600160a01b0316146113105760405162461bcd60e51b815260040161088e90615393565b50825b6000611356828261132a60e08d0160c08e016145c7565b6001600160a01b0316148b60e001358c61014001358d61018001358e6101a001358f6101c00135613a80565b9050610160890135600061137060e08c0160c08d016145c7565b6001600160a01b031614156113905761138983826152a9565b90506113e3565b60cd546113c2906001600160a01b031660006113b260e08e0160c08f016145c7565b6001600160a01b03169190613b4f565b60cd546113e3906001600160a01b0316846113b260e08e0160c08f016145c7565b60cd60009054906101000a90046001600160a01b03166001600160a01b031663b9303701826040518061016001604052808e60c001602081019061142791906145c7565b6001600160a01b031681526020018781526020018e61012001602081019061144f91906145c7565b60405160200161145f91906153c1565b60405160208183030381529060405281526020018681526020018e602001602081019061148c9190614970565b61ffff1681526020018e60000160208101906114a891906145c7565b6040516020016114b891906153c1565b6040516020818303038152906040528152602001336001600160a01b03168152602001336040516020016114ec91906153c1565b60405160208183030381529060405281526020016040518060200160405280600081525081526020018e806101e001906115269190615311565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152602001604051806020016040528060008152508152508d606001602081019061159491906153ee565b611cca6040518563ffffffff1660e01b81526004016115b59392919061540b565b60206040518083038185885af11580156115d3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115f89190614efd565b50337fbd03545e4d48eee564840917c5af40401b8b9fd2dc9a3cb7ed025f823a70795e61162b60408d0160208e01614970565b61163b60e08e0160c08f016145c7565b868e604001602081019061164f9190614970565b60405161165f949392919061556e565b60405180910390a2505050505050506108a26001609755565b6116806126de565b60c980546001600160a01b0319166001600160a01b0392909216919091179055565b6116aa6126de565b6116b46000613c53565b565b60ce546000906060906001600160a01b031633146116e65760405162461bcd60e51b815260040161088e90614f16565b6001600160a01b03841661170c5760405162461bcd60e51b815260040161088e90614f41565b6000806000808680602001905181019061172691906150bb565b6040516370a0823160e01b8152939750919550935091508a906000906001600160a01b038316906370a0823190611761903090600401614a9c565b602060405180830381865afa15801561177e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a29190614efd565b905060006117af876139f1565b9050306001600160a01b03166307ed57f38e8e876040518463ffffffff1660e01b81526004016117e19392919061513b565b600060405180830381600087803b1580156117fb57600080fd5b505af192505050801561180c575060015b611866576118246001600160a01b0384168c8e612ea3565b8a6001600160a01b03168e600080516020615b958339815191528f8f60405161184e9291906151ec565b60405180910390a360019850505050505050506119bc565b600081611872896139f1565b61187c9190615205565b9050868111156118a15761189488610c608984615205565b61189e9082615205565b90505b6001600160a01b0388166118c7576118c26001600160a01b038d1682612ef9565b6118db565b6118db6001600160a01b0389168d83612ea3565b8b6001600160a01b03168f600080516020615bb58339815191528a846040516119059291906151ec565b60405180910390a36040516370a0823160e01b81526001600160a01b038516906370a0823190611939903090600401614a9c565b602060405180830381865afa158015611956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197a9190614efd565b6119849084615205565b9050808d11156119af576119af8c828f61199e9190615205565b6001600160a01b0387169190612ea3565b6001995050505050505050505b9550959350505050565b6033546001600160a01b031690565b6119dd613477565b6119e561382a565b6119f9610f8c610100870160e088016145c7565b60d96000611a0d60e0890160c08a01614970565b61ffff1661ffff1681526020019081526020016000205414611a425760405163015f445560e41b815260040160405180910390fd5b6000611ab4611a5760408801602089016145c7565b60408801356080890135611a6f6101608b018b615311565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506101808b01356101a08c0135613ca5565b90506000611ae5611acb6040890160208a016145c7565b60d85484906001600160a01b031660608b01358a8a613d57565b90506000611af660208901896145c7565b611b086101208a016101008b016145c7565b6101208a0135611b1c6101608c018c615311565b8989604051602001611b3497969594939291906155c6565b604051602081830303815290604052905060008282604051602001611b5a9291906156ff565b60408051601f198184030181529190529050611ba1611b7f60e08b0160c08c01614970565b611b906101008c0160e08d016145c7565b838c60a001358d6080013588613def565b337fd4f588a93e250bd46d54fcb2b43b58687596585e57f76c50bb4b8f2fa670422f611bd360e08c0160c08d01614970565b60d860009054906101000a90046001600160a01b0316868d610140016020810190611bfe9190614970565b604051611c0e949392919061556e565b60405180910390a25050505061094f6001609755565b611c2c613477565b611c3461382a565b60d26000611c4860808601606087016145c7565b6001600160a01b0316815260208101919091526040016000205460ff16611c815760405162461bcd60e51b815260040161088e9061527e565b600080611c9160208601866145c7565b6001600160a01b0316149050600080611cb060808701606088016145c7565b6001600160a01b03161490506020850135600080611cd46080890160608a016145c7565b90508415611d015782341015611cfc5760405162461bcd60e51b815260040161088e906152c1565b611d25565b611d0e60208901896145c7565b9150611d256001600160a01b038316333086613870565b611d33610120890189615311565b1580159150611d4757506000886101400135115b15611dc057611db3611d5d6101208a018a615311565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250899250611da191505060208c018c6145c7565b868c61014001358d61016001356138ae565b611dbd9084615205565b92505b6000611dd561124560808b0160608c016145c7565b90508615611e8657611df8611ded60208b018b6145c7565b856112728a8c615357565b600081611e0e61124560808d0160608e016145c7565b611e189190615205565b90508960800135811015611e3e5760405162461bcd60e51b815260040161088e90615364565b6000611e4e60808c013583615205565b90508015611e7f578615611e6b57611e663382612ef9565b611e7f565b611e7f6001600160a01b0385163383612ea3565b5050611ee5565b611e9360208a018a6145c7565b6001600160a01b0316611eac60808b0160608c016145c7565b6001600160a01b0316148015611ec9575088602001358960800135145b611ee55760405162461bcd60e51b815260040161088e90615393565b611ef66101008a0160e08b016145c7565b60d180546001600160a01b0319166001600160a01b03929092169190911790558415611f9d5760d0546001600160a01b03166360b068be60808b013560a08c0135611f4760e08e0160c08f01615718565b306040518563ffffffff1660e01b8152600401611f6693929190615741565b6000604051808303818588803b158015611f7f57600080fd5b505af1158015611f93573d6000803e3d6000fd5b505050505061204e565b60d054611fb8906001600160a01b0384811691166000613b4f565b60d054611fd6906001600160a01b03848116911660808c0135613b4f565b60d0546001600160a01b03166360b068be60a08b0135611ffc60e08d0160c08e01615718565b306040518463ffffffff1660e01b815260040161201b93929190615741565b600060405180830381600087803b15801561203557600080fd5b505af1158015612049573d6000803e3d6000fd5b505050505b60d180546001600160a01b0319169055337fd537dc28695f6231ddc5fbf43c2b0ac2768ca53bc9756eae6a73db545dd36e7161209060608c0160408d01614970565b6120a060808d0160608e016145c7565b8c608001358d6101000160208101906120b99190614970565b6040516120c9949392919061556e565b60405180910390a25050505050506108a26001609755565b6120e96126de565b60005b8181101561220457600060d3600085858581811061210c5761210c614e86565b905060200201602081019061212191906145c7565b6001600160a01b03166001600160a01b031681526020019081526020016000205411156121f2576121aa8460d3600086868681811061216257612162614e86565b905060200201602081019061217791906145c7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054858585818110610dfb57610dfb614e86565b600060d360008585858181106121c2576121c2614e86565b90506020020160208101906121d791906145c7565b6001600160a01b031681526020810191909152604001600020555b806121fc8161521c565b9150506120ec565b506000805260d3602052600080516020615b7583398151915254156108a257600080805260d3602052600080516020615b75833981519152546040516001600160a01b0386169281818185875af1925050503d8060008114612282576040519150601f19603f3d011682016040523d82523d6000602084013e612287565b606091505b5050600080805260d3602052600080516020615b758339815191525550505050565b6122b16126de565b60005b60ff811684111561094f5782828260ff168181106122d4576122d4614e86565b90506020020160208101906122e99190614eaa565b60cf600087878560ff1681811061230257612302614e86565b905060200201602081019061231791906145c7565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061234981614edd565b9150506122b4565b6123596126de565b6116b4613f5d565b6123696126de565b61ffff91909116600090815260da60205260409020805463ffffffff191663ffffffff909216919091179055565b61239f6126de565b60cd80546001600160a01b039384166001600160a01b03199182161790915560ce8054929093169116179055565b6123d56126de565b610a2c6001600160a01b038316826000613b4f565b6123f26126de565b6001600160a01b03831661243a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642d6164647265737360881b604482015260640161088e565b60005b8181101561250d57600060cb600085858581811061245d5761245d614e86565b905060200201602081019061247291906145c7565b6001600160a01b03166001600160a01b031681526020019081526020016000205411156124fb576124b38460cb600086868681811061216257612162614e86565b600060cb60008585858181106124cb576124cb614e86565b90506020020160208101906124e091906145c7565b6001600160a01b031681526020810191909152604001600020555b806125058161521c565b91505061243d565b506000805260cb602052600080516020615bd583398151915254156108a257600080805260cb602052600080516020615bd5833981519152546040516001600160a01b0386169281818185875af1925050503d806000811461258b576040519150601f19603f3d011682016040523d82523d6000602084013e612590565b606091505b5050600080805260cb602052600080516020615bd58339815191525550505050565b6125ba6126de565b60d680546001600160a01b03199081166001600160a01b038089169190911790925560d78054821683881617905560d48054821683861617905560d58054821683871617905560d8805490911691831691909117905561261c60026000612361565b61262860056007612361565b61263460066001612361565b61264060186002612361565b61264c60176003612361565b61094f601e6006612361565b6126606126de565b6116b4613fb1565b6126706126de565b6001600160a01b0381166126d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161088e565b6109a381613c53565b336126e76119c6565b6001600160a01b0316146116b45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161088e565b826001600160a01b03168160008151811061275a5761275a614e86565b6020026020010151602001516001600160a01b0316146127ac5760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b216ba37b5b2b760991b604482015260640161088e565b60008080805b84518160ff161015612d0c5760c95485516001600160a01b0390911690639835f32c90879060ff85169081106127ea576127ea614e86565b6020026020010151600001516040518263ffffffff1660e01b81526004016128129190614a9c565b602060405180830381865afa15801561282f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128539190615769565b6128925760405162461bcd60e51b815260206004820152601060248201526f09cdee85aeccae4d2ccd2cac85ac8caf60831b604482015260640161088e565b866001600160a01b0316858260ff16815181106128b1576128b1614e86565b6020026020010151602001516001600160a01b0316141561294357848160ff16815181106128e1576128e1614e86565b602002602001015160600151836128f891906152a9565b9250858311156129435760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590b585b5bdd5b9d0b5d1bcb5cd95b1b60521b604482015260640161088e565b60006001600160a01b0316858260ff168151811061296357612963614e86565b6020026020010151602001516001600160a01b03161415612a3457612a2d858260ff168151811061299657612996614e86565b6020026020010151600001516000878460ff16815181106129b9576129b9614e86565b602002602001015160400151888560ff16815181106129da576129da614e86565b602002602001015160600151898660ff16815181106129fb576129fb614e86565b6020026020010151606001518a8760ff1681518110612a1c57612a1c614e86565b602002602001015160800151613fea565b9350612ba3565b848160ff1681518110612a4957612a49614e86565b6020026020010151602001519150612a8d858260ff1681518110612a6f57612a6f614e86565b6020908102919091010151516001600160a01b038416906000613b4f565b612aeb858260ff1681518110612aa557612aa5614e86565b602002602001015160000151868360ff1681518110612ac657612ac6614e86565b602002602001015160600151846001600160a01b0316613b4f9092919063ffffffff16565b612b89858260ff1681518110612b0357612b03614e86565b602002602001015160000151868360ff1681518110612b2457612b24614e86565b602002602001015160200151878460ff1681518110612b4557612b45614e86565b602002602001015160400151888560ff1681518110612b6657612b66614e86565b60200260200101516060015160008a8760ff1681518110612a1c57612a1c614e86565b9350612ba3858260ff1681518110612a6f57612a6f614e86565b60018551612bb19190615205565b8160ff1614158015612bff57506001600160a01b03871685612bd4836001615786565b60ff1681518110612be757612be7614e86565b6020026020010151602001516001600160a01b031614155b15612d045784612c10826001615786565b60ff1681518110612c2357612c23614e86565b602002602001015160600151841015612c6b5760405162461bcd60e51b815260206004820152600a60248201526914dd19585b0b599d5b9960b21b604482015260640161088e565b84612c77826001615786565b60ff1681518110612c8a57612c8a614e86565b6020026020010151602001516001600160a01b0316858260ff1681518110612cb457612cb4614e86565b6020026020010151604001516001600160a01b031614612d045760405162461bcd60e51b815260206004820152600b60248201526a537465616c2d66756e647360a81b604482015260640161088e565b6001016127b2565b50505050505050565b600080600083806020019051810190612d2e91906157ab565b60d8546040516370a0823160e01b81529294509092506000916001600160a01b03909116906370a0823190612d67903090600401614a9c565b602060405180830381865afa158015612d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da89190614efd565b60d554604051630afd9fa560e31b81529192506001600160a01b0316906357ecfd2890612ddb9086908690600401615804565b6020604051808303816000875af1158015612dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1e9190615769565b5060d8546040516370a0823160e01b815282916001600160a01b0316906370a0823190612e4f903090600401614a9c565b602060405180830381865afa158015612e6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e909190614efd565b612e9a9190615205565b95945050505050565b6108a28363a9059cbb60e01b8484604051602401612ec29291906151ec565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614120565b80471015612f495760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161088e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612f96576040519150601f19603f3d011682016040523d82523d6000602084013e612f9b565b606091505b50509050806108a25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b606482015260840161088e565b60c954604080516341cbec7b60e11b815290516000926001600160a01b0316918391612710918491638397d8f6916004808201926020929091908290030181865afa158015613062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130869190614efd565b6130909088615829565b61309a9190615848565b90508451600014156130ec576001600160a01b038716600090815260cb60205260409020546130ca9082906152a9565b6001600160a01b038816600090815260cb6020526040902055915061346f9050565b6040516365a77ae360e01b81526000906001600160a01b038416906365a77ae39061311b90899060040161586a565b602060405180830381865afa158015613138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315c919061587d565b90506000836001600160a01b03166398030ddf886040518263ffffffff1660e01b815260040161318c919061586a565b602060405180830381865afa1580156131a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131cd91906158a0565b90508160ff1660021415613308576000846001600160a01b0316635e1e1da86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561321b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323f9190614efd565b905061271061324e8286615829565b6132589190615848565b6001600160a01b03808416600090815260cc60209081526040808320938f168352929052908120805490919061328f9084906152a9565b909155509398508893506127106132a68286615829565b6132b09190615848565b6132ba9085615205565b6001600160a01b038b16600090815260cb60205260409020549094506132e19085906152a9565b6001600160a01b038b16600090815260cb60205260409020555087945061346f9350505050565b8160ff166001141561346a5760c960009054906101000a90046001600160a01b03166001600160a01b03166365acd3506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338b9190614efd565b86116134215761339b8389615205565b6001600160a01b03808316600090815260cc60209081526040808320938e16835292905290812080549091906133d29084906152a9565b90915550506001600160a01b038916600090815260cb60205260409020546133fb9084906152a9565b6001600160a01b038a16600090815260cb60205260409020555086935061346f92505050565b6001600160a01b038916600090815260cb60205260409020546134459084906152a9565b6001600160a01b038a16600090815260cb60205260409020555090925061346f915050565b505050505b949350505050565b600260975414156134ca5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161088e565b6002609755565b6001600160a01b031690565b60d6546001600160a01b0316331461350857604051635485bd1b60e01b815260040160405180910390fd5b61ffff8216600090815260d96020526040902054831461353b5760405163015f445560e41b815260040160405180910390fd5b60008060008060008980602001905181019061355791906158bd565b9398509196509450925090506001600160a01b0385166135895760405162461bcd60e51b815260040161088e90614f41565b60d8546040516370a0823160e01b81526001600160a01b039091169060009082906370a08231906135be903090600401614a9c565b602060405180830381865afa1580156135db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ff9190614efd565b9050600061360c876139f1565b9050306001600160a01b03166307ed57f3848e876040518463ffffffff1660e01b815260040161363e9392919061513b565b600060405180830381600087803b15801561365857600080fd5b505af1925050508015613669575060015b6136d1576136816001600160a01b038416898e612ea3565b876001600160a01b03167f71476dc3bd2d9f787d8b47792eeeabaedb5b3edf5af70cece992bcc97cf65ccd848e6040516136bc9291906151ec565b60405180910390a2505050505050505061094f565b6000816136dd896139f1565b6136e79190615205565b90508681111561370c576136ff88610c608984615205565b6137099082615205565b90505b6001600160a01b0388166137325761372d6001600160a01b038a1682612ef9565b613746565b6137466001600160a01b0389168a83612ea3565b886001600160a01b03167f8e0ff4e9e0cff39c86f35d9e81c09fe798a1843eabebeacbeedad1bf3f820c7189836040516137819291906151ec565b60405180910390a26040516370a0823160e01b81526001600160a01b038516906370a08231906137b5903090600401614a9c565b602060405180830381865afa1580156137d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137f69190614efd565b6138009084615205565b9050808d111561381a5761381a89828f61199e9190615205565b5050505050505050505050505050565b60655460ff16156116b45760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161088e565b6040516001600160a01b03808516602483015283166044820152606481018290526138a89085906323b872dd60e01b90608401612ec2565b50505050565b60c9546040516398030ddf60e01b8152600091829182916001600160a01b0316906398030ddf906138e3908c9060040161586a565b602060405180830381865afa158015613900573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061392491906158a0565b90506127106139338688615829565b61393d9190615848565b9250831561399d576127106139528585615829565b61395c9190615848565b6001600160a01b038816600090815260d360205260409020549092506139839083906152a9565b6001600160a01b038816600090815260d360205260409020555b87156139c5576139c06139b08385615205565b6001600160a01b03831690612ef9565b6139e4565b6139e4816139d38486615205565b6001600160a01b038a169190612ea3565b50505b9695505050505050565b60006001600160a01b038216613a08575047919050565b6040516370a0823160e01b81526001600160a01b038316906370a0823190613a34903090600401614a9c565b602060405180830381865afa158015613a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a759190614efd565b92915050565b919050565b60008315613aac57612710613a958582615205565b613a9f908a615829565b613aa99190615848565b90505b86158015613aba5750848614155b15613b0f5785851115613aed57613ad18686615205565b613adc90600a615a28565b613ae69082615829565b9050613b0f565b613af78587615205565b613b0290600a615a28565b613b0c9082615848565b90505b8215613b3957612710613b228482615205565b613b2c9083615829565b613b369190615848565b90505b613b438282615205565b98975050505050505050565b801580613bc95750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613ba3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bc79190614efd565b155b613c345760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606482015260840161088e565b6108a28363095ea7b360e01b8484604051602401612ec29291906151ec565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160a01b038716158015613ce657613cc286886152a9565b341015613ce15760405162461bcd60e51b815260040161088e906152c1565b613d1b565b85341015613d065760405162461bcd60e51b815260040161088e906152e9565b613d1b6001600160a01b03891633308a613870565b845115801590613d2b5750600084115b15613d4b57613d3e85828a8a88886138ae565b613d489088615205565b96505b50949695505050505050565b60008115613db7576000613d6a866139f1565b9050613d7b88886112728688615357565b80613d85876139f1565b613d8f9190615205565b915084821015613db15760405162461bcd60e51b815260040161088e90615364565b506139e7565b846001600160a01b0316876001600160a01b031614613de85760405162461bcd60e51b815260040161088e90615393565b50846139e7565b604080516001808252818301909252600091816020015b613e0e61459a565b815260200190600190039081613e06579050509050613e2e8288886141f5565b81600081518110613e4157613e41614e86565b602002602001018190525060d660009054906101000a90046001600160a01b03166001600160a01b031663c055120e848989896000808b8f8f60d660009054906101000a90046001600160a01b03166001600160a01b03166324320c9f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ef191906158a0565b8c600f6040518d63ffffffff1660e01b8152600401613f1a9b9a99989796959493929190615a34565b60206040518083038185885af1158015613f38573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110809190615b1e565b613f6561382a565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613f9a3390565b604051613fa79190614a9c565b60405180910390a1565b613fb9614431565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33613f9a565b600080613ff6876139f1565b90506000614003876139f1565b90506000896001600160a01b031686866040516140209190615b3b565b60006040518083038185875af1925050503d806000811461405d576040519150601f19603f3d011682016040523d82523d6000602084013e614062565b606091505b50509050806140a15760405162461bcd60e51b815260206004820152600b60248201526a10d85b1b0b51985a5b195960aa1b604482015260640161088e565b60006140ac8a6139f1565b90506140b88885615205565b8110156140fd5760405162461bcd60e51b815260206004820152601360248201527214dbdb594b5bdb994b5cdd19585b0b599d5b99606a1b604482015260640161088e565b826141078a6139f1565b6141119190615205565b9b9a5050505050505050505050565b6000614175826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661447a9092919063ffffffff16565b90508051600014806141965750808060200190518101906141969190615769565b6108a25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161088e565b6141fd61459a565b60d85460d45460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926142339291169088906004016151ec565b6020604051808303816000875af1158015614252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142769190615769565b506000614282836134d1565b60d45461ffff8616600090815260da60205260408082205460d8549151637c2b6edb60e11b8152600481018b905263ffffffff9091166024820152604481018590526001600160a01b03918216606482015260848101859052939450909291169063f856ddb69060a4016020604051808303816000875af115801561430b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432f9190615b1e565b90506040518060400160405280600260ff16815260200160da600060d760009054906101000a90046001600160a01b03166001600160a01b0316639a8a05926040518163ffffffff1660e01b8152600401602060405180830381865afa15801561439d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143c19190615b57565b61ffff16815260208082019290925260409081016000205490516144159263ffffffff9092169186910160e09290921b6001600160e01b031916825260c01b6001600160c01b0319166004820152600c0190565b60408051601f1981840301815291905290529695505050505050565b60655460ff166116b45760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161088e565b606061346f848460008585600080866001600160a01b031685876040516144a19190615b3b565b60006040518083038185875af1925050503d80600081146144de576040519150601f19603f3d011682016040523d82523d6000602084013e6144e3565b606091505b50915091506144f4878383876144ff565b979650505050505050565b6060831561456b578251614564576001600160a01b0385163b6145645760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161088e565b508161346f565b61346f83838151156145805781518083602001fd5b8060405162461bcd60e51b815260040161088e919061586a565b60408051808201909152600081526060602082015290565b6001600160a01b03811681146109a357600080fd5b6000602082840312156145d957600080fd5b81356145e4816145b2565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715614623576146236145eb565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614651576146516145eb565b604052919050565b60006001600160401b03821115614672576146726145eb565b5060051b60200190565b60006001600160401b03821115614695576146956145eb565b50601f01601f191660200190565b600082601f8301126146b457600080fd5b81356146c76146c28261467c565b614629565b8181528460208386010111156146dc57600080fd5b816020850160208301376000918101602001919091529392505050565b60006147076146c284614659565b8381529050602080820190600585901b84018681111561472657600080fd5b845b818110156147d75780356001600160401b03808211156147485760008081fd5b9087019060a0828b03121561475d5760008081fd5b614765614601565b8235614770816145b2565b81528286013561477f816145b2565b81870152604083810135614792816145b2565b9082015260608381013590820152608080840135838111156147b45760008081fd5b6147c08d8287016146a3565b918301919091525086525050928201928201614728565b505050509392505050565b6000806000606084860312156147f757600080fd5b8335614802816145b2565b92506020840135915060408401356001600160401b0381111561482457600080fd5b8401601f8101861361483557600080fd5b614844868235602084016146f9565b9150509250925092565b60008083601f84011261486057600080fd5b5081356001600160401b0381111561487757600080fd5b6020830191508360208260051b850101111561489257600080fd5b9250929050565b600080600080604085870312156148af57600080fd5b84356001600160401b03808211156148c657600080fd5b6148d28883890161484e565b909650945060208701359150808211156148eb57600080fd5b506148f88782880161484e565b95989497509550505050565b6000806040838503121561491757600080fd5b82356001600160401b0381111561492d57600080fd5b614939858286016146a3565b925050602083013561494a816145b2565b809150509250929050565b61ffff811681146109a357600080fd5b8035613a7b81614955565b60006020828403121561498257600080fd5b81356145e481614955565b6000806000606084860312156149a257600080fd5b8335925060208401356149b4816145b2565b915060408401356001600160401b038111156149cf57600080fd5b614844868287016146a3565b60005b838110156149f65781810151838201526020016149de565b838111156138a85750506000910152565b60008151808452614a1f8160208601602086016149db565b601f01601f19169290920160200192915050565b821515815260406020820152600061346f6040830184614a07565b60008060208385031215614a6157600080fd5b82356001600160401b03811115614a7757600080fd5b614a838582860161484e565b90969095509350505050565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b600080600080600060a08688031215614ac857600080fd5b85356001600160401b0380821115614adf57600080fd5b614aeb89838a016146a3565b9650602091508188013581811115614b0257600080fd5b8801601f81018a13614b1357600080fd5b8035614b216146c282614659565b81815260059190911b8201840190848101908c831115614b4057600080fd5b8584015b83811015614b7857803586811115614b5c5760008081fd5b614b6a8f89838901016146a3565b845250918601918601614b44565b50985050505060408801359450614b9491505060608701614965565b949793965091946080013592915050565b600080600060408486031215614bba57600080fd5b83356001600160401b0380821115614bd157600080fd5b908501906102608288031215614be657600080fd5b90935060208501359080821115614bfc57600080fd5b50614c098682870161484e565b9497909650939450505050565b600080600080600060a08688031215614c2e57600080fd5b853594506020860135614c40816145b2565b9350604086013592506060860135614c57816145b2565b915060808601356001600160401b03811115614c7257600080fd5b614c7e888289016146a3565b9150509295509295909350565b600080600080600060608688031215614ca357600080fd5b85356001600160401b0380821115614cba57600080fd5b908701906101c0828a031215614ccf57600080fd5b90955060208701359080821115614ce557600080fd5b614cf189838a0161484e565b90965094506040880135915080821115614d0a57600080fd5b50614d178882890161484e565b969995985093965092949392505050565b600080600060408486031215614d3d57600080fd5b83356001600160401b0380821115614d5457600080fd5b908501906101808288031215614be657600080fd5b60008060408385031215614d7c57600080fd5b8235614d87816145b2565b9150602083013561494a816145b2565b600080600060408486031215614dac57600080fd5b8335614db7816145b2565b925060208401356001600160401b03811115614dd257600080fd5b614c098682870161484e565b60008060408385031215614df157600080fd5b8235614dfc81614955565b9150602083013563ffffffff8116811461494a57600080fd5b600080600080600060a08688031215614e2d57600080fd5b8535614e38816145b2565b94506020860135614e48816145b2565b93506040860135614e58816145b2565b92506060860135614e68816145b2565b91506080860135614e78816145b2565b809150509295509295909350565b634e487b7160e01b600052603260045260246000fd5b80151581146109a357600080fd5b600060208284031215614ebc57600080fd5b81356145e481614e9c565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff811415614ef457614ef4614ec7565b60010192915050565b600060208284031215614f0f57600080fd5b5051919050565b60208082526011908201527013db9b1e4b511b1b8b50dbdb9d1c9858dd607a1b604082015260600190565b60208082526010908201526f24b73b30b634b216b932b1b2b4bb32b960811b604082015260600190565b600082601f830112614f7c57600080fd5b8151614f8a6146c28261467c565b818152846020838601011115614f9f57600080fd5b61346f8260208301602087016149db565b600082601f830112614fc157600080fd5b81516020614fd16146c283614659565b82815260059290921b84018101918181019086841115614ff057600080fd5b8286015b848110156150b05780516001600160401b03808211156150145760008081fd5b9088019060a0828b03601f190181131561502e5760008081fd5b615036614601565b87840151615043816145b2565b8152604084810151615054816145b2565b828a0152606085810151615067816145b2565b808385015250608091508186015181840152508285015192508383111561508e5760008081fd5b61509c8d8a85880101614f6b565b908201528652505050918301918301614ff4565b509695505050505050565b600080600080608085870312156150d157600080fd5b84516150dc816145b2565b6020860151604087015191955093506001600160401b038082111561510057600080fd5b61510c88838901614f6b565b9350606087015191508082111561512257600080fd5b5061512f87828801614fb0565b91505092959194509250565b6000606080830160018060a01b0380881685526020878187015260408481880152838851808652608095508589019150858160051b8a0101848b0160005b838110156151d9578b8303607f19018552815180518916845287810151891688850152868101518916878501528a8101518b85015289015160a08a85018190526151c581860183614a07565b968901969450505090860190600101615179565b50909d9c50505050505050505050505050565b6001600160a01b03929092168252602082015260400190565b60008282101561521757615217614ec7565b500390565b600060001982141561523057615230614ec7565b5060010190565b6000806040838503121561524a57600080fd5b825160208401519092506001600160401b0381111561526857600080fd5b61527485828601614f6b565b9150509250929050565b602080825260119082015270125b9d985b1a590b5d1bdad95b8b5bdd5d607a1b604082015260600190565b600082198211156152bc576152bc614ec7565b500190565b6020808252600e908201526d125b9d985b1a590b585b5bdd5b9d60921b604082015260600190565b6020808252600e908201526d4e6f742d656e6f7567682d66656560901b604082015260600190565b6000808335601e1984360301811261532857600080fd5b8301803591506001600160401b0382111561534257600080fd5b60200191503681900382131561489257600080fd5b60006145e43684846146f9565b602080825260159082015274139bdd0b595b9bdd59da0b585b5bdd5b9d0b5bdd5d605a1b604082015260600190565b602080825260149082015273135a5cdccb5b585d18da0b5d1bdad95b8b5bdd5d60621b604082015260600190565b60609190911b6001600160601b031916815260140190565b6001600160401b03811681146109a357600080fd5b60006020828403121561540057600080fd5b81356145e4816153d9565b60c0815261541d60c082018551614a8f565b602084015160e0820152600060408501516101606101008181860152615447610220860184614a07565b92506060880151610120818188015260808a01519150610140828189015260a08b0151925060bf198089880301868a01526154828785614a07565b965060c08c015195506154996101808a0187614a8f565b60e08c0151955080898803016101a08a01526154b58787614a07565b9650848c0151955080898803016101c08a01526154d28787614a07565b9650828c0151955080898803016101e08a01526154ef8787614a07565b9650818c0151955080898803016102008a015250505050506155118282614a07565b91505061552960208401866001600160401b03169052565b8281036040840152600081526020810163ffffffff8516606085015290508281036080840152600081526020810183810360a0850152600081529050602081016139e7565b61ffff94851681526001600160a01b039390931660208401526040830191909152909116606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600060018060a01b03808a1683526020818a168185015260408981860152606060a0818701526155fa60a087018a8c61559d565b608087820381890152818983528583019050858a60051b8401018b60005b8c8110156156e657858303601f190184528135368f9003609e1901811261563e57600080fd5b8e01803561564b816145b2565b8b168452808a013561565c816145b2565b8b16848b01528089013561566f816145b2565b8b16848a015280880135888501528581013536829003601e1901811261569457600080fd5b810180356001600160401b038111156156ac57600080fd5b8036038313156156bb57600080fd5b60a0888701526156d160a08701828e850161559d565b968c0196955050509189019150600101615618565b5050809850505050505050505098975050505050505050565b82815260406020820152600061346f6040830184614a07565b60006020828403121561572a57600080fd5b81356001600160c81b03811681146145e457600080fd5b9283526001600160c81b039190911660208301526001600160a01b0316604082015260600190565b60006020828403121561577b57600080fd5b81516145e481614e9c565b600060ff821660ff84168060ff038211156157a3576157a3614ec7565b019392505050565b600080604083850312156157be57600080fd5b82516001600160401b03808211156157d557600080fd5b6157e186838701614f6b565b935060208501519150808211156157f757600080fd5b5061527485828601614f6b565b6040815260006158176040830185614a07565b8281036020840152612e9a8185614a07565b600081600019048311821515161561584357615843614ec7565b500290565b60008261586557634e487b7160e01b600052601260045260246000fd5b500490565b6020815260006145e46020830184614a07565b60006020828403121561588f57600080fd5b815160ff811681146145e457600080fd5b6000602082840312156158b257600080fd5b81516145e4816145b2565b600080600080600060a086880312156158d557600080fd5b85516158e0816145b2565b60208701519095506158f1816145b2565b6040870151606088015191955093506001600160401b038082111561591557600080fd5b61592189838a01614f6b565b9350608088015191508082111561593757600080fd5b50614c7e88828901614fb0565b600181815b8085111561597f57816000190482111561596557615965614ec7565b8085161561597257918102915b93841c9390800290615949565b509250929050565b60008261599657506001613a75565b816159a357506000613a75565b81600181146159b957600281146159c3576159df565b6001915050613a75565b60ff8411156159d4576159d4614ec7565b50506001821b613a75565b5060208310610133831016604e8410600b8410161715615a02575081810a613a75565b615a0c8383615944565b8060001904821115615a2057615a20614ec7565b029392505050565b60006145e48383615987565b600061ffff808e168352602060018060a01b03808f16828601526101606040860152615a6461016086018f614a07565b606086018e9052608086018d905260a086018c9052928a1660c086015288811660e08601528716610100850152838203610120850152855180835281830192600582901b8101830183890160005b84811015615af657838303601f190187528151805160ff1684528601516040878501819052615ae390850182614a07565b9787019793505090850190600101615ab2565b505060ff88166101408801529450615b0e9350505050565b9c9b505050505050505050505050565b600060208284031215615b3057600080fd5b81516145e4816153d9565b60008251615b4d8184602087016149db565b9190910192915050565b600060208284031215615b6957600080fd5b81516145e48161495556fe938258ec6d8d468a3507d140e1c026dc2afa285c097847a088da7b50946fb91b0ff4b6d6d7bc9166c25c7c17b18bf55f64bae866685b0b4043c85e7d0e796d605d720cf417229184f879d2c7c427ec962c487bc182bde9015be996e680b67f7a4239c2c8c3d9b94feb214b0f54d7c869ce1ceb63517be57644336cda4967a468a2646970667358221220f9393255807c32d9ea05e7377fe05d081d6cefe5fc3132ecf93eb9f124134f4f64736f6c634300080c0033