0x6080604052600436106100dc575f3560e01c8063715018a61161007c5780638da5cb5b116100575780638da5cb5b1461025b578063dbe7e3bd14610284578063f2fde38b146102b2578063f3fef3a3146102d1575f80fd5b8063715018a61461020c5780638456cb591461022057806384b0196e14610234575f80fd5b80633644e515116100b75780633644e5151461017d5780633f4ba83a1461019f5780635c975abb146101b35780636c19e783146101ed575f80fd5b806301e33667146100e757806319b2288714610108578063238ac93314610127575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b5061010661010136600461159e565b6102f0565b005b348015610113575f80fd5b5061010661012236600461161f565b6103d3565b348015610132575f80fd5b506004546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610188575f80fd5b50610191610874565b604051908152602001610174565b3480156101aa575f80fd5b50610106610882565b3480156101be575f80fd5b505f5474010000000000000000000000000000000000000000900460ff165b6040519015158152602001610174565b3480156101f8575f80fd5b506101066102073660046116ef565b610894565b348015610217575f80fd5b5061010661098c565b34801561022b575f80fd5b5061010661099d565b34801561023f575f80fd5b506102486109ad565b604051610174979695949392919061175b565b348015610266575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610153565b34801561028f575f80fd5b506101dd61029e36600461181b565b60056020525f908152604090205460ff1681565b3480156102bd575f80fd5b506101066102cc3660046116ef565b610a0b565b3480156102dc575f80fd5b506101066102eb366004611832565b610aa8565b6102f8610b21565b73ffffffffffffffffffffffffffffffffffffffff83166103605760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420746f6b656e0000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166103c35760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726563697069656e740000000000000000000000000000006044820152606401610357565b6103ce838383610b87565b505050565b6103db610cd8565b6103e3610d1b565b8584146104325760405162461bcd60e51b815260206004820152601160248201527f4d69736d617463686564206172726179730000000000000000000000000000006044820152606401610357565b73ffffffffffffffffffffffffffffffffffffffff83166104955760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726563697069656e740000000000000000000000000000006044820152606401610357565b5f61057b7f5cffa6fb7ce27d00e223ca6efa7cd0ae989d0a3927c853d97037ab35cdd29a2989896040516020016104cd92919061185a565b6040516020818303038152906040528051906020012088886040516020016104f692919061185a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915273ffffffffffffffffffffffffffffffffffffffff8616608082015260a00160405160208183030381529060405280519060200120610d6f565b90505f6105bd8285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610dbc92505050565b60045490915073ffffffffffffffffffffffffffffffffffffffff80831691161461062a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206261746368207369676e61747572650000000000000000006044820152606401610357565b5f805b898110156107b8575f8b8b838181106106485761064861189a565b9050602002013590505f8a8a848181106106645761066461189a565b5f858152600560209081526040909120549102929092013592505060ff16156106fd57817fa4d49a1141c14cc38ea06a032ce2ff92c2818ca42ea900d3a656f4e761a1d65a826040516106ee918152604060208201819052600f908201527f416c726561647920636c61696d65640000000000000000000000000000000000606082015260800190565b60405180910390a250506107b0565b805f0361076b57817fa4d49a1141c14cc38ea06a032ce2ff92c2818ca42ea900d3a656f4e761a1d65a826040516106ee918152604060208201819052600e908201527f496e76616c696420616d6f756e74000000000000000000000000000000000000606082015260800190565b5f82815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556107ab81856118c7565b935050505b60010161062d565b505f81116108085760405162461bcd60e51b815260206004820152600f60248201527f4e6f2076616c696420636c61696d7300000000000000000000000000000000006044820152606401610357565b6108128682610de4565b60405181815273ffffffffffffffffffffffffffffffffffffffff87169033907fd1156c83da18470c12fae89ffa811f65a38db2f5b87da6aacd2eecf395d2cceb9060200160405180910390a350505061086b60018055565b50505050505050565b5f61087d610ed0565b905090565b61088a610b21565b610892611006565b565b61089c610b21565b73ffffffffffffffffffffffffffffffffffffffff81166108ff5760405162461bcd60e51b815260206004820152601d60248201527f5369676e65722063616e6e6f74206265207a65726f20616464726573730000006044820152606401610357565b60045460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb905f90a3600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610994610b21565b6108925f611082565b6109a5610b21565b6108926110f6565b5f6060805f805f60606109be611164565b6109c6611191565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610a13610b21565b73ffffffffffffffffffffffffffffffffffffffff8116610a9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610357565b610aa581611082565b50565b610ab0610b21565b73ffffffffffffffffffffffffffffffffffffffff8216610b135760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726563697069656e740000000000000000000000000000006044820152606401610357565b610b1d8282610de4565b5050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610357565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f92839290871691610c1d91906118ff565b5f604051808303815f865af19150503d805f8114610c56576040519150601f19603f3d011682016040523d82523d5f602084013e610c5b565b606091505b5091509150818015610c85575080511580610c85575080806020019051810190610c859190611915565b610cd15760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610357565b5050505050565b600260015403610d14576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b5f5474010000000000000000000000000000000000000000900460ff1615610892576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610db6610d7b610ed0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b92915050565b5f805f80610dca86866111be565b925092509250610dda8282611207565b5090949350505050565b604080515f8082526020820190925273ffffffffffffffffffffffffffffffffffffffff8416908390604051610e1a91906118ff565b5f6040518083038185875af1925050503d805f8114610e54576040519150601f19603f3d011682016040523d82523d5f602084013e610e59565b606091505b50509050806103ce5760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201527f4c454400000000000000000000000000000000000000000000000000000000006064820152608401610357565b5f3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a4245f5d3de21db029642f6ee4a31fe513fc5ad816148015610f3557507f000000000000000000000000000000000000000000000000000000000000000146145b15610f5f57507f380b34c5a494a535a5b8ff9962de9f1ab23c2e3ffea11bed416208f015705ff590565b61087d604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f7d6a0cef142f1dae5db126c788fa78d30d48228eed89afa40425c12d00e4cf37918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b61100e61130a565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6110fe610d1b565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110583390565b606061087d7f4d61657374726f436173686261636b000000000000000000000000000000000f600261135d565b606061087d7f3100000000000000000000000000000000000000000000000000000000000001600361135d565b5f805f83516041036111f5576020840151604085015160608601515f1a6111e788828585611406565b955095509550505050611200565b505081515f91506002905b9250925092565b5f82600381111561121a5761121a611934565b03611223575050565b600182600381111561123757611237611934565b0361126e576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561128257611282611934565b036112bc576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610357565b60038260038111156112d0576112d0611934565b03610b1d576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610357565b5f5474010000000000000000000000000000000000000000900460ff16610892576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060ff831461137757611370836114f9565b9050610db6565b81805461138390611961565b80601f01602080910402602001604051908101604052809291908181526020018280546113af90611961565b80156113fa5780601f106113d1576101008083540402835291602001916113fa565b820191905f5260205f20905b8154815290600101906020018083116113dd57829003601f168201915b50505050509050610db6565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561143f57505f915060039050826114ef565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611490573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166114e657505f9250600191508290506114ef565b92505f91508190505b9450945094915050565b60605f61150583611536565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610db6576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114611599575f80fd5b919050565b5f805f606084860312156115b0575f80fd5b6115b984611576565b92506115c760208501611576565b9150604084013590509250925092565b5f8083601f8401126115e7575f80fd5b50813567ffffffffffffffff8111156115fe575f80fd5b6020830191508360208260051b8501011115611618575f80fd5b9250929050565b5f805f805f805f6080888a031215611635575f80fd5b873567ffffffffffffffff8082111561164c575f80fd5b6116588b838c016115d7565b909950975060208a0135915080821115611670575f80fd5b61167c8b838c016115d7565b909750955085915061169060408b01611576565b945060608a01359150808211156116a5575f80fd5b818a0191508a601f8301126116b8575f80fd5b8135818111156116c6575f80fd5b8b60208285010111156116d7575f80fd5b60208301945080935050505092959891949750929550565b5f602082840312156116ff575f80fd5b61170882611576565b9392505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e0602084015261179760e084018a61170f565b83810360408501526117a9818a61170f565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015611809578351835292840192918401916001016117ed565b50909c9b505050505050505050505050565b5f6020828403121561182b575f80fd5b5035919050565b5f8060408385031215611843575f80fd5b61184c83611576565b946020939093013593505050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611887575f80fd5b8260051b80858437919091019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820180821115610db6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215611925575f80fd5b81518015158114611708575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600181811c9082168061197557607f821691505b6020821081036119ac577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5091905056fea26469706673582212203b0d0809eefbe5375b9ed7eadc1898a503e0466bf2585615ca84debd1e7f0b6164736f6c63430008190033
0x610160604052348015610010575f80fd5b50604051611e91380380611e9183398101604081905261002f9161027c565b6040518060400160405280600f81526020016e4d61657374726f436173686261636b60881b815250604051806040016040528060018152602001603160f81b8152506100876100826101ba60201b60201c565b6101be565b6001805561009682600261020d565b610120526100a581600361020d565b61014052815160208084019190912060e052815190820120610100524660a05261013160e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b0381166101955760405162461bcd60e51b815260206004820152601d60248201527f5369676e65722063616e6e6f74206265207a65726f206164647265737300000060448201526064015b60405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055610458565b3390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602083511015610228576102218361023f565b9050610239565b816102338482610341565b5060ff90505b92915050565b5f80829050601f81511115610269578260405163305a27a960e01b815260040161018c9190610400565b805161027482610435565b179392505050565b5f6020828403121561028c575f80fd5b81516001600160a01b03811681146102a2575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806102d157607f821691505b6020821081036102ef57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561033c57805f5260205f20601f840160051c8101602085101561031a5750805b601f840160051c820191505b81811015610339575f8155600101610326565b50505b505050565b81516001600160401b0381111561035a5761035a6102a9565b61036e8161036884546102bd565b846102f5565b602080601f8311600181146103a1575f841561038a5750858301515b5f19600386901b1c1916600185901b1785556103f8565b5f85815260208120601f198616915b828110156103cf578886015182559484019460019091019084016103b0565b50858210156103ec57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102ef575f1960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516119e86104a95f395f61119801525f61116b01525f610fb601525f610f8e01525f610ee901525f610f1301525f610f3d01526119e85ff3fe6080604052600436106100dc575f3560e01c8063715018a61161007c5780638da5cb5b116100575780638da5cb5b1461025b578063dbe7e3bd14610284578063f2fde38b146102b2578063f3fef3a3146102d1575f80fd5b8063715018a61461020c5780638456cb591461022057806384b0196e14610234575f80fd5b80633644e515116100b75780633644e5151461017d5780633f4ba83a1461019f5780635c975abb146101b35780636c19e783146101ed575f80fd5b806301e33667146100e757806319b2288714610108578063238ac93314610127575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b5061010661010136600461159e565b6102f0565b005b348015610113575f80fd5b5061010661012236600461161f565b6103d3565b348015610132575f80fd5b506004546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610188575f80fd5b50610191610874565b604051908152602001610174565b3480156101aa575f80fd5b50610106610882565b3480156101be575f80fd5b505f5474010000000000000000000000000000000000000000900460ff165b6040519015158152602001610174565b3480156101f8575f80fd5b506101066102073660046116ef565b610894565b348015610217575f80fd5b5061010661098c565b34801561022b575f80fd5b5061010661099d565b34801561023f575f80fd5b506102486109ad565b604051610174979695949392919061175b565b348015610266575f80fd5b505f5473ffffffffffffffffffffffffffffffffffffffff16610153565b34801561028f575f80fd5b506101dd61029e36600461181b565b60056020525f908152604090205460ff1681565b3480156102bd575f80fd5b506101066102cc3660046116ef565b610a0b565b3480156102dc575f80fd5b506101066102eb366004611832565b610aa8565b6102f8610b21565b73ffffffffffffffffffffffffffffffffffffffff83166103605760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420746f6b656e0000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166103c35760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726563697069656e740000000000000000000000000000006044820152606401610357565b6103ce838383610b87565b505050565b6103db610cd8565b6103e3610d1b565b8584146104325760405162461bcd60e51b815260206004820152601160248201527f4d69736d617463686564206172726179730000000000000000000000000000006044820152606401610357565b73ffffffffffffffffffffffffffffffffffffffff83166104955760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726563697069656e740000000000000000000000000000006044820152606401610357565b5f61057b7f5cffa6fb7ce27d00e223ca6efa7cd0ae989d0a3927c853d97037ab35cdd29a2989896040516020016104cd92919061185a565b6040516020818303038152906040528051906020012088886040516020016104f692919061185a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830194909452810191909152606081019190915273ffffffffffffffffffffffffffffffffffffffff8616608082015260a00160405160208183030381529060405280519060200120610d6f565b90505f6105bd8285858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610dbc92505050565b60045490915073ffffffffffffffffffffffffffffffffffffffff80831691161461062a5760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964206261746368207369676e61747572650000000000000000006044820152606401610357565b5f805b898110156107b8575f8b8b838181106106485761064861189a565b9050602002013590505f8a8a848181106106645761066461189a565b5f858152600560209081526040909120549102929092013592505060ff16156106fd57817fa4d49a1141c14cc38ea06a032ce2ff92c2818ca42ea900d3a656f4e761a1d65a826040516106ee918152604060208201819052600f908201527f416c726561647920636c61696d65640000000000000000000000000000000000606082015260800190565b60405180910390a250506107b0565b805f0361076b57817fa4d49a1141c14cc38ea06a032ce2ff92c2818ca42ea900d3a656f4e761a1d65a826040516106ee918152604060208201819052600e908201527f496e76616c696420616d6f756e74000000000000000000000000000000000000606082015260800190565b5f82815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556107ab81856118c7565b935050505b60010161062d565b505f81116108085760405162461bcd60e51b815260206004820152600f60248201527f4e6f2076616c696420636c61696d7300000000000000000000000000000000006044820152606401610357565b6108128682610de4565b60405181815273ffffffffffffffffffffffffffffffffffffffff87169033907fd1156c83da18470c12fae89ffa811f65a38db2f5b87da6aacd2eecf395d2cceb9060200160405180910390a350505061086b60018055565b50505050505050565b5f61087d610ed0565b905090565b61088a610b21565b610892611006565b565b61089c610b21565b73ffffffffffffffffffffffffffffffffffffffff81166108ff5760405162461bcd60e51b815260206004820152601d60248201527f5369676e65722063616e6e6f74206265207a65726f20616464726573730000006044820152606401610357565b60045460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f2d025324f0a785e8c12d0a0d91a9caa49df4ef20ff87e0df7213a1d4f3157beb905f90a3600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610994610b21565b6108925f611082565b6109a5610b21565b6108926110f6565b5f6060805f805f60606109be611164565b6109c6611191565b604080515f808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610a13610b21565b73ffffffffffffffffffffffffffffffffffffffff8116610a9c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610357565b610aa581611082565b50565b610ab0610b21565b73ffffffffffffffffffffffffffffffffffffffff8216610b135760405162461bcd60e51b815260206004820152601160248201527f496e76616c696420726563697069656e740000000000000000000000000000006044820152606401610357565b610b1d8282610de4565b5050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610357565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f92839290871691610c1d91906118ff565b5f604051808303815f865af19150503d805f8114610c56576040519150601f19603f3d011682016040523d82523d5f602084013e610c5b565b606091505b5091509150818015610c85575080511580610c85575080806020019051810190610c859190611915565b610cd15760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610357565b5050505050565b600260015403610d14576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b5f5474010000000000000000000000000000000000000000900460ff1615610892576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610db6610d7b610ed0565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b92915050565b5f805f80610dca86866111be565b925092509250610dda8282611207565b5090949350505050565b604080515f8082526020820190925273ffffffffffffffffffffffffffffffffffffffff8416908390604051610e1a91906118ff565b5f6040518083038185875af1925050503d805f8114610e54576040519150601f19603f3d011682016040523d82523d5f602084013e610e59565b606091505b50509050806103ce5760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201527f4c454400000000000000000000000000000000000000000000000000000000006064820152608401610357565b5f3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015610f3557507f000000000000000000000000000000000000000000000000000000000000000046145b15610f5f57507f000000000000000000000000000000000000000000000000000000000000000090565b61087d604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b61100e61130a565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6110fe610d1b565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110583390565b606061087d7f0000000000000000000000000000000000000000000000000000000000000000600261135d565b606061087d7f0000000000000000000000000000000000000000000000000000000000000000600361135d565b5f805f83516041036111f5576020840151604085015160608601515f1a6111e788828585611406565b955095509550505050611200565b505081515f91506002905b9250925092565b5f82600381111561121a5761121a611934565b03611223575050565b600182600381111561123757611237611934565b0361126e576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561128257611282611934565b036112bc576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610357565b60038260038111156112d0576112d0611934565b03610b1d576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610357565b5f5474010000000000000000000000000000000000000000900460ff16610892576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060ff831461137757611370836114f9565b9050610db6565b81805461138390611961565b80601f01602080910402602001604051908101604052809291908181526020018280546113af90611961565b80156113fa5780601f106113d1576101008083540402835291602001916113fa565b820191905f5260205f20905b8154815290600101906020018083116113dd57829003601f168201915b50505050509050610db6565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561143f57505f915060039050826114ef565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611490573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166114e657505f9250600191508290506114ef565b92505f91508190505b9450945094915050565b60605f61150583611536565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f811115610db6576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114611599575f80fd5b919050565b5f805f606084860312156115b0575f80fd5b6115b984611576565b92506115c760208501611576565b9150604084013590509250925092565b5f8083601f8401126115e7575f80fd5b50813567ffffffffffffffff8111156115fe575f80fd5b6020830191508360208260051b8501011115611618575f80fd5b9250929050565b5f805f805f805f6080888a031215611635575f80fd5b873567ffffffffffffffff8082111561164c575f80fd5b6116588b838c016115d7565b909950975060208a0135915080821115611670575f80fd5b61167c8b838c016115d7565b909750955085915061169060408b01611576565b945060608a01359150808211156116a5575f80fd5b818a0191508a601f8301126116b8575f80fd5b8135818111156116c6575f80fd5b8b60208285010111156116d7575f80fd5b60208301945080935050505092959891949750929550565b5f602082840312156116ff575f80fd5b61170882611576565b9392505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e0602084015261179760e084018a61170f565b83810360408501526117a9818a61170f565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015611809578351835292840192918401916001016117ed565b50909c9b505050505050505050505050565b5f6020828403121561182b575f80fd5b5035919050565b5f8060408385031215611843575f80fd5b61184c83611576565b946020939093013593505050565b5f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611887575f80fd5b8260051b80858437919091019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820180821115610db6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f82518060208501845e5f920191825250919050565b5f60208284031215611925575f80fd5b81518015158114611708575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600181811c9082168061197557607f821691505b6020821081036119ac577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5091905056fea26469706673582212203b0d0809eefbe5375b9ed7eadc1898a503e0466bf2585615ca84debd1e7f0b6164736f6c634300081900330000000000000000000000006a8f74f0395b42075adb3232329ec01e950c78f7