60c06040523480156200001157600080fd5b50604051620039b8380380620039b883398101604081905262000034916200006d565b6001600160a01b0381166080528060128162000052600683620000b5565b6200005f90600a620001d4565b60a05250620001e592505050565b6000602082840312156200008057600080fd5b81516001600160a01b03811681146200009857600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620000d157620000d16200009f565b92915050565b600181815b8085111562000118578160001904821115620000fc57620000fc6200009f565b808516156200010a57918102915b93841c9390800290620000dc565b509250929050565b6000826200013157506001620000d1565b816200014057506000620000d1565b8160018114620001595760028114620001645762000184565b6001915050620000d1565b60ff8411156200017857620001786200009f565b50506001821b620000d1565b5060208310610133831016604e8410600b8410161715620001a9575081810a620000d1565b620001b58383620000d7565b8060001904821115620001cc57620001cc6200009f565b029392505050565b60006200009860ff84168362000120565b60805160a051613767620002516000396000818161079d015281816120ba0152818161226d015261233301526000818161065801528181610c9a0152818161163e0152818161199001528181611cb501528181611e830152818161243401526124ed01526137676000f3fe60806040526004361061036b5760003560e01c8063857749b0116101c6578063bd815db0116100f7578063e2179b8e11610095578063f2fde38b1161006f578063f2fde38b14610944578063fc0c546a146105cf578063ff7bd03d14610964578063ffae15ba1461041c57600080fd5b8063e2179b8e1461041c578063e5aa3d581461092f578063ece866b91461041c57600080fd5b8063ca5eb5e1116100d1578063ca5eb5e1146108bc578063d045a0dc146108dc578063d4243885146108ef578063dd62ed3e1461090f57600080fd5b8063bd815db014610888578063c3da42b81461041c578063c7c7f5b31461089b57600080fd5b8063b4f40c6111610164578063b8c9d3651161013e578063b8c9d3651461041c578063b98bd07014610808578063bb0b6a5314610828578063bc70b3541461086857600080fd5b8063b4f40c611461041c578063b582ec5f1461041c578063b731ea0a146107f357600080fd5b806395d89b41116101a057806395d89b4114610776578063963efcaa1461078b5780639f68b964146107bf578063a9059cbb146107d357600080fd5b8063857749b01461074d5780638a054ac21461041c5780638da5cb5b1461076157600080fd5b806326121ff0116102a05780635a0dfe4d1161023e57806370a082311161021857806370a082311461069a578063715018a6146106dd5780637d25a05e146106f257806382413eac1461072d57600080fd5b80635a0dfe4d146106025780635e280f11146106465780636fc1b31e1461067a57600080fd5b80633b6f743b1161027a5780633b6f743b146105a25780634df7e3d01461041c57806352ae2879146105cf5780635535d461146105e257600080fd5b806326121ff01461041c578063313ce567146105605780633400288b1461058257600080fd5b806313137d651161030d57806317442b70116102e757806317442b70146104cc57806318160ddd146104ed5780631f5e13341461052b57806323b872dd1461054057600080fd5b806313137d651461046a578063134d4f251461047d578063156a0d0f146104a557600080fd5b80630d35b415116103495780630d35b415146103ed5780630dbe671f1461041c578063111ecdad146104285780631249c58b1461045557600080fd5b806306fdde0314610370578063077f224a1461039b578063095ea7b3146103bd575b600080fd5b34801561037c57600080fd5b50610385610984565b6040516103929190612705565b60405180910390f35b3480156103a757600080fd5b506103bb6103b6366004612818565b610a47565b005b3480156103c957600080fd5b506103dd6103d836600461288f565b610b62565b6040519015158152602001610392565b3480156103f957600080fd5b5061040d6104083660046128d3565b610b7c565b60405161039293929190612907565b3480156103bb57600080fd5b34801561043457600080fd5b5061043d610c4f565b6040516001600160a01b039091168152602001610392565b34801561046157600080fd5b506103bb610c84565b6103bb6104783660046129fa565b610c98565b34801561048957600080fd5b50610492600281565b60405161ffff9091168152602001610392565b3480156104b157600080fd5b506040805162b9270b60e21b81526001602082015201610392565b3480156104d857600080fd5b50604080516001808252602082015201610392565b3480156104f957600080fd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610392565b34801561053757600080fd5b50610492600181565b34801561054c57600080fd5b506103dd61055b366004612a99565b610d58565b34801561056c57600080fd5b5060125b60405160ff9091168152602001610392565b34801561058e57600080fd5b506103bb61059d366004612af3565b610d7e565b3480156105ae57600080fd5b506105c26105bd366004612b1d565b610deb565b6040516103929190612b6e565b3480156105db57600080fd5b503061043d565b3480156105ee57600080fd5b506103856105fd366004612b97565b610e52565b34801561060e57600080fd5b506103dd61061d366004612af3565b63ffffffff91909116600090815260008051602061371283398151915260205260409020541490565b34801561065257600080fd5b5061043d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561068657600080fd5b506103bb610695366004612bca565b610f2d565b3480156106a657600080fd5b5061051d6106b5366004612bca565b6001600160a01b031660009081526000805160206136f2833981519152602052604090205490565b3480156106e957600080fd5b506103bb610fa9565b3480156106fe57600080fd5b5061071561070d366004612af3565b600092915050565b6040516001600160401b039091168152602001610392565b34801561073957600080fd5b506103dd610748366004612be7565b610fbb565b34801561075957600080fd5b506006610570565b34801561076d57600080fd5b5061043d610fd0565b34801561078257600080fd5b50610385610ff9565b34801561079757600080fd5b5061051d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107cb57600080fd5b5060006103dd565b3480156107df57600080fd5b506103dd6107ee36600461288f565b611038565b3480156107ff57600080fd5b5061043d611046565b34801561081457600080fd5b506103bb610823366004612c91565b61106f565b34801561083457600080fd5b5061051d610843366004612cd2565b63ffffffff166000908152600080516020613712833981519152602052604090205490565b34801561087457600080fd5b50610385610883366004612ced565b6111f0565b6103bb610896366004612c91565b611386565b6108ae6108a9366004612d4d565b61151d565b604051610392929190612daf565b3480156108c857600080fd5b506103bb6108d7366004612bca565b611617565b6103bb6108ea3660046129fa565b61169d565b3480156108fb57600080fd5b506103bb61090a366004612bca565b6116cc565b34801561091b57600080fd5b5061051d61092a366004612e01565b611740565b34801561093b57600080fd5b506103bb61178a565b34801561095057600080fd5b506103bb61095f366004612bca565b611798565b34801561097057600080fd5b506103dd61097f366004612e2f565b6117d6565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060916000805160206136f2833981519152916109c390612e4b565b80601f01602080910402602001604051908101604052809291908181526020018280546109ef90612e4b565b8015610a3c5780601f10610a1157610100808354040283529160200191610a3c565b820191906000526020600020905b815481529060010190602001808311610a1f57829003601f168201915b505050505091505090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610a8c5750825b90506000826001600160401b03166001148015610aa85750303b155b905081158015610ab6575080155b15610ad45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610afe57845460ff60401b1916600160401b1785555b610b098888886117f4565b610b1286611814565b8315610b5857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b600033610b70818585611825565b60019150505b92915050565b60408051808201909152600080825260208201526060610baf604051806040016040528060008152602001600081525090565b60408051808201825260008082526001600160401b03602080840182905284518381529081019094529195509182610c0a565b604080518082019091526000815260606020820152815260200190600190039081610be25790505b509350600080610c2f604089013560608a0135610c2a60208c018c612cd2565b611832565b60408051808201909152918252602082015296989597505050505050565b565b6000807f41db8a78b0206aba5c54bcbfc2bda0d84082a84eb88e680379a57b9e9f653c005b546001600160a01b031692915050565b610c4d3369d3c21bcecceda1000000611876565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610ce8576040516391ac5e4f60e01b81523360048201526024015b60405180910390fd5b60208701803590610d0290610cfd908a612cd2565b6118b0565b14610d4057610d146020880188612cd2565b60405163309afaf360e21b815263ffffffff909116600482015260208801356024820152604401610cdf565b610d4f878787878787876118fb565b50505050505050565b600033610d66858285611a62565b610d71858585611ac8565b60019150505b9392505050565b610d86611b27565b63ffffffff82166000818152600080516020613712833981519152602081815260409283902085905582519384528301849052917f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b91015b60405180910390a1505050565b60408051808201909152600080825260208201526000610e1b60408501356060860135610c2a6020880188612cd2565b915050600080610e2b8684611b59565b9092509050610e48610e406020880188612cd2565b838388611c9f565b9695505050505050565b63ffffffff821660009081527f8d2bda5d9f6ffb5796910376005392955773acee5548d0fcdb10e7c264ea00006020818152604080842061ffff8616855290915290912080546060929190610ea690612e4b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed290612e4b565b8015610f1f5780601f10610ef457610100808354040283529160200191610f1f565b820191906000526020600020905b815481529060010190602001808311610f0257829003601f168201915b505050505091505092915050565b610f35611b27565b7f41db8a78b0206aba5c54bcbfc2bda0d84082a84eb88e680379a57b9e9f653c0080546001600160a01b0319166001600160a01b03831690811782556040519081527ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197906020015b60405180910390a15050565b610fb1611b27565b610c4d6000611d80565b6001600160a01b03811630145b949350505050565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300610c74565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060916000805160206136f2833981519152916109c390612e4b565b600033610b70818585611ac8565b6000807fefb041d771d6daaa55702fff6eb740d63ba559a75d2d1d3e151c78ff2480b600610c74565b611077611b27565b7f8d2bda5d9f6ffb5796910376005392955773acee5548d0fcdb10e7c264ea000060005b828110156111be576110dd8484838181106110b8576110b8612e7f565b90506020028101906110ca9190612e95565b6110d8906040810190612eb5565b611df1565b8383828181106110ef576110ef612e7f565b90506020028101906111019190612e95565b61110f906040810190612eb5565b83600087878681811061112457611124612e7f565b90506020028101906111369190612e95565b611144906020810190612cd2565b63ffffffff1663ffffffff168152602001908152602001600020600087878681811061117257611172612e7f565b90506020028101906111849190612e95565b611195906040810190602001612efb565b61ffff1681526020810191909152604001600020916111b5919083612f66565b5060010161109b565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b6748383604051610dde92919061304e565b63ffffffff841660009081527f8d2bda5d9f6ffb5796910376005392955773acee5548d0fcdb10e7c264ea00006020818152604080842061ffff8816855290915282208054606093919061124390612e4b565b80601f016020809104026020016040519081016040528092919081815260200182805461126f90612e4b565b80156112bc5780601f10611291576101008083540402835291602001916112bc565b820191906000526020600020905b81548152906001019060200180831161129f57829003601f168201915b50505050509050805160000361130d5784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610fc8945050505050565b600084900361131f579150610fc89050565b60028410611369576113318585611df1565b8061133f8560028189613132565b6040516020016113519392919061315c565b60405160208183030381529060405292505050610fc8565b8484604051639a6d49cd60e01b8152600401610cdf929190613184565b60005b8181101561149c57368383838181106113a4576113a4612e7f565b90506020028101906113b69190613198565b90506113f66113c86020830183612cd2565b602083013563ffffffff91909116600090815260008051602061371283398151915260205260409020541490565b6114005750611494565b3063d045a0dc60c08301358360a081013561141f610100830183612eb5565b611430610100890160e08a01612bca565b61143e6101208a018a612eb5565b6040518963ffffffff1660e01b815260040161146097969594939291906131c4565b6000604051808303818588803b15801561147957600080fd5b505af115801561148d573d6000803e3d6000fd5b5050505050505b600101611389565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611503919081019061324a565b604051638351eea760e01b8152600401610cdf9190612705565b61152561266e565b604080518082019091526000808252602082015260008061155b6040880135606089013561155660208b018b612cd2565b611e33565b9150915060008061156c8984611b59565b909250905061159861158160208b018b612cd2565b8383611592368d90038d018d6132b7565b8b611e50565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a906115e6908d018d612cd2565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b61161f611b27565b60405163ca5eb5e160e01b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b15801561168257600080fd5b505af1158015611696573d6000803e3d6000fd5b5050505050565b3330146116bd5760405163029a949d60e31b815260040160405180910390fd5b610d4f87878787878787610d40565b6116d4611b27565b7fefb041d771d6daaa55702fff6eb740d63ba559a75d2d1d3e151c78ff2480b60080546001600160a01b0319166001600160a01b03831690811782556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090602001610f9d565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b610c4d3363075bcd15611876565b6117a0611b27565b6001600160a01b0381166117ca57604051631e4fbdf760e01b815260006004820152602401610cdf565b6117d381611d80565b50565b6000602082018035906117ed906108439085612cd2565b1492915050565b6117fc611f5b565b6118068383611fa4565b61180f81611fb6565b505050565b61181c611f5b565b6117d381611fc7565b61180f8383836001611fcf565b60008061183e856120b6565b91508190508381101561186e576040516371c4efed60e01b81526004810182905260248101859052604401610cdf565b935093915050565b6001600160a01b0382166118a05760405163ec442f0560e01b815260006004820152602401610cdf565b6118ac600083836120ed565b5050565b63ffffffff811660009081526000805160206137128339815191526020819052604082205480610d775760405163f6ff4fb760e01b815263ffffffff85166004820152602401610cdf565b600061190d61190a878761222b565b90565b90506000611939826119276119228a8a612243565b612266565b61193460208d018d612cd2565b61229b565b90506028861115611a0057600061197661195960608c0160408d016132e9565b61196660208d018d612cd2565b846119718c8c6122af565b6122fa565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906119cc9086908d906000908790600401613306565b600060405180830381600087803b1580156119e657600080fd5b505af11580156119fa573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c611a3960208d018d612cd2565b6040805163ffffffff9092168252602082018690520160405180910390a3505050505050505050565b6000611a6e8484611740565b90506000198114611ac25781811015611ab357604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610cdf565b611ac284848484036000611fcf565b50505050565b6001600160a01b038316611af257604051634b637e8f60e11b815260006004820152602401610cdf565b6001600160a01b038216611b1c5760405163ec442f0560e01b815260006004820152602401610cdf565b61180f8383836120ed565b33611b30610fd0565b6001600160a01b031614610c4d5760405163118cdaa760e01b8152336004820152602401610cdf565b6060806000611bb68560200135611b6f8661232c565b611b7c60a0890189612eb5565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061235892505050565b9093509050600081611bc9576001611bcc565b60025b9050611bec611bde6020880188612cd2565b8261088360808a018a612eb5565b7f41db8a78b0206aba5c54bcbfc2bda0d84082a84eb88e680379a57b9e9f653c008054919450906001600160a01b031615611c9557805460405163043a78eb60e01b81526001600160a01b039091169063043a78eb90611c529088908890600401613337565b602060405180830381865afa158015611c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c93919061335c565b505b5050509250929050565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff168152602001611d02896118b0565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611d37929190613379565b6040805180830381865afa158015611d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d779190613422565b95945050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000611e006002828486613132565b611e099161343e565b60f01c90506003811461180f578282604051639a6d49cd60e01b8152600401610cdf929190613184565b600080611e41858585611832565b909250905061186e33836123d2565b611e5861266e565b6000611e678460000151612408565b602085015190915015611e8157611e818460200151612430565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff168152602001611ed18c6118b0565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611f0d929190613379565b60806040518083038185885af1158015611f2b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f50919061346e565b979650505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610c4d57604051631afcd79f60e31b815260040160405180910390fd5b611fac611f5b565b6118ac8282612512565b611fbe611f5b565b6117d381612563565b6117a0611f5b565b6000805160206136f28339815191526001600160a01b0385166120085760405163e602df0560e01b815260006004820152602401610cdf565b6001600160a01b03841661203257604051634a1406b160e11b815260006004820152602401610cdf565b6001600160a01b0380861660009081526001830160209081526040808320938816835292905220839055811561169657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516120a791815260200190565b60405180910390a35050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006120e381846134eb565b610b76919061350d565b6000805160206136f28339815191526001600160a01b038416612129578181600201600082825461211e9190613524565b9091555061219b9050565b6001600160a01b0384166000908152602082905260409020548281101561217c5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610cdf565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b0383166121b95760028101805483900390556121d8565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161221d91815260200190565b60405180910390a350505050565b600061223a6020828486613132565b610d7791613537565b6000612253602860208486613132565b61225c91613555565b60c01c9392505050565b6000610b767f00000000000000000000000000000000000000000000000000000000000000006001600160401b03841661350d565b60006122a78484611876565b509092915050565b60606122be8260288186613132565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b6060848484846040516020016123139493929190613583565b6040516020818303038152906040529050949350505050565b6000610b767f0000000000000000000000000000000000000000000000000000000000000000836134eb565b80516060901515806123a157848460405160200161238d92919091825260c01b6001600160c01b031916602082015260280190565b6040516020818303038152906040526123c8565b848433856040516020016123b894939291906135d2565b6040516020818303038152906040525b9150935093915050565b6001600160a01b0382166123fc57604051634b637e8f60e11b815260006004820152602401610cdf565b6118ac826000836120ed565b600081341461242c576040516304fb820960e51b8152346004820152602401610cdf565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b49190613615565b90506001600160a01b0381166124dd576040516329b99a9560e11b815260040160405180910390fd5b6118ac6001600160a01b038216337f000000000000000000000000000000000000000000000000000000000000000085612574565b61251a611f5b565b6000805160206136f28339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036125548482613632565b5060048101611ac28382613632565b61256b611f5b565b6117d3816125ce565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611ac29085906125fd565b6125d6611f5b565b6001600160a01b03811661161f57604051632d618d8160e21b815260040160405180910390fd5b600080602060008451602086016000885af180612620576040513d6000823e3d81fd5b50506000513d91508115612638578060011415612645565b6001600160a01b0384163b155b15611ac257604051635274afe760e01b81526001600160a01b0385166004820152602401610cdf565b60405180606001604052806000801916815260200160006001600160401b031681526020016126b0604051806040016040528060008152602001600081525090565b905290565b60005b838110156126d05781810151838201526020016126b8565b50506000910152565b600081518084526126f18160208601602086016126b5565b601f01601f19169290920160200192915050565b602081526000610d7760208301846126d9565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561275057612750612718565b60405290565b604051601f8201601f191681016001600160401b038111828210171561277e5761277e612718565b604052919050565b60006001600160401b0382111561279f5761279f612718565b50601f01601f191660200190565b600082601f8301126127be57600080fd5b81356127d16127cc82612786565b612756565b8181528460208386010111156127e657600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b03811681146117d357600080fd5b60008060006060848603121561282d57600080fd5b83356001600160401b038082111561284457600080fd5b612850878388016127ad565b9450602086013591508082111561286657600080fd5b50612873868287016127ad565b925050604084013561288481612803565b809150509250925092565b600080604083850312156128a257600080fd5b82356128ad81612803565b946020939093013593505050565b600060e082840312156128cd57600080fd5b50919050565b6000602082840312156128e557600080fd5b81356001600160401b038111156128fb57600080fd5b610fc8848285016128bb565b8351815260208085015190820152600060a08201604060a0604085015281865180845260c08601915060c08160051b8701019350602080890160005b838110156129825788870360bf1901855281518051885283015183880187905261296f878901826126d9565b9750509382019390820190600101612943565b50508751606088015250505060208501516080850152509050610fc8565b6000606082840312156128cd57600080fd5b60008083601f8401126129c457600080fd5b5081356001600160401b038111156129db57600080fd5b6020830191508360208285010111156129f357600080fd5b9250929050565b600080600080600080600060e0888a031215612a1557600080fd5b612a1f89896129a0565b96506060880135955060808801356001600160401b0380821115612a4257600080fd5b612a4e8b838c016129b2565b909750955060a08a01359150612a6382612803565b90935060c08901359080821115612a7957600080fd5b50612a868a828b016129b2565b989b979a50959850939692959293505050565b600080600060608486031215612aae57600080fd5b8335612ab981612803565b92506020840135612ac981612803565b929592945050506040919091013590565b803563ffffffff81168114612aee57600080fd5b919050565b60008060408385031215612b0657600080fd5b6128ad83612ada565b80151581146117d357600080fd5b60008060408385031215612b3057600080fd5b82356001600160401b03811115612b4657600080fd5b612b52858286016128bb565b9250506020830135612b6381612b0f565b809150509250929050565b815181526020808301519082015260408101610b76565b803561ffff81168114612aee57600080fd5b60008060408385031215612baa57600080fd5b612bb383612ada565b9150612bc160208401612b85565b90509250929050565b600060208284031215612bdc57600080fd5b8135610d7781612803565b60008060008060a08587031215612bfd57600080fd5b612c0786866129a0565b935060608501356001600160401b03811115612c2257600080fd5b612c2e878288016129b2565b9094509250506080850135612c4281612803565b939692955090935050565b60008083601f840112612c5f57600080fd5b5081356001600160401b03811115612c7657600080fd5b6020830191508360208260051b85010111156129f357600080fd5b60008060208385031215612ca457600080fd5b82356001600160401b03811115612cba57600080fd5b612cc685828601612c4d565b90969095509350505050565b600060208284031215612ce457600080fd5b610d7782612ada565b60008060008060608587031215612d0357600080fd5b612d0c85612ada565b9350612d1a60208601612b85565b925060408501356001600160401b03811115612d3557600080fd5b612d41878288016129b2565b95989497509550505050565b60008060008385036080811215612d6357600080fd5b84356001600160401b03811115612d7957600080fd5b612d85878288016128bb565b9450506040601f1982011215612d9a57600080fd5b50602084019150606084013561288481612803565b600060c082019050835182526001600160401b0360208501511660208301526040840151612dea604084018280518252602090810151910152565b5082516080830152602083015160a0830152610d77565b60008060408385031215612e1457600080fd5b8235612e1f81612803565b91506020830135612b6381612803565b600060608284031215612e4157600080fd5b610d7783836129a0565b600181811c90821680612e5f57607f821691505b6020821081036128cd57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112612eab57600080fd5b9190910192915050565b6000808335601e19843603018112612ecc57600080fd5b8301803591506001600160401b03821115612ee657600080fd5b6020019150368190038213156129f357600080fd5b600060208284031215612f0d57600080fd5b610d7782612b85565b601f82111561180f576000816000526020600020601f850160051c81016020861015612f3f5750805b601f850160051c820191505b81811015612f5e57828155600101612f4b565b505050505050565b6001600160401b03831115612f7d57612f7d612718565b612f9183612f8b8354612e4b565b83612f16565b6000601f841160018114612fc55760008515612fad5750838201355b600019600387901b1c1916600186901b178355611696565b600083815260209020601f19861690835b82811015612ff65786850135825560209485019460019092019101612fd6565b50868210156130135760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040808401600586901b8501820187855b8881101561312457878303603f190184528135368b9003605e1901811261309357600080fd5b8a01606063ffffffff6130a583612ada565b16855261ffff6130b6898401612b85565b168886015286820135601e198336030181126130d157600080fd5b9091018781019190356001600160401b038111156130ee57600080fd5b8036038313156130fd57600080fd5b818887015261310f8287018285613025565b9689019695505050918601915060010161306d565b509098975050505050505050565b6000808585111561314257600080fd5b8386111561314f57600080fd5b5050820193919092039150565b6000845161316e8184602089016126b5565b8201838582376000930192835250909392505050565b602081526000610fc8602083018486613025565b6000823561013e19833603018112612eab57600080fd5b6001600160401b03811681146117d357600080fd5b63ffffffff6131d289612ada565b16815260208801356020820152600060408901356131ef816131af565b6001600160401b03811660408401525087606083015260e0608083015261321a60e083018789613025565b6001600160a01b03861660a084015282810360c084015261323c818587613025565b9a9950505050505050505050565b60006020828403121561325c57600080fd5b81516001600160401b0381111561327257600080fd5b8201601f8101841361328357600080fd5b80516132916127cc82612786565b8181528560208385010111156132a657600080fd5b611d778260208301602086016126b5565b6000604082840312156132c957600080fd5b6132d161272e565b82358152602083013560208201528091505092915050565b6000602082840312156132fb57600080fd5b8135610d77816131af565b60018060a01b038516815283602082015261ffff83166040820152608060608201526000610e4860808301846126d9565b60408152600061334a60408301856126d9565b8281036020840152611d7781856126d9565b60006020828403121561336e57600080fd5b8151610d7781612b0f565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a060808401526133af60e08401826126d9565b90506060850151603f198483030160a08501526133cc82826126d9565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b60006040828403121561340457600080fd5b61340c61272e565b9050815181526020820151602082015292915050565b60006040828403121561343457600080fd5b610d7783836133f2565b6001600160f01b031981358181169160028510156134665780818660020360031b1b83161692505b505092915050565b60006080828403121561348057600080fd5b604051606081018181106001600160401b03821117156134a2576134a2612718565b6040528251815260208301516134b7816131af565b60208201526134c984604085016133f2565b60408201529392505050565b634e487b7160e01b600052601160045260246000fd5b60008261350857634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b7657610b766134d5565b80820180821115610b7657610b766134d5565b80356020831015610b7657600019602084900360031b1b1692915050565b6001600160c01b031981358181169160088510156134665760089490940360031b84901b1690921692915050565b6001600160401b0360c01b8560c01b16815263ffffffff60e01b8460e01b16600882015282600c820152600082516135c281602c8501602087016126b5565b91909101602c0195945050505050565b8481526001600160401b0360c01b8460c01b166020820152826028820152600082516136058160488501602087016126b5565b9190910160480195945050505050565b60006020828403121561362757600080fd5b8151610d7781612803565b81516001600160401b0381111561364b5761364b612718565b61365f816136598454612e4b565b84612f16565b602080601f831160018114613694576000841561367c5750858301515b600019600386901b1c1916600185901b178555612f5e565b600085815260208120601f198616915b828110156136c3578886015182559484019460019091019084016136a4565b50858210156136e15787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0072ab1bc1039b79dc4724ffca13de82c96834302d3c7e0d4252232d4b2dd8f900a2646970667358221220cd2690c0f925d368a9b9981f466528eb15b151e50d423d4c216afdfdfb3cd58764736f6c634300081600330000000000000000000000006edce65403992e310a62460808c4b910d972f10f