60806040526003805460ff191690553480156200001b57600080fd5b50604051620022963803806200229683398101604090815281516020808401518385015160608601516000805433600160a060020a031991821681178355600180549092168255825260028652969020805460ff19169096179095559285018051909591909101939182918691869186918591620000a0916004919087019062000127565b508251620000b690600590602086019062000127565b506006805460ff191660ff84161790556007819055336000818152600860209081526040808320859055805185815290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3505050600a9190915550620001cc9350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016a57805160ff19168380011785556200019a565b828001600101855582156200019a579182015b828111156200019a5782518255916020019190600101906200017d565b50620001a8929150620001ac565b5090565b620001c991905b80821115620001a85760008155600101620001b3565b90565b6120ba80620001dc6000396000f30060806040526004361061013a5763ffffffff60e060020a60003504166306fdde03811461013f578063095ea7b3146101c957806318160ddd146102015780631f2698ab1461022857806323b872dd1461023d578063313ce56714610267578063378dc3dc1461029257806342966c68146102a757806366188463146102bf57806370a08231146102e3578063711bf9b21461030457806379ba50971461032c57806379cc6790146103415780637e3da027146103655780638da5cb5b146103f257806395d89b4114610423578063a9059cbb14610438578063b91816111461045c578063be45fd621461047d578063be9a6555146104e6578063cae9ca51146104fb578063d4ee1d9014610564578063d73dd62314610579578063dd62ed3e1461059d578063f2fde38b146105c4578063f6368f8a146105e5575b600080fd5b34801561014b57600080fd5b5061015461068c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018e578181015183820152602001610176565b50505050905090810190601f1680156101bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101d557600080fd5b506101ed600160a060020a036004351660243561071a565b604080519115158252519081900360200190f35b34801561020d57600080fd5b5061021661079f565b60408051918252519081900360200190f35b34801561023457600080fd5b506101ed6107a5565b34801561024957600080fd5b506101ed600160a060020a03600435811690602435166044356107ae565b34801561027357600080fd5b5061027c610835565b6040805160ff9092168252519081900360200190f35b34801561029e57600080fd5b5061021661083e565b3480156102b357600080fd5b506101ed600435610844565b3480156102cb57600080fd5b506101ed600160a060020a0360043516602435610856565b3480156102ef57600080fd5b50610216600160a060020a03600435166108d4565b34801561031057600080fd5b5061032a600160a060020a036004351660243515156108ef565b005b34801561033857600080fd5b5061032a6109b4565b34801561034d57600080fd5b506101ed600160a060020a0360043516602435610a7b565b34801561037157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ed948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750505092357fffffffff00000000000000000000000000000000000000000000000000000000169350610b8792505050565b3480156103fe57600080fd5b50610407610ccf565b60408051600160a060020a039092168252519081900360200190f35b34801561042f57600080fd5b50610154610cde565b34801561044457600080fd5b506101ed600160a060020a0360043516602435610d39565b34801561046857600080fd5b506101ed600160a060020a0360043516610db7565b34801561048957600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ed948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610dcc9650505050505050565b3480156104f257600080fd5b5061032a610e4b565b34801561050757600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ed948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610ee59650505050505050565b34801561057057600080fd5b506104076110d3565b34801561058557600080fd5b506101ed600160a060020a03600435166024356110e2565b3480156105a957600080fd5b50610216600160a060020a0360043581169060243516611160565b3480156105d057600080fd5b5061032a600160a060020a036004351661118b565b3480156105f157600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101ed948235600160a060020a031694602480359536959460649492019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975061127c9650505050505050565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107125780601f106106e757610100808354040283529160200191610712565b820191906000526020600020905b8154815290600101906020018083116106f557829003601f168201915b505050505081565b60035460009060ff168061073d57503360009081526002602052604090205460ff165b151561078e576040805160e560020a62461bcd028152602060048201526021602482015260008051602061206f833981519152604482015260f860020a605d02606482015290519081900360840190fd5b6107988383611305565b9392505050565b60075481565b60035460ff1681565b60035460009060ff16806107d157503360009081526002602052604090205460ff165b1515610822576040805160e560020a62461bcd028152602060048201526021602482015260008051602061206f833981519152604482015260f860020a605d02606482015290519081900360840190fd5b61082d84848461136b565b949350505050565b60065460ff1681565b600a5481565b6000610850338361164b565b92915050565b60035460009060ff168061087957503360009081526002602052604090205460ff165b15156108ca576040805160e560020a62461bcd028152602060048201526021602482015260008051602061206f833981519152604482015260f860020a605d02606482015290519081900360840190fd5b61079883836117f5565b600160a060020a031660009081526008602052604090205490565b600054600160a060020a03163314610951576040805160e560020a62461bcd02815260206004820152601360248201527f6d73672e73656e646572203d3d206f776e657200000000000000000000000000604482015290519081900360640190fd5b60405181151590600160a060020a038416907f5056a36abc1db1625034fdf114a164a0345b3ccf992fc1d51055e017375f473290600090a3600160a060020a03919091166000908152600260205260409020805460ff1916911515919091179055565b600154600160a060020a03163314610a16576040805160e560020a62461bcd02815260206004820152601660248201527f6d73672e73656e646572203d3d206e65774f776e657200000000000000000000604482015290519081900360640190fd5b600080546040513392600160a060020a03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff199081163317909155600180549091169055565b600160a060020a0382166000908152600960209081526040808320338452909152812054821115610b1b576040805160e560020a62461bcd028152602060048201526024808201527f5f76616c7565203c3d20616c6c6f7765645b5f66726f6d5d5b6d73672e73656e60448201527f6465725d00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610b25838361164b565b50600160a060020a0383166000908152600960209081526040808320338452909152902054610b5a908363ffffffff6118e516565b600160a060020a038416600090815260096020908152604080832033845290915290205550600192915050565b6000610b93858561071a565b5084600160a060020a03168260e060020a90043386866040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015610c03578181015183820152602001610beb565b50505050905090810190601f168015610c305780820380516001836020036101000a031916815260200191505b5093505050506000604051808303816000875af1925050501515610cc4576040805160e560020a62461bcd02815260206004820152603e60248201527f5f7370656e6465722e63616c6c285f637573746f6d46756e6374696f6e2c206d60448201527f73672e73656e6465722c205f76616c75652c205f657874726144617461290000606482015290519081900360840190fd5b506001949350505050565b600054600160a060020a031681565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107125780601f106106e757610100808354040283529160200191610712565b60035460009060ff1680610d5c57503360009081526002602052604090205460ff165b1515610dad576040805160e560020a62461bcd028152602060048201526021602482015260008051602061206f833981519152604482015260f860020a605d02606482015290519081900360840190fd5b61079883836118f7565b60026020526000908152604090205460ff1681565b60035460009060ff1680610def57503360009081526002602052604090205460ff165b1515610e40576040805160e560020a62461bcd028152602060048201526021602482015260008051602061206f833981519152604482015260f860020a605d02606482015290519081900360840190fd5b61082d848484611904565b600054600160a060020a03163314610ead576040805160e560020a62461bcd02815260206004820152601360248201527f6d73672e73656e646572203d3d206f776e657200000000000000000000000000604482015290519081900360640190fd5b6003805460ff191660011790556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b6000610ef1848461071a565b5083600160a060020a031660405180807f72656365697665417070726f76616c28616464726573732c75696e743235362c81526020017f62797465732900000000000000000000000000000000000000000000000000008152506026019050604051809103902060e060020a90043385856040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015610fbc578181015183820152602001610fa4565b50505050905090810190601f168015610fe95780820380516001836020036101000a031916815260200191505b5093505050506000604051808303816000875af19250505015156110c9576040805160e560020a62461bcd02815260206004820152606a60248201527f5f7370656e6465722e63616c6c28627974657334286b656363616b323536282260448201527f72656365697665417070726f76616c28616464726573732c75696e743235362c60648201527f6279746573292229292c206d73672e73656e6465722c205f76616c75652c205f60848201527f657874726144617461290000000000000000000000000000000000000000000060a482015290519081900360c40190fd5b5060019392505050565b600154600160a060020a031681565b60035460009060ff168061110557503360009081526002602052604090205460ff165b1515611156576040805160e560020a62461bcd028152602060048201526021602482015260008051602061206f833981519152604482015260f860020a605d02606482015290519081900360840190fd5b610798838361196e565b600160a060020a03918216600090815260096020908152604080832093909416825291909152205490565b600054600160a060020a031633146111ed576040805160e560020a62461bcd02815260206004820152601360248201527f6d73672e73656e646572203d3d206f776e657200000000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561124d576040805160e560020a62461bcd02815260206004820152601760248201527f6164647265737328302920213d205f6e65774f776e6572000000000000000000604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035460009060ff168061129f57503360009081526002602052604090205460ff165b15156112f0576040805160e560020a62461bcd028152602060048201526021602482015260008051602061206f833981519152604482015260f860020a605d02606482015290519081900360840190fd5b6112fc85858585611a07565b95945050505050565b336000818152600960209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b6000600160a060020a03831615156113cd576040805160e560020a62461bcd02815260206004820152601160248201527f5f746f20213d2061646472657373283029000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831630141561142e576040805160e560020a62461bcd02815260206004820152601460248201527f5f746f20213d2061646472657373287468697329000000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660009081526008602052604090205482111561149e576040805160e560020a62461bcd02815260206004820152601960248201527f5f76616c7565203c3d2062616c616e6365735b5f66726f6d5d00000000000000604482015290519081900360640190fd5b600160a060020a038416600090815260096020908152604080832033845290915290205482111561153e576040805160e560020a62461bcd028152602060048201526024808201527f5f76616c7565203c3d20616c6c6f7765645b5f66726f6d5d5b6d73672e73656e60448201527f6465725d00000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038416600090815260086020526040902054611567908363ffffffff6118e516565b600160a060020a03808616600090815260086020526040808220939093559085168152205461159c908363ffffffff611e6716565b600160a060020a0380851660009081526008602090815260408083209490945591871681526009825282812033825290915220546115e0908363ffffffff6118e516565b600160a060020a03808616600081815260096020908152604080832033845282529182902094909455805186815290519287169391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a35060019392505050565b60008082116116a4576040805160e560020a62461bcd02815260206004820152600a60248201527f5f76616c7565203e203000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038316600090815260086020526040902054821115611714576040805160e560020a62461bcd02815260206004820152601b60248201527f5f76616c7565203c3d2062616c616e6365735b5f6275726e65725d0000000000604482015290519081900360640190fd5b600160a060020a03831660009081526008602052604090205461173d908363ffffffff6118e516565b600160a060020a038416600090815260086020526040902055600754611769908363ffffffff6118e516565b600755604080518381529051600160a060020a038516917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518381529051600091600160a060020a038616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b336000908152600960209081526040808320600160a060020a03861684529091528120548083111561184a57336000908152600960209081526040808320600160a060020a038816845290915281205561187f565b61185a818463ffffffff6118e516565b336000908152600960209081526040808320600160a060020a03891684529091529020555b336000818152600960209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000828211156118f157fe5b50900390565b6000610798338484611e74565b600061082d848484606060405190810160405280602481526020017f746f6b656e46616c6c6261636b28616464726573732c75696e743235362c627981526020017f746573290000000000000000000000000000000000000000000000000000000081525061127c565b336000908152600960209081526040808320600160a060020a03861684529091528120546119a2908363ffffffff611e6716565b336000818152600960209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6000600160a060020a0385161515611a69576040805160e560020a62461bcd02815260206004820152601160248201527f5f746f20213d2061646472657373283029000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038516301415611aca576040805160e560020a62461bcd02815260206004820152601460248201527f5f746f20213d2061646472657373287468697329000000000000000000000000604482015290519081900360640190fd5b33600090815260086020526040902054841115611b31576040805160e560020a62461bcd02815260206004820152601e60248201527f5f76616c7565203c3d2062616c616e6365735b6d73672e73656e6465725d0000604482015290519081900360640190fd5b33600090815260086020526040902054611b51908563ffffffff6118e516565b3360009081526008602052604080822092909255600160a060020a03871681522054611b83908563ffffffff611e6716565b600160a060020a038616600090815260086020526040902055611ba585612066565b15611dc55784600160a060020a03166000836040516020018082805190602001908083835b60208310611be95780518252601f199092019160209182019101611bca565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310611c4c5780518252601f199092019160209182019101611c2d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060e060020a9004903387876040518563ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a03168152602001838152602001828051906020019080838360005b83811015611cde578181015183820152602001611cc6565b50505050905090810190601f168015611d0b5780820380516001836020036101000a031916815260200191505b50935050505060006040518083038185885af193505050501515611dc5576040805160e560020a62461bcd02815260206004820152605160248201527f5f746f2e63616c6c2e76616c756528302928627974657334286b656363616b3260448201527f3536285f637573746f6d5f66616c6c6261636b29292c206d73672e73656e646560648201527f722c205f76616c75652c205f6461746129000000000000000000000000000000608482015290519081900360a40190fd5b826040518082805190602001908083835b60208310611df55780518252601f199092019160209182019101611dd6565b51815160209384036101000a6000190180199092169116179052604080519290940182900382208a83529351939550600160a060020a038b16945033937fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c169350918290030190a4506001949350505050565b8181018281101561085057fe5b6000600160a060020a0383161515611ed6576040805160e560020a62461bcd02815260206004820152601160248201527f5f746f20213d2061646472657373283029000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038316301415611f37576040805160e560020a62461bcd02815260206004820152601460248201527f5f746f20213d2061646472657373287468697329000000000000000000000000604482015290519081900360640190fd5b600160a060020a038416600090815260086020526040902054821115611fa7576040805160e560020a62461bcd02815260206004820152601b60248201527f5f76616c7565203c3d2062616c616e6365735b5f73656e6465725d0000000000604482015290519081900360640190fd5b600160a060020a038416600090815260086020526040902054611fd0908363ffffffff6118e516565b600160a060020a038086166000908152600860205260408082209390935590851681522054612005908363ffffffff611e6716565b600160a060020a0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b6000903b1190560073746172746564207c7c20617574686f72697a65645b6d73672e73656e646572a165627a7a72305820f167da86134a5083cf7ed850b1f390d00b441b13c9b7392ee22a83d061c2d94e0029000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000cbf7c6b2e8499f04b500000000000000000000000000000000000000000000000000000000000000000000004564953410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045649534100000000000000000000000000000000000000000000000000000000