0x60c06040523480156200001157600080fd5b5060405162003b7e38038062003b7e8339810160408190526200003491620002cf565b83838383838360068484818181818d6001600160a01b0381166200007257604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200007d816200019d565b506001600160a01b038083166080528116620000ac57604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b158015620000f457600080fd5b505af115801562000109573d6000803e3d6000fd5b5050505050505050620001216200019860201b60201c565b60ff168360ff16101562000148576040516301e9714b60e41b815260040160405180910390fd5b6200015560068462000374565b6200016290600a62000493565b60a052506008915062000178905083826200053a565b5060096200018782826200053a565b505050505050505050505062000606565b600690565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200021557600080fd5b81516001600160401b0380821115620002325762000232620001ed565b604051601f8301601f19908116603f011681019082821181831017156200025d576200025d620001ed565b816040528381526020925086838588010111156200027a57600080fd5b600091505b838210156200029e57858201830151818301840152908201906200027f565b600093810190920192909252949350505050565b80516001600160a01b0381168114620002ca57600080fd5b919050565b60008060008060808587031215620002e657600080fd5b84516001600160401b0380821115620002fe57600080fd5b6200030c8883890162000203565b955060208701519150808211156200032357600080fd5b50620003328782880162000203565b9350506200034360408601620002b2565b91506200035360608601620002b2565b905092959194509250565b634e487b7160e01b600052601160045260246000fd5b60ff82811682821603908111156200039057620003906200035e565b92915050565b600181815b80851115620003d7578160001904821115620003bb57620003bb6200035e565b80851615620003c957918102915b93841c93908002906200039b565b509250929050565b600082620003f05750600162000390565b81620003ff5750600062000390565b8160018114620004185760028114620004235762000443565b600191505062000390565b60ff8411156200043757620004376200035e565b50506001821b62000390565b5060208310610133831016604e8410600b841016171562000468575081810a62000390565b62000474838362000396565b80600019048211156200048b576200048b6200035e565b029392505050565b6000620004a460ff841683620003df565b9392505050565b600181811c90821680620004c057607f821691505b602082108103620004e157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200053557600081815260208120601f850160051c81016020861015620005105750805b601f850160051c820191505b8181101562000531578281556001016200051c565b5050505b505050565b81516001600160401b03811115620005565762000556620001ed565b6200056e81620005678454620004ab565b84620004e7565b602080601f831160018114620005a657600084156200058d5750858301515b600019600386901b1c1916600185901b17855562000531565b600085815260208120601f198616915b82811015620005d757888601518255948401946001909101908401620005b6565b5085821015620005f65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161350c620006726000396000818161069f01528181611c8001528181611cf50152611f1301526000818161057101528181610a0f015281816110fe0152818161140a015281816117f101528181612023015281816121de01526122ae015261350c6000f3fe6080604052600436106102d15760003560e01c80637d25a05e11610179578063bb0b6a53116100d6578063d045a0dc1161008a578063f2fde38b11610064578063f2fde38b1461084f578063fc0c546a146104f5578063ff7bd03d1461086f57600080fd5b8063d045a0dc146107d6578063d4243885146107e9578063dd62ed3e1461080957600080fd5b8063bd815db0116100bb578063bd815db014610782578063c7c7f5b314610795578063ca5eb5e1146107b657600080fd5b8063bb0b6a5314610735578063bc70b3541461076257600080fd5b8063963efcaa1161012d578063a9059cbb11610112578063a9059cbb146106d5578063b731ea0a146106f5578063b98bd0701461071557600080fd5b8063963efcaa1461068d5780639f68b964146106c157600080fd5b8063857749b01161015e578063857749b01461048c5780638da5cb5b1461065a57806395d89b411461067857600080fd5b80637d25a05e146105fe57806382413eac1461063a57600080fd5b806323b872dd116102325780635535d461116101e65780636fc1b31e116101c05780636fc1b31e1461059357806370a08231146105b3578063715018a6146105e957600080fd5b80635535d461146105085780635a0dfe4d146105285780635e280f111461055f57600080fd5b80633400288b116102175780633400288b146104a85780633b6f743b146104c857806352ae2879146104f557600080fd5b806323b872dd1461046c578063313ce5671461048c57600080fd5b8063134d4f251161028957806317442b701161026e57806317442b701461041657806318160ddd146104385780631f5e13341461045757600080fd5b8063134d4f25146103ad578063156a0d0f146103d557600080fd5b80630d35b415116102ba5780630d35b41514610331578063111ecdad1461036057806313137d651461039857600080fd5b806306fdde03146102d6578063095ea7b314610301575b600080fd5b3480156102e257600080fd5b506102eb61088f565b6040516102f8919061246e565b60405180910390f35b34801561030d57600080fd5b5061032161031c366004612496565b610921565b60405190151581526020016102f8565b34801561033d57600080fd5b5061035161034c3660046124da565b61093b565b6040516102f89392919061250f565b34801561036c57600080fd5b50600454610380906001600160a01b031681565b6040516001600160a01b0390911681526020016102f8565b6103ab6103a6366004612620565b610a0d565b005b3480156103b957600080fd5b506103c2600281565b60405161ffff90911681526020016102f8565b3480156103e157600080fd5b50604080517f02e49c2c00000000000000000000000000000000000000000000000000000000815260016020820152016102f8565b34801561042257600080fd5b50604080516001815260026020820152016102f8565b34801561044457600080fd5b506007545b6040519081526020016102f8565b34801561046357600080fd5b506103c2600181565b34801561047857600080fd5b506103216104873660046126c0565b610aff565b34801561049857600080fd5b50604051600681526020016102f8565b3480156104b457600080fd5b506103ab6104c336600461271a565b610b25565b3480156104d457600080fd5b506104e86104e3366004612744565b610b3b565b6040516102f89190612796565b34801561050157600080fd5b5030610380565b34801561051457600080fd5b506102eb6105233660046127bf565b610ba2565b34801561053457600080fd5b5061032161054336600461271a565b63ffffffff919091166000908152600160205260409020541490565b34801561056b57600080fd5b506103807f000000000000000000000000000000000000000000000000000000000000000081565b34801561059f57600080fd5b506103ab6105ae3660046127f2565b610c47565b3480156105bf57600080fd5b506104496105ce3660046127f2565b6001600160a01b031660009081526005602052604090205490565b3480156105f557600080fd5b506103ab610cbc565b34801561060a57600080fd5b5061062161061936600461271a565b600092915050565b60405167ffffffffffffffff90911681526020016102f8565b34801561064657600080fd5b5061032161065536600461280f565b610cd0565b34801561066657600080fd5b506000546001600160a01b0316610380565b34801561068457600080fd5b506102eb610ce5565b34801561069957600080fd5b506104497f000000000000000000000000000000000000000000000000000000000000000081565b3480156106cd57600080fd5b506000610321565b3480156106e157600080fd5b506103216106f0366004612496565b610cf4565b34801561070157600080fd5b50600254610380906001600160a01b031681565b34801561072157600080fd5b506103ab6107303660046128bb565b610d02565b34801561074157600080fd5b506104496107503660046128fd565b60016020526000908152604090205481565b34801561076e57600080fd5b506102eb61077d366004612918565b610d1c565b6103ab6107903660046128bb565b610edd565b6107a86107a3366004612979565b61108a565b6040516102f89291906129e7565b3480156107c257600080fd5b506103ab6107d13660046127f2565b6110be565b6103ab6107e4366004612620565b61115d565b3480156107f557600080fd5b506103ab6108043660046127f2565b6111a5565b34801561081557600080fd5b50610449610824366004612a3a565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561085b57600080fd5b506103ab61086a3660046127f2565b611213565b34801561087b57600080fd5b5061032161088a366004612a68565b61126a565b60606008805461089e90612a84565b80601f01602080910402602001604051908101604052809291908181526020018280546108ca90612a84565b80156109175780601f106108ec57610100808354040283529160200191610917565b820191906000526020600020905b8154815290600101906020018083116108fa57829003601f168201915b5050505050905090565b60003361092f8185856112a0565b60019150505b92915050565b6040805180820190915260008082526020820152606061096e604051806040016040528060008152602001600081525090565b604080518082018252600080825267ffffffffffffffff6020808401829052845183815290810190945291955091826109ca565b6040805180820190915260008152606060208201528152602001906001900390816109a25790505b5093506000806109ef604089013560608a01356109ea60208c018c6128fd565b6112b2565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610a76576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60208701803590610a9090610a8b908a6128fd565b611307565b14610ae757610aa260208801886128fd565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260208801356024820152604401610a6d565b610af68787878787878761135c565b50505050505050565b600033610b0d8582856114dc565b610b18858585611573565b60019150505b9392505050565b610b2d611604565b610b37828261164a565b5050565b60408051808201909152600080825260208201526000610b6b604085013560608601356109ea60208801886128fd565b915050600080610b7b868461169f565b9092509050610b98610b9060208801886128fd565b8383886117db565b9695505050505050565b600360209081526000928352604080842090915290825290208054610bc690612a84565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf290612a84565b8015610c3f5780601f10610c1457610100808354040283529160200191610c3f565b820191906000526020600020905b815481529060010190602001808311610c2257829003601f168201915b505050505081565b610c4f611604565b600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a150565b610cc4611604565b610cce60006118bc565b565b6001600160a01b03811630145b949350505050565b60606009805461089e90612a84565b60003361092f818585611573565b610d0a611604565b610b37610d178284612ba5565b611924565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610d5090612a84565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7c90612a84565b8015610dc95780601f10610d9e57610100808354040283529160200191610dc9565b820191906000526020600020905b815481529060010190602001808311610dac57829003601f168201915b505050505090508051600003610e195783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610cdd9350505050565b6000839003610e29579050610cdd565b60028310610ea757610e7084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a3592505050565b80610e7e8460028188612cbb565b604051602001610e9093929190612ce5565b604051602081830303815290604052915050610cdd565b83836040517f9a6d49cd000000000000000000000000000000000000000000000000000000008152600401610a6d929190612d38565b60005b81811015610ff05736838383818110610efb57610efb612d4c565b9050602002810190610f0d9190612d7b565b9050610f40610f1f60208301836128fd565b602083013563ffffffff919091166000908152600160205260409020541490565b610f4a5750610fde565b3063d045a0dc60c08301358360a0810135610f69610100830183612db9565b610f7a610100890160e08a016127f2565b610f886101208a018a612db9565b6040518963ffffffff1660e01b8152600401610faa9796959493929190612e34565b6000604051808303818588803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b5050505050505b80610fe881612eea565b915050610ee0565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa15801561102f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110579190810190612f04565b6040517f8351eea7000000000000000000000000000000000000000000000000000000008152600401610a6d919061246e565b6110926123d6565b60408051808201909152600080825260208201526110b1858585611a7a565b915091505b935093915050565b6110c6611604565b6040517fca5eb5e10000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561114257600080fd5b505af1158015611156573d6000803e3d6000fd5b5050505050565b333014611196576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610af687878787878787610ae7565b6111ad611604565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610cb1565b61121b611604565b6001600160a01b03811661125e576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610a6d565b611267816118bc565b50565b600060208201803590600190839061128290866128fd565b63ffffffff1681526020810191909152604001600020541492915050565b6112ad8383836001611b75565b505050565b6000806112be85611c7c565b9150819050838110156110b6576040517f71c4efed0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604401610a6d565b63ffffffff811660009081526001602052604081205480610935576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff84166004820152602401610a6d565b600061136e61136b8787611cb3565b90565b9050600061139a826113886113838a8a611ccb565b611cee565b61139560208d018d6128fd565b611d24565b9050602886111561147a5760006113d76113ba60608c0160408d01612f72565b6113c760208d018d6128fd565b846113d28c8c611d4c565b611d97565b6040517f7cb590120000000000000000000000000000000000000000000000000000000081529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906114469086908d906000908790600401612f8f565b600060405180830381600087803b15801561146057600080fd5b505af1158015611474573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6114b360208d018d6128fd565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6001600160a01b03838116600090815260066020908152604080832093861683529290522054600019811461156d578181101561155e576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610a6d565b61156d84848484036000611b75565b50505050565b6001600160a01b0383166115b6576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610a6d565b6001600160a01b0382166115f9576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610a6d565b6112ad838383611dc9565b6000546001600160a01b03163314610cce576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610a6d565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b60608060006116fc85602001356116b586611f0c565b6116c260a0890189612db9565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f3892505050565b909350905060008161170f576001611712565b60025b905061173261172460208801886128fd565b8261077d60808a018a612db9565b6004549093506001600160a01b031680156117d1576040517f043a78eb0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063043a78eb9061178e9088908890600401612fc1565b602060405180830381865afa1580156117ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cf9190612fe6565b505b5050509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff16815260200161183e89611307565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611873929190613003565b6040805180830381865afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b391906130ca565b95945050505050565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b8151811015611a055761195682828151811061194557611945612d4c565b602002602001015160400151611a35565b81818151811061196857611968612d4c565b6020026020010151604001516003600084848151811061198a5761198a612d4c565b60200260200101516000015163ffffffff1663ffffffff16815260200190815260200160002060008484815181106119c4576119c4612d4c565b60200260200101516020015161ffff1661ffff16815260200190815260200160002090816119f29190613134565b50806119fd81612eea565b915050611927565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b67481604051610cb191906131f4565b600281015161ffff8116600314610b3757816040517f9a6d49cd000000000000000000000000000000000000000000000000000000008152600401610a6d919061246e565b611a826123d6565b6040805180820190915260008082526020820152600080611ab933604089013560608a0135611ab460208c018c6128fd565b611fca565b91509150600080611aca898461169f565b9092509050611af6611adf60208b018b6128fd565b8383611af0368d90038d018d61329b565b8b611ff0565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90611b44908d018d6128fd565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b6001600160a01b038416611bb8576040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152602401610a6d565b6001600160a01b038316611bfb576040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152602401610a6d565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561156d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611c6e91815260200190565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611ca981846132cd565b6109359190613308565b6000611cc26020828486612cbb565b610b1e9161331f565b6000611cdb602860208486612cbb565b611ce49161333d565b60c01c9392505050565b60006109357f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff8416613308565b60006001600160a01b038416611d3a5761dead93505b611d4484846120fb565b509092915050565b6060611d5b8260288186612cbb565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611db09493929190613385565b6040516020818303038152906040529050949350505050565b6001600160a01b038316611df4578060076000828254611de99190613403565b90915550611e7f9050565b6001600160a01b03831660009081526005602052604090205481811015611e60576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810182905260448101839052606401610a6d565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216611e9b57600780548290039055611eba565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611eff91815260200190565b60405180910390a3505050565b60006109357f0000000000000000000000000000000000000000000000000000000000000000836132cd565b8051606090151580611f99578484604051602001611f8592919091825260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016602082015260280190565b604051602081830303815290604052611fc0565b84843385604051602001611fb09493929190613416565b6040516020818303038152906040525b9150935093915050565b600080611fd88585856112b2565b9092509050611fe7868361214a565b94509492505050565b611ff86123d6565b60006120078460000151612199565b6020850151909150156120215761202184602001516121da565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016120718c611307565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b81526004016120ad929190613003565b60806040518083038185885af11580156120cb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120f0919061346f565b979650505050505050565b6001600160a01b03821661213e576040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152602401610a6d565b610b3760008383611dc9565b6001600160a01b03821661218d576040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152602401610a6d565b610b3782600083611dc9565b60008134146121d6576040517f9f704120000000000000000000000000000000000000000000000000000000008152346004820152602401610a6d565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225e91906134b9565b90506001600160a01b0381166122a0576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805133602482018190527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381811660448501526064808501889052855180860390910181526084909401909452602080840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001781528451610b3796881695899361156d93889360009283929091839182885af18061236f576040513d6000823e3d81fd5b50506000513d91508115612387578060011415612394565b6001600160a01b0384163b155b1561156d576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610a6d565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612419604051806040016040528060008152602001600081525090565b905290565b60005b83811015612439578181015183820152602001612421565b50506000910152565b6000815180845261245a81602086016020860161241e565b601f01601f19169290920160200192915050565b602081526000610b1e6020830184612442565b6001600160a01b038116811461126757600080fd5b600080604083850312156124a957600080fd5b82356124b481612481565b946020939093013593505050565b600060e082840312156124d457600080fd5b50919050565b6000602082840312156124ec57600080fd5b813567ffffffffffffffff81111561250357600080fd5b610cdd848285016124c2565b8351815260208085015190820152600060a08201604060a08185015281865180845260c08601915060c08160051b8701019350602080890160005b838110156125a7578887037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4001855281518051885283015183880187905261259487890182612442565b975050938201939082019060010161254a565b50508751606088015250505060208501516080850152509050610cdd565b6000606082840312156124d457600080fd5b60008083601f8401126125e957600080fd5b50813567ffffffffffffffff81111561260157600080fd5b60208301915083602082850101111561261957600080fd5b9250929050565b600080600080600080600060e0888a03121561263b57600080fd5b61264589896125c5565b965060608801359550608088013567ffffffffffffffff8082111561266957600080fd5b6126758b838c016125d7565b909750955060a08a0135915061268a82612481565b90935060c089013590808211156126a057600080fd5b506126ad8a828b016125d7565b989b979a50959850939692959293505050565b6000806000606084860312156126d557600080fd5b83356126e081612481565b925060208401356126f081612481565b929592945050506040919091013590565b803563ffffffff8116811461271557600080fd5b919050565b6000806040838503121561272d57600080fd5b6124b483612701565b801515811461126757600080fd5b6000806040838503121561275757600080fd5b823567ffffffffffffffff81111561276e57600080fd5b61277a858286016124c2565b925050602083013561278b81612736565b809150509250929050565b815181526020808301519082015260408101610935565b803561ffff8116811461271557600080fd5b600080604083850312156127d257600080fd5b6127db83612701565b91506127e9602084016127ad565b90509250929050565b60006020828403121561280457600080fd5b8135610b1e81612481565b60008060008060a0858703121561282557600080fd5b61282f86866125c5565b9350606085013567ffffffffffffffff81111561284b57600080fd5b612857878288016125d7565b909450925050608085013561286b81612481565b939692955090935050565b60008083601f84011261288857600080fd5b50813567ffffffffffffffff8111156128a057600080fd5b6020830191508360208260051b850101111561261957600080fd5b600080602083850312156128ce57600080fd5b823567ffffffffffffffff8111156128e557600080fd5b6128f185828601612876565b90969095509350505050565b60006020828403121561290f57600080fd5b610b1e82612701565b6000806000806060858703121561292e57600080fd5b61293785612701565b9350612945602086016127ad565b9250604085013567ffffffffffffffff81111561296157600080fd5b61296d878288016125d7565b95989497509550505050565b6000806000838503608081121561298f57600080fd5b843567ffffffffffffffff8111156129a657600080fd5b6129b2878288016124c2565b9450506040601f19820112156129c757600080fd5b5060208401915060608401356129dc81612481565b809150509250925092565b600060c0820190508351825267ffffffffffffffff60208501511660208301526040840151612a23604084018280518252602090810151910152565b5082516080830152602083015160a0830152610b1e565b60008060408385031215612a4d57600080fd5b8235612a5881612481565b9150602083013561278b81612481565b600060608284031215612a7a57600080fd5b610b1e83836125c5565b600181811c90821680612a9857607f821691505b6020821081036124d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715612b2357612b23612ad1565b60405290565b6040805190810167ffffffffffffffff81118282101715612b2357612b23612ad1565b604051601f8201601f1916810167ffffffffffffffff81118282101715612b7557612b75612ad1565b604052919050565b600067ffffffffffffffff821115612b9757612b97612ad1565b50601f01601f191660200190565b600067ffffffffffffffff80841115612bc057612bc0612ad1565b8360051b6020612bd1818301612b4c565b868152918501918181019036841115612be957600080fd5b865b84811015612caf57803586811115612c035760008081fd5b88016060368290031215612c175760008081fd5b612c1f612b00565b612c2882612701565b8152612c358683016127ad565b8682015260408083013589811115612c4d5760008081fd5b929092019136601f840112612c625760008081fd5b8235612c75612c7082612b7d565b612b4c565b8181523689838701011115612c8a5760008081fd5b818986018a830137600091810189019190915290820152845250918301918301612beb565b50979650505050505050565b60008085851115612ccb57600080fd5b83861115612cd857600080fd5b5050820193919092039150565b60008451612cf781846020890161241e565b8201838582376000930192835250909392505050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b602081526000610cdd602083018486612d0d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612daf57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612dee57600080fd5b83018035915067ffffffffffffffff821115612e0957600080fd5b60200191503681900382131561261957600080fd5b67ffffffffffffffff8116811461126757600080fd5b63ffffffff612e4289612701565b1681526020880135602082015260006040890135612e5f81612e1e565b67ffffffffffffffff811660408401525087606083015260e06080830152612e8b60e083018789612d0d565b6001600160a01b03861660a084015282810360c0840152612ead818587612d0d565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006000198203612efd57612efd612ebb565b5060010190565b600060208284031215612f1657600080fd5b815167ffffffffffffffff811115612f2d57600080fd5b8201601f81018413612f3e57600080fd5b8051612f4c612c7082612b7d565b818152856020838501011115612f6157600080fd5b6118b382602083016020860161241e565b600060208284031215612f8457600080fd5b8135610b1e81612e1e565b6001600160a01b038516815283602082015261ffff83166040820152608060608201526000610b986080830184612442565b604081526000612fd46040830185612442565b82810360208401526118b38185612442565b600060208284031215612ff857600080fd5b8151610b1e81612736565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a0608084015261303960e0840182612442565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a08501526130748282612442565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b6000604082840312156130ac57600080fd5b6130b4612b29565b9050815181526020820151602082015292915050565b6000604082840312156130dc57600080fd5b610b1e838361309a565b601f8211156112ad57600081815260208120601f850160051c8101602086101561310d5750805b601f850160051c820191505b8181101561312c57828155600101613119565b505050505050565b815167ffffffffffffffff81111561314e5761314e612ad1565b6131628161315c8454612a84565b846130e6565b602080601f831160018114613197576000841561317f5750858301515b600019600386901b1c1916600185901b17855561312c565b600085815260208120601f198616915b828110156131c6578886015182559484019460019091019084016131a7565b50858210156131e45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561328d578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805163ffffffff1684528781015161ffff1688850152860151606087850181905261327981860183612442565b96890196945050509086019060010161321b565b509098975050505050505050565b6000604082840312156132ad57600080fd5b6132b5612b29565b82358152602083013560208201528091505092915050565b600082613303577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761093557610935612ebb565b8035602083101561093557600019602084900360031b1b1692915050565b7fffffffffffffffff000000000000000000000000000000000000000000000000813581811691600885101561337d5780818660080360031b1b83161692505b505092915050565b7fffffffffffffffff0000000000000000000000000000000000000000000000008560c01b1681527fffffffff000000000000000000000000000000000000000000000000000000008460e01b16600882015282600c820152600082516133f381602c85016020870161241e565b91909101602c0195945050505050565b8082018082111561093557610935612ebb565b8481527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b1660208201528260288201526000825161345f81604885016020870161241e565b9190910160480195945050505050565b60006080828403121561348157600080fd5b613489612b00565b82518152602083015161349b81612e1e565b60208201526134ad846040850161309a565b60408201529392505050565b6000602082840312156134cb57600080fd5b8151610b1e8161248156fea2646970667358221220ddd5bfd55290968138f290d00137bb3a4f6759c7245af12596614a33b1b8b08b64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000001a44076050125825900e736c501f859c50fe728c0000000000000000000000003e75cf9edee7c45a63be02892d3460551c1bd82b0000000000000000000000000000000000000000000000000000000000000004486172640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044841524400000000000000000000000000000000000000000000000000000000