1
0

Tcp-DNS-proxy.git 213 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424
  1. <!DOCTYPE html>
  2. <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system">
  3. <head>
  4. <meta charset="utf-8">
  5. <link rel="dns-prefetch" href="https://github.githubassets.com">
  6. <link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
  7. <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  8. <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  9. <link rel="preconnect" href="https://github.githubassets.com" crossorigin>
  10. <link rel="preconnect" href="https://avatars.githubusercontent.com">
  11. <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-719f1193e0c0.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-0c343b529849.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-f22da508b62a.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-188ef1de59e6.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-bc6bf4eea850.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-527658dec362.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-c7a7fe0cd8ec.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-6aa855bdae0f.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-6aa5e25aacc0.css" />
  12. <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-3e0c23f0f191.css" />
  13. <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-3cf05c0b86b4.css" />
  14. <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-546179517227.css" />
  15. <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-52a99c473496.css" />
  16. <meta name="optimizely-datafile" content="{&quot;groups&quot;: [], &quot;environmentKey&quot;: &quot;production&quot;, &quot;rollouts&quot;: [], &quot;typedAudiences&quot;: [], &quot;projectId&quot;: &quot;16737760170&quot;, &quot;variables&quot;: [], &quot;featureFlags&quot;: [], &quot;experiments&quot;: [], &quot;version&quot;: &quot;4&quot;, &quot;audiences&quot;: [{&quot;conditions&quot;: &quot;[\&quot;or\&quot;, {\&quot;match\&quot;: \&quot;exact\&quot;, \&quot;name\&quot;: \&quot;$opt_dummy_attribute\&quot;, \&quot;type\&quot;: \&quot;custom_attribute\&quot;, \&quot;value\&quot;: \&quot;$opt_dummy_value\&quot;}]&quot;, &quot;id&quot;: &quot;$opt_dummy_audience&quot;, &quot;name&quot;: &quot;Optimizely-Generated Audience for Backwards Compatibility&quot;}], &quot;anonymizeIP&quot;: true, &quot;sdkKey&quot;: &quot;WTc6awnGuYDdG98CYRban&quot;, &quot;attributes&quot;: [{&quot;id&quot;: &quot;16822470375&quot;, &quot;key&quot;: &quot;user_id&quot;}, {&quot;id&quot;: &quot;17143601254&quot;, &quot;key&quot;: &quot;spammy&quot;}, {&quot;id&quot;: &quot;18175660309&quot;, &quot;key&quot;: &quot;organization_plan&quot;}, {&quot;id&quot;: &quot;18813001570&quot;, &quot;key&quot;: &quot;is_logged_in&quot;}, {&quot;id&quot;: &quot;19073851829&quot;, &quot;key&quot;: &quot;geo&quot;}, {&quot;id&quot;: &quot;20175462351&quot;, &quot;key&quot;: &quot;requestedCurrency&quot;}, {&quot;id&quot;: &quot;20785470195&quot;, &quot;key&quot;: &quot;country_code&quot;}, {&quot;id&quot;: &quot;21656311196&quot;, &quot;key&quot;: &quot;opened_downgrade_dialog&quot;}], &quot;botFiltering&quot;: false, &quot;accountId&quot;: &quot;16737760170&quot;, &quot;events&quot;: [{&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;17911811441&quot;, &quot;key&quot;: &quot;hydro_click.dashboard.teacher_toolbox_cta&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18124116703&quot;, &quot;key&quot;: &quot;submit.organizations.complete_sign_up&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18145892387&quot;, &quot;key&quot;: &quot;no_metric.tracked_outside_of_optimizely&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18178755568&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.add_repo&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18180553241&quot;, &quot;key&quot;: &quot;submit.repository_imports.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18186103728&quot;, &quot;key&quot;: &quot;click.help.learn_more_about_repository_creation&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18188530140&quot;, &quot;key&quot;: &quot;test_event&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18191963644&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.transfer_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18195612788&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.import_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18210945499&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.invite_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18211063248&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.create_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18215721889&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.update_profile&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18224360785&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.dismiss&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18234832286&quot;, &quot;key&quot;: &quot;submit.organization_activation.complete&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18252392383&quot;, &quot;key&quot;: &quot;submit.org_repository.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18257551537&quot;, &quot;key&quot;: &quot;submit.org_member_invitation.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18259522260&quot;, &quot;key&quot;: &quot;submit.organization_profile.update&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18564603625&quot;, &quot;key&quot;: &quot;view.classroom_select_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18568612016&quot;, &quot;key&quot;: &quot;click.classroom_sign_in_click&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18572592540&quot;, &quot;key&quot;: &quot;view.classroom_name&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18574203855&quot;, &quot;key&quot;: &quot;click.classroom_create_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18582053415&quot;, &quot;key&quot;: &quot;click.classroom_select_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18589463420&quot;, &quot;key&quot;: &quot;click.classroom_create_classroom&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18591323364&quot;, &quot;key&quot;: &quot;click.classroom_create_first_classroom&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18591652321&quot;, &quot;key&quot;: &quot;click.classroom_grant_access&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18607131425&quot;, &quot;key&quot;: &quot;view.classroom_creation&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18831680583&quot;, &quot;key&quot;: &quot;upgrade_account_plan&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19064064515&quot;, &quot;key&quot;: &quot;click.signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19075373687&quot;, &quot;key&quot;: &quot;click.view_account_billing_page&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19077355841&quot;, &quot;key&quot;: &quot;click.dismiss_signup_prompt&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19079713938&quot;, &quot;key&quot;: &quot;click.contact_sales&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19120963070&quot;, &quot;key&quot;: &quot;click.compare_account_plans&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19151690317&quot;, &quot;key&quot;: &quot;click.upgrade_account_cta&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19424193129&quot;, &quot;key&quot;: &quot;click.open_account_switcher&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19520330825&quot;, &quot;key&quot;: &quot;click.visit_account_profile&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19540970635&quot;, &quot;key&quot;: &quot;click.switch_account_context&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19730198868&quot;, &quot;key&quot;: &quot;submit.homepage_signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19820830627&quot;, &quot;key&quot;: &quot;click.homepage_signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19988571001&quot;, &quot;key&quot;: &quot;click.create_enterprise_trial&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20036538294&quot;, &quot;key&quot;: &quot;click.create_organization_team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20040653299&quot;, &quot;key&quot;: &quot;click.input_enterprise_trial_form&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20062030003&quot;, &quot;key&quot;: &quot;click.continue_with_team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20068947153&quot;, &quot;key&quot;: &quot;click.create_organization_free&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20086636658&quot;, &quot;key&quot;: &quot;click.signup_continue.username&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20091648988&quot;, &quot;key&quot;: &quot;click.signup_continue.create_account&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20103637615&quot;, &quot;key&quot;: &quot;click.signup_continue.email&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20111574253&quot;, &quot;key&quot;: &quot;click.signup_continue.password&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20120044111&quot;, &quot;key&quot;: &quot;view.pricing_page&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20152062109&quot;, &quot;key&quot;: &quot;submit.create_account&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20165800992&quot;, &quot;key&quot;: &quot;submit.upgrade_payment_form&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20171520319&quot;, &quot;key&quot;: &quot;submit.create_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20222645674&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.discuss_your_needs&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20227443657&quot;, &quot;key&quot;: &quot;submit.verify_primary_user_email&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20234607160&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.try_enterprise&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20238175784&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20239847212&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.continue_free&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20251097193&quot;, &quot;key&quot;: &quot;recommended_plan&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20438619534&quot;, &quot;key&quot;: &quot;click.pricing_calculator.1_member&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20456699683&quot;, &quot;key&quot;: &quot;click.pricing_calculator.15_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20467868331&quot;, &quot;key&quot;: &quot;click.pricing_calculator.10_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20476267432&quot;, &quot;key&quot;: &quot;click.trial_days_remaining&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20476357660&quot;, &quot;key&quot;: &quot;click.discover_feature&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20479287901&quot;, &quot;key&quot;: &quot;click.pricing_calculator.custom_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20481107083&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.apply_teacher_benefits&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20483089392&quot;, &quot;key&quot;: &quot;click.pricing_calculator.5_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20484283944&quot;, &quot;key&quot;: &quot;click.onboarding_task&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20484996281&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.apply_student_benefits&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20486713726&quot;, &quot;key&quot;: &quot;click.onboarding_task_breadcrumb&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20490791319&quot;, &quot;key&quot;: &quot;click.upgrade_to_enterprise&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20491786766&quot;, &quot;key&quot;: &quot;click.talk_to_us&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20494144087&quot;, &quot;key&quot;: &quot;click.dismiss_enterprise_trial&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20499722759&quot;, &quot;key&quot;: &quot;completed_all_tasks&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20500710104&quot;, &quot;key&quot;: &quot;completed_onboarding_tasks&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20513160672&quot;, &quot;key&quot;: &quot;click.read_doc&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20516196762&quot;, &quot;key&quot;: &quot;actions_enabled&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20518980986&quot;, &quot;key&quot;: &quot;click.dismiss_trial_banner&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20535446721&quot;, &quot;key&quot;: &quot;click.issue_actions_prompt.dismiss_prompt&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20557002247&quot;, &quot;key&quot;: &quot;click.issue_actions_prompt.setup_workflow&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20595070227&quot;, &quot;key&quot;: &quot;click.pull_request_setup_workflow&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20626600314&quot;, &quot;key&quot;: &quot;click.seats_input&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20642310305&quot;, &quot;key&quot;: &quot;click.decrease_seats_number&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20662990045&quot;, &quot;key&quot;: &quot;click.increase_seats_number&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20679620969&quot;, &quot;key&quot;: &quot;click.public_product_roadmap&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20761240940&quot;, &quot;key&quot;: &quot;click.dismiss_survey_banner&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20767210721&quot;, &quot;key&quot;: &quot;click.take_survey&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20795281201&quot;, &quot;key&quot;: &quot;click.archive_list&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20966790249&quot;, &quot;key&quot;: &quot;contact_sales.submit&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20996500333&quot;, &quot;key&quot;: &quot;contact_sales.existing_customer&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20996890162&quot;, &quot;key&quot;: &quot;contact_sales.blank_message_field&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21000470317&quot;, &quot;key&quot;: &quot;contact_sales.personal_email&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21002790172&quot;, &quot;key&quot;: &quot;contact_sales.blank_phone_field&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21354412592&quot;, &quot;key&quot;: &quot;click.dismiss_create_readme&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21366102546&quot;, &quot;key&quot;: &quot;click.dismiss_zero_user_content&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21370252505&quot;, &quot;key&quot;: &quot;account_did_downgrade&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21370840408&quot;, &quot;key&quot;: &quot;click.cta_create_readme&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21375451068&quot;, &quot;key&quot;: &quot;click.cta_create_new_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21385390948&quot;, &quot;key&quot;: &quot;click.zero_user_content&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21467712175&quot;, &quot;key&quot;: &quot;click.downgrade_keep&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21484112202&quot;, &quot;key&quot;: &quot;click.downgrade&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21495292213&quot;, &quot;key&quot;: &quot;click.downgrade_survey_exit&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21508241468&quot;, &quot;key&quot;: &quot;click.downgrade_survey_submit&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21512030356&quot;, &quot;key&quot;: &quot;click.downgrade_support&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21539090022&quot;, &quot;key&quot;: &quot;click.downgrade_exit&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21543640644&quot;, &quot;key&quot;: &quot;click_fetch_upstream&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21646510300&quot;, &quot;key&quot;: &quot;click.move_your_work&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21656151116&quot;, &quot;key&quot;: &quot;click.add_branch_protection_rule&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21663860599&quot;, &quot;key&quot;: &quot;click.downgrade_dialog_open&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21687860483&quot;, &quot;key&quot;: &quot;click.learn_about_protected_branches&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21689050333&quot;, &quot;key&quot;: &quot;click.dismiss_protect_this_branch&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;21864370109&quot;, &quot;key&quot;: &quot;click.sign_in&quot;}], &quot;revision&quot;: &quot;1372&quot;}" />
  17. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-f439bd45876b.js"></script>
  18. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_smoothscroll-polyfill_dist_smoothscroll_js-node_modules_stacktrace-parse-297da6-33372250e348.js"></script>
  19. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-9185a6e6d701.js"></script>
  20. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-2646a2c533e3.js"></script>
  21. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_details-dialog-elemen-63debe-c04540d458d4.js"></script>
  22. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-6afc16-e779583c369f.js"></script>
  23. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-496d76cca51c.js"></script>
  24. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_github_text-ex-3415a8-7ecc10fb88d0.js"></script>
  25. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b4f804-849b6b90b676.js"></script>
  26. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-52e1ce026ad1.js"></script>
  27. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_view-components_app_components_primer_primer_js-node_modules_gith-6a1af4-7ebdba8b3479.js"></script>
  28. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-d12abb3d9deb.js"></script>
  29. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-1af47cd14983.js"></script>
  30. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-9d9fe1859ce5.js"></script>
  31. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_manuelpuyol_turbo_dist_turbo_es2017-esm_js-4140d67f0cc2.js"></script>
  32. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_github_alive-client_dist-bf5aa2-424aa982deef.js"></script>
  33. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_dimensions_js-node_modules_github_hotkey_dist_-9fc4f4-9d1719458ecc.js"></script>
  34. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_github_template-parts_lib_-273494-1221cc21243c.js"></script>
  35. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_paste-markdown_dist_index_esm_js-node_modules_github_quote-select-84b903-ef03c4dd0966.js"></script>
  36. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_updatable-content_ts-cfb228eb374b.js"></script>
  37. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-8c72dbb06086.js"></script>
  38. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_keyboard-shortcuts-helper_ts-app_assets_modules_github_be-d820ce-7dcf734b4004.js"></script>
  39. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-79b9893b9598.js"></script>
  40. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-9b5d1ce6ff62.js"></script>
  41. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-06ff531-32d7d1e94817.js"></script>
  42. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-83502d97888b.js"></script>
  43. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_optimizely_optimizely-sdk_dist_optimizely_browser_es_min_js-node_modules-77839b-8bd968524cd7.js"></script>
  44. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/optimizely-b8efe704a8a5.js"></script>
  45. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_virtualized-list_es_index_js-node_modules_github_memoize_dist_esm_index_-ced8cc-9484d0db1ef1.js"></script>
  46. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-70450e-0370b887db62.js"></script>
  47. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_ref-selector_ts-93b21d9de9a2.js"></script>
  48. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/codespaces-215870bab385.js"></script>
  49. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_mini-throt-a33094-b03defd3289b.js"></script>
  50. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_github_mini-th-85225b-af76b7097f8e.js"></script>
  51. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repositories-5570d01524d2.js"></script>
  52. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/topic-suggestions-a5bb05351ccb.js"></script>
  53. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/code-menu-3f2f83b4c7bc.js"></script>
  54. <title>GitHub - henices/Tcp-DNS-proxy: A TCP dns proxy which can get the RIGHT ip address</title>
  55. <meta name="request-id" content="D33E:2970:35F80E:4F9685:63EC1CD0" data-pjax-transient="true"/><meta name="html-safe-nonce" content="4529ad1f63bff673f576195ae98e674083435e524f44727af467fe58190e5e6d" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMzNFOjI5NzA6MzVGODBFOjRGOTY4NTo2M0VDMUNEMCIsInZpc2l0b3JfaWQiOiIxNjMxMDUzNzc5ODIzMjM4MzUyIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=" data-pjax-transient="true"/><meta name="visitor-hmac" content="f129c6bfa13cb4762ffb649442e0603320da3838a2a36844280bb5cd39af34ce" data-pjax-transient="true"/>
  56. <meta name="hovercard-subject-tag" content="repository:2741653" data-turbo-transient>
  57. <meta name="github-keyboard-shortcuts" content="repository" data-turbo-transient="true" />
  58. <meta name="selected-link" value="repo_source" data-turbo-transient>
  59. <meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY">
  60. <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
  61. <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
  62. <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
  63. <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">
  64. <meta name="octolytics-url" content="https://collector.github.com/github/collect" />
  65. <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;" data-turbo-transient="true" />
  66. <meta name="user-login" content="">
  67. <meta name="viewport" content="width=device-width">
  68. <meta name="description" content="A TCP dns proxy which can get the RIGHT ip address - GitHub - henices/Tcp-DNS-proxy: A TCP dns proxy which can get the RIGHT ip address">
  69. <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
  70. <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
  71. <meta property="fb:app_id" content="1401488693436528">
  72. <meta name="apple-itunes-app" content="app-id=1477376905" />
  73. <meta name="twitter:image:src" content="https://opengraph.githubassets.com/8ac2ec6646ffed8c231fe3310dde185321fdc941cdd907533bef2cd0f18fae92/henices/Tcp-DNS-proxy" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="GitHub - henices/Tcp-DNS-proxy: A TCP dns proxy which can get the RIGHT ip address" /><meta name="twitter:description" content="A TCP dns proxy which can get the RIGHT ip address - GitHub - henices/Tcp-DNS-proxy: A TCP dns proxy which can get the RIGHT ip address" />
  74. <meta property="og:image" content="https://opengraph.githubassets.com/8ac2ec6646ffed8c231fe3310dde185321fdc941cdd907533bef2cd0f18fae92/henices/Tcp-DNS-proxy" /><meta property="og:image:alt" content="A TCP dns proxy which can get the RIGHT ip address - GitHub - henices/Tcp-DNS-proxy: A TCP dns proxy which can get the RIGHT ip address" /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="GitHub - henices/Tcp-DNS-proxy: A TCP dns proxy which can get the RIGHT ip address" /><meta property="og:url" content="https://github.com/henices/Tcp-DNS-proxy" /><meta property="og:description" content="A TCP dns proxy which can get the RIGHT ip address - GitHub - henices/Tcp-DNS-proxy: A TCP dns proxy which can get the RIGHT ip address" />
  75. <link rel="assets" href="https://github.githubassets.com/">
  76. <meta name="hostname" content="github.com">
  77. <meta name="expected-hostname" content="github.com">
  78. <meta name="enabled-features" content="TURBO_EXPERIMENT_RISKY,IMAGE_METRIC_TRACKING,GEOJSON_AZURE_MAPS">
  79. <meta http-equiv="x-pjax-version" content="af1e3a9b4784e2cda05f9233be23c67665abffb8b1cc6260dd6921cff03864e9" data-turbo-track="reload">
  80. <meta http-equiv="x-pjax-csp-version" content="364341e8c3b83a070403c5e39154afcaa4a7e79f7cda6ddf4801dbcaf1f360a6" data-turbo-track="reload">
  81. <meta http-equiv="x-pjax-css-version" content="206002d350790211e330b1ddc53ad1940f08d479b2d75ed299f6975a9a57276e" data-turbo-track="reload">
  82. <meta http-equiv="x-pjax-js-version" content="2d652403814526d190bd6a6dc290f56b210648162f6af69fe3c01906ef397b39" data-turbo-track="reload">
  83. <meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">
  84. <meta name="go-import" content="github.com/henices/Tcp-DNS-proxy git https://github.com/henices/Tcp-DNS-proxy.git">
  85. <meta name="octolytics-dimension-user_id" content="929715" /><meta name="octolytics-dimension-user_login" content="henices" /><meta name="octolytics-dimension-repository_id" content="2741653" /><meta name="octolytics-dimension-repository_nwo" content="henices/Tcp-DNS-proxy" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="2741653" /><meta name="octolytics-dimension-repository_network_root_nwo" content="henices/Tcp-DNS-proxy" />
  86. <link rel="canonical" href="https://github.com/henices/Tcp-DNS-proxy" data-turbo-transient>
  87. <meta name="turbo-body-classes" content="logged-out env-production page-responsive">
  88. <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
  89. <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
  90. <meta name="browser-optimizely-client-errors-url" content="https://api.github.com/_private/browser/optimizely_client/errors">
  91. <link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.svg" color="#000000">
  92. <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
  93. <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg">
  94. <meta name="theme-color" content="#1e2327">
  95. <meta name="color-scheme" content="light dark" />
  96. <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
  97. </head>
  98. <body class="logged-out env-production page-responsive" style="word-wrap: break-word;">
  99. <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;">
  100. <div class="position-relative js-header-wrapper ">
  101. <a href="#start-of-content" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>
  102. <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
  103. <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
  104. </span>
  105. <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-f05f1914a3a6.js"></script>
  106. <header class="Header-old header-logged-out js-details-container Details position-relative f4 py-3" role="banner">
  107. <button type="button" class="Header-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation">
  108. <span class="d-none">Toggle navigation</span>
  109. </button>
  110. <div class="container-xl d-flex flex-column flex-lg-row flex-items-center p-responsive height-full position-relative z-1">
  111. <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto">
  112. <a class="mr-lg-3 color-fg-inherit flex-order-2" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
  113. <svg height="32" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github">
  114. <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
  115. </svg>
  116. </a>
  117. <div class="flex-1">
  118. <a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&amp;source=header-repo"
  119. class="d-inline-block d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit"
  120. data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5ee521aebcac5bffd4ffaa95b85eb0923aaaa3a5b4b07f6714b4d7d7691a3c27"
  121. >
  122. Sign&nbsp;up
  123. </a>
  124. </div>
  125. <div class="flex-1 flex-order-2 text-right">
  126. <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content">
  127. <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div>
  128. <div class="HeaderMenu-toggle-bar rounded my-1"></div>
  129. <div class="HeaderMenu-toggle-bar rounded my-1"></div></span>
  130. </span>
  131. </button>
  132. </div>
  133. </div>
  134. <div class="HeaderMenu--logged-out p-responsive height-fit position-lg-relative d-lg-flex flex-column flex-auto pt-7 pb-4 top-0">
  135. <div class="header-menu-wrapper d-flex flex-column flex-self-end flex-lg-row flex-justify-between flex-auto p-3 p-lg-0 rounded rounded-lg-0 mt-3 mt-lg-0">
  136. <nav class="mt-0 px-3 px-lg-0 mb-3 mb-lg-0" aria-label="Global">
  137. <ul class="d-lg-flex list-style-none">
  138. <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
  139. <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-3 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false">
  140. Product
  141. <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
  142. <path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path>
  143. </svg>
  144. </button>
  145. <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex dropdown-menu-wide">
  146. <ul class="list-style-none f5 px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7">
  147. <li>
  148. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Actions&quot;,&quot;label&quot;:&quot;ref_cta:Actions;&quot;}" href="/features/actions">
  149. <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3">
  150. <path fill-rule="evenodd" d="M1 3a2 2 0 012-2h6.5a2 2 0 012 2v6.5a2 2 0 01-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 012-2H21a2 2 0 012 2V21a2 2 0 01-2 2h-6.5a2 2 0 01-2-2v-2.5H8.437A2.938 2.938 0 015.5 15.562V11.5H3a2 2 0 01-2-2V3zm2-.5a.5.5 0 00-.5.5v6.5a.5.5 0 00.5.5h6.5a.5.5 0 00.5-.5V3a.5.5 0 00-.5-.5H3zM14.5 14a.5.5 0 00-.5.5V21a.5.5 0 00.5.5H21a.5.5 0 00.5-.5v-6.5a.5.5 0 00-.5-.5h-6.5z"></path>
  151. </svg>
  152. <div>
  153. <div class="color-fg-default h4">Actions</div>
  154. Automate any workflow
  155. </div>
  156. </a></li>
  157. <li>
  158. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Packages&quot;,&quot;label&quot;:&quot;ref_cta:Packages;&quot;}" href="/features/packages">
  159. <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-package color-fg-subtle mr-3">
  160. <path fill-rule="evenodd" d="M12.876.64a1.75 1.75 0 00-1.75 0l-8.25 4.762a1.75 1.75 0 00-.875 1.515v9.525c0 .625.334 1.203.875 1.515l8.25 4.763a1.75 1.75 0 001.75 0l8.25-4.762a1.75 1.75 0 00.875-1.516V6.917a1.75 1.75 0 00-.875-1.515L12.876.639zm-1 1.298a.25.25 0 01.25 0l7.625 4.402-7.75 4.474-7.75-4.474 7.625-4.402zM3.501 7.64v8.803c0 .09.048.172.125.216l7.625 4.402v-8.947L3.501 7.64zm9.25 13.421l7.625-4.402a.25.25 0 00.125-.216V7.639l-7.75 4.474v8.947z"></path>
  161. </svg>
  162. <div>
  163. <div class="color-fg-default h4">Packages</div>
  164. Host and manage packages
  165. </div>
  166. </a></li>
  167. <li>
  168. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Security&quot;,&quot;label&quot;:&quot;ref_cta:Security;&quot;}" href="/features/security">
  169. <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3">
  170. <path d="M16.53 9.78a.75.75 0 00-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 00-1.06 1.06l2.5 2.5a.75.75 0 001.06 0l5-5z"></path><path fill-rule="evenodd" d="M12.54.637a1.75 1.75 0 00-1.08 0L3.21 3.312A1.75 1.75 0 002 4.976V10c0 6.19 3.77 10.705 9.401 12.83.386.145.812.145 1.198 0C18.229 20.704 22 16.19 22 10V4.976c0-.759-.49-1.43-1.21-1.664L12.54.637zm-.617 1.426a.25.25 0 01.154 0l8.25 2.676a.25.25 0 01.173.237V10c0 5.461-3.28 9.483-8.43 11.426a.2.2 0 01-.14 0C6.78 19.483 3.5 15.46 3.5 10V4.976c0-.108.069-.203.173-.237l8.25-2.676z"></path>
  171. </svg>
  172. <div>
  173. <div class="color-fg-default h4">Security</div>
  174. Find and fix vulnerabilities
  175. </div>
  176. </a></li>
  177. <li>
  178. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Codespaces&quot;,&quot;label&quot;:&quot;ref_cta:Codespaces;&quot;}" href="/features/codespaces">
  179. <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3">
  180. <path fill-rule="evenodd" d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0118.75 13H5.25a1.75 1.75 0 01-1.75-1.75v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25H5.25zM1.5 15.75c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 01-1.75 1.75H3.25a1.75 1.75 0 01-1.75-1.75v-4zm1.75-.25a.25.25 0 00-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 00.25-.25v-4a.25.25 0 00-.25-.25H3.25z"></path><path fill-rule="evenodd" d="M10 17.75a.75.75 0 01.75-.75h6.5a.75.75 0 010 1.5h-6.5a.75.75 0 01-.75-.75zm-4 0a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5a.75.75 0 01-.75-.75z"></path>
  181. </svg>
  182. <div>
  183. <div class="color-fg-default h4">Codespaces</div>
  184. Instant dev environments
  185. </div>
  186. </a></li>
  187. <li>
  188. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Copilot&quot;,&quot;label&quot;:&quot;ref_cta:Copilot;&quot;}" href="/features/copilot">
  189. <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3">
  190. <path d="M9.75 14a.75.75 0 01.75.75v2.5a.75.75 0 01-1.5 0v-2.5a.75.75 0 01.75-.75zm4.5 0a.75.75 0 01.75.75v2.5a.75.75 0 01-1.5 0v-2.5a.75.75 0 01.75-.75z"></path><path fill-rule="evenodd" d="M12 2c-2.214 0-4.248.657-5.747 1.756a7.43 7.43 0 00-.397.312c-.584.235-1.077.546-1.474.952-.85.87-1.132 2.037-1.132 3.368 0 .368.014.733.052 1.086l-.633 1.478-.043.022A4.75 4.75 0 000 15.222v1.028c0 .529.31.987.564 1.293.28.336.637.653.967.918a13.262 13.262 0 001.299.911l.024.015.006.004.04.025.144.087c.124.073.304.177.535.3.46.245 1.122.57 1.942.894C7.155 21.344 9.439 22 12 22s4.845-.656 6.48-1.303c.819-.324 1.481-.65 1.941-.895a13.797 13.797 0 00.68-.386l.039-.025.006-.004.024-.015a8.829 8.829 0 00.387-.248c.245-.164.577-.396.912-.663.33-.265.686-.582.966-.918.256-.306.565-.764.565-1.293v-1.028a4.75 4.75 0 00-2.626-4.248l-.043-.022-.633-1.478c.038-.353.052-.718.052-1.086 0-1.331-.282-2.499-1.132-3.368-.397-.406-.89-.717-1.474-.952a7.386 7.386 0 00-.397-.312C16.248 2.657 14.214 2 12 2zm-8 9.654l.038-.09c.046.06.094.12.145.177.793.9 2.057 1.259 3.782 1.259 1.59 0 2.739-.544 3.508-1.492.131-.161.249-.331.355-.508a32.948 32.948 0 00.344 0c.106.177.224.347.355.508.77.948 1.918 1.492 3.508 1.492 1.725 0 2.989-.359 3.782-1.259.05-.057.099-.116.145-.177l.038.09v6.669a17.618 17.618 0 01-2.073.98C16.405 19.906 14.314 20.5 12 20.5c-2.314 0-4.405-.594-5.927-1.197A17.62 17.62 0 014 18.323v-6.67zm6.309-1.092a2.35 2.35 0 01-.38.374c-.437.341-1.054.564-1.964.564-1.573 0-2.292-.337-2.657-.75-.192-.218-.331-.506-.423-.89-.091-.385-.135-.867-.135-1.472 0-1.14.243-1.847.705-2.32.477-.487 1.319-.861 2.824-1.024 1.487-.16 2.192.138 2.533.529l.008.01c.264.308.429.806.43 1.568v.031a7.203 7.203 0 01-.09 1.079c-.143.967-.406 1.754-.851 2.301zm2.504-2.497a7.174 7.174 0 01-.063-.894v-.02c.001-.77.17-1.27.438-1.578.341-.39 1.046-.69 2.533-.529 1.506.163 2.347.537 2.824 1.025.462.472.705 1.179.705 2.319 0 1.21-.174 1.926-.558 2.361-.365.414-1.084.751-2.657.751-1.21 0-1.902-.393-2.344-.938-.475-.584-.742-1.44-.878-2.497z"></path>
  191. </svg>
  192. <div>
  193. <div class="color-fg-default h4">Copilot</div>
  194. Write better code with AI
  195. </div>
  196. </a></li>
  197. <li>
  198. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Code review&quot;,&quot;label&quot;:&quot;ref_cta:Code review;&quot;}" href="/features/code-review">
  199. <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3">
  200. <path d="M10.3 6.74a.75.75 0 01-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 11-1.02 1.1l-3.5-3.25a.75.75 0 010-1.1l3.5-3.25a.75.75 0 011.06.04zm3.44 1.06a.75.75 0 111.02-1.1l3.5 3.25a.75.75 0 010 1.1l-3.5 3.25a.75.75 0 11-1.02-1.1l2.908-2.7-2.908-2.7z"></path><path fill-rule="evenodd" d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 01-1.75 1.75h-9.69l-3.573 3.573A1.457 1.457 0 015 21.043V18.5H3.25a1.75 1.75 0 01-1.75-1.75V4.25zM3.25 4a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 01.75.75v3.19l3.72-3.72a.75.75 0 01.53-.22h10a.25.25 0 00.25-.25V4.25a.25.25 0 00-.25-.25H3.25z"></path>
  201. </svg>
  202. <div>
  203. <div class="color-fg-default h4">Code review</div>
  204. Manage code changes
  205. </div>
  206. </a></li>
  207. <li>
  208. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center pb-lg-3" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Issues&quot;,&quot;label&quot;:&quot;ref_cta:Issues;&quot;}" href="/features/issues">
  209. <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3">
  210. <path fill-rule="evenodd" d="M2.5 12a9.5 9.5 0 1119 0 9.5 9.5 0 01-19 0zM12 1C5.925 1 1 5.925 1 12s4.925 11 11 11 11-4.925 11-11S18.075 1 12 1zm0 13a2 2 0 100-4 2 2 0 000 4z"></path>
  211. </svg>
  212. <div>
  213. <div class="color-fg-default h4">Issues</div>
  214. Plan and track work
  215. </div>
  216. </a></li>
  217. <li>
  218. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Discussions&quot;,&quot;label&quot;:&quot;ref_cta:Discussions;&quot;}" href="/features/discussions">
  219. <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3">
  220. <path fill-rule="evenodd" d="M1.75 1A1.75 1.75 0 000 2.75v9.5C0 13.216.784 14 1.75 14H3v1.543a1.457 1.457 0 002.487 1.03L8.061 14h6.189A1.75 1.75 0 0016 12.25v-9.5A1.75 1.75 0 0014.25 1H1.75zM1.5 2.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v9.5a.25.25 0 01-.25.25h-6.5a.75.75 0 00-.53.22L4.5 15.44v-2.19a.75.75 0 00-.75-.75h-2a.25.25 0 01-.25-.25v-9.5z"></path><path d="M22.5 8.75a.25.25 0 00-.25-.25h-3.5a.75.75 0 010-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0122.25 20H21v1.543a1.457 1.457 0 01-2.487 1.03L15.939 20H10.75A1.75 1.75 0 019 18.25v-1.465a.75.75 0 011.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 01.53.22l2.72 2.72v-2.19a.75.75 0 01.75-.75h2a.25.25 0 00.25-.25v-9.5z"></path>
  221. </svg>
  222. <div>
  223. <div class="color-fg-default h4">Discussions</div>
  224. Collaborate outside of code
  225. </div>
  226. </a></li>
  227. </ul>
  228. <ul class="list-style-none f5 px-lg-4">
  229. <li class="h4 color-fg-default my-1">Explore</li>
  230. <li>
  231. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to All features&quot;,&quot;label&quot;:&quot;ref_cta:All features;&quot;}" href="/features">
  232. All features
  233. </a></li>
  234. <li>
  235. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Documentation&quot;,&quot;label&quot;:&quot;ref_cta:Documentation;&quot;}" href="https://docs.github.com">
  236. Documentation
  237. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
  238. <path fill-rule="evenodd" d="M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"></path>
  239. </svg>
  240. </a></li>
  241. <li>
  242. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to GitHub Skills&quot;,&quot;label&quot;:&quot;ref_cta:GitHub Skills;&quot;}" href="https://skills.github.com/">
  243. GitHub Skills
  244. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
  245. <path fill-rule="evenodd" d="M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"></path>
  246. </svg>
  247. </a></li>
  248. <li>
  249. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Product&quot;,&quot;action&quot;:&quot;click to go to Blog&quot;,&quot;label&quot;:&quot;ref_cta:Blog;&quot;}" href="https://github.blog">
  250. Blog
  251. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
  252. <path fill-rule="evenodd" d="M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"></path>
  253. </svg>
  254. </a></li>
  255. </ul>
  256. </div>
  257. </li>
  258. <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
  259. <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-3 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false">
  260. Solutions
  261. <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
  262. <path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path>
  263. </svg>
  264. </button>
  265. <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 px-lg-4">
  266. <ul class="list-style-none f5 border-bottom pb-3 mb-3">
  267. <li class="h4 color-fg-default my-1">For</li>
  268. <li>
  269. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Solutions&quot;,&quot;action&quot;:&quot;click to go to Enterprise&quot;,&quot;label&quot;:&quot;ref_cta:Enterprise;&quot;}" href="/enterprise">
  270. Enterprise
  271. </a></li>
  272. <li>
  273. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Solutions&quot;,&quot;action&quot;:&quot;click to go to Teams&quot;,&quot;label&quot;:&quot;ref_cta:Teams;&quot;}" href="/team">
  274. Teams
  275. </a></li>
  276. <li>
  277. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Solutions&quot;,&quot;action&quot;:&quot;click to go to Startups&quot;,&quot;label&quot;:&quot;ref_cta:Startups;&quot;}" href="/enterprise/startups">
  278. Startups
  279. </a></li>
  280. <li>
  281. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Solutions&quot;,&quot;action&quot;:&quot;click to go to Education&quot;,&quot;label&quot;:&quot;ref_cta:Education;&quot;}" href="https://education.github.com">
  282. Education
  283. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
  284. <path fill-rule="evenodd" d="M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"></path>
  285. </svg>
  286. </a></li>
  287. </ul>
  288. <ul class="list-style-none f5 border-bottom pb-3 mb-3">
  289. <li class="h4 color-fg-default my-1">By Solution</li>
  290. <li>
  291. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Solutions&quot;,&quot;action&quot;:&quot;click to go to CI/CD &amp;amp; Automation&quot;,&quot;label&quot;:&quot;ref_cta:CI/CD &amp;amp; Automation;&quot;}" href="/solutions/ci-cd/">
  292. CI/CD &amp; Automation
  293. </a></li>
  294. <li>
  295. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Solutions&quot;,&quot;action&quot;:&quot;click to go to DevOps&quot;,&quot;label&quot;:&quot;ref_cta:DevOps;&quot;}" href="https://resources.github.com/devops/">
  296. DevOps
  297. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
  298. <path fill-rule="evenodd" d="M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"></path>
  299. </svg>
  300. </a></li>
  301. <li>
  302. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Solutions&quot;,&quot;action&quot;:&quot;click to go to DevSecOps&quot;,&quot;label&quot;:&quot;ref_cta:DevSecOps;&quot;}" href="https://resources.github.com/devops/fundamentals/devsecops/">
  303. DevSecOps
  304. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
  305. <path fill-rule="evenodd" d="M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"></path>
  306. </svg>
  307. </a></li>
  308. </ul>
  309. <ul class="list-style-none f5 ">
  310. <li class="h4 color-fg-default my-1">Case Studies</li>
  311. <li>
  312. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Solutions&quot;,&quot;action&quot;:&quot;click to go to Customer Stories&quot;,&quot;label&quot;:&quot;ref_cta:Customer Stories;&quot;}" href="/customer-stories">
  313. Customer Stories
  314. </a></li>
  315. <li>
  316. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" target="_blank" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Solutions&quot;,&quot;action&quot;:&quot;click to go to Resources&quot;,&quot;label&quot;:&quot;ref_cta:Resources;&quot;}" href="https://resources.github.com/">
  317. Resources
  318. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle">
  319. <path fill-rule="evenodd" d="M10.604 1h4.146a.25.25 0 01.25.25v4.146a.25.25 0 01-.427.177L13.03 4.03 9.28 7.78a.75.75 0 01-1.06-1.06l3.75-3.75-1.543-1.543A.25.25 0 0110.604 1zM3.75 2A1.75 1.75 0 002 3.75v8.5c0 .966.784 1.75 1.75 1.75h8.5A1.75 1.75 0 0014 12.25v-3.5a.75.75 0 00-1.5 0v3.5a.25.25 0 01-.25.25h-8.5a.25.25 0 01-.25-.25v-8.5a.25.25 0 01.25-.25h3.5a.75.75 0 000-1.5h-3.5z"></path>
  320. </svg>
  321. </a></li>
  322. </ul>
  323. </div>
  324. </li>
  325. <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
  326. <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-3 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false">
  327. Open Source
  328. <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1">
  329. <path fill-rule="evenodd" d="M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0z"></path>
  330. </svg>
  331. </button>
  332. <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 py-2 py-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 px-lg-4">
  333. <ul class="list-style-none f5 border-bottom pb-3 mb-3">
  334. <li>
  335. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Open Source&quot;,&quot;action&quot;:&quot;click to go to GitHub Sponsors&quot;,&quot;label&quot;:&quot;ref_cta:GitHub Sponsors;&quot;}" href="/sponsors">
  336. <div>
  337. <div class="color-fg-default h4">GitHub Sponsors</div>
  338. Fund open source developers
  339. </div>
  340. </a></li>
  341. </ul>
  342. <ul class="list-style-none f5 border-bottom pb-3 mb-3">
  343. <li>
  344. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Open Source&quot;,&quot;action&quot;:&quot;click to go to The ReadME Project&quot;,&quot;label&quot;:&quot;ref_cta:The ReadME Project;&quot;}" href="/readme">
  345. <div>
  346. <div class="color-fg-default h4">The ReadME Project</div>
  347. GitHub community articles
  348. </div>
  349. </a></li>
  350. </ul>
  351. <ul class="list-style-none f5 ">
  352. <li class="h4 color-fg-default my-1">Repositories</li>
  353. <li>
  354. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Open Source&quot;,&quot;action&quot;:&quot;click to go to Topics&quot;,&quot;label&quot;:&quot;ref_cta:Topics;&quot;}" href="/topics">
  355. Topics
  356. </a></li>
  357. <li>
  358. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Open Source&quot;,&quot;action&quot;:&quot;click to go to Trending&quot;,&quot;label&quot;:&quot;ref_cta:Trending;&quot;}" href="/trending">
  359. Trending
  360. </a></li>
  361. <li>
  362. <a class="HeaderMenu-dropdown-link lh-condensed d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Open Source&quot;,&quot;action&quot;:&quot;click to go to Collections&quot;,&quot;label&quot;:&quot;ref_cta:Collections;&quot;}" href="/collections">
  363. Collections
  364. </a></li>
  365. </ul>
  366. </div>
  367. </li>
  368. <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item">
  369. <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{&quot;category&quot;:&quot;Header menu top item (logged out)&quot;,&quot;action&quot;:&quot;click to go to Pricing&quot;,&quot;label&quot;:&quot;ref_cta:Pricing;&quot;}" href="/pricing">Pricing</a>
  370. </li>
  371. </ul>
  372. </nav>
  373. <div class="d-lg-flex flex-items-center px-3 px-lg-0 mb-3 mb-lg-0 text-center text-lg-left">
  374. <div class="d-lg-flex min-width-0 mb-2 mb-lg-0">
  375. <div class="header-search flex-auto position-relative js-site-search flex-self-stretch flex-md-self-auto mb-3 mb-md-0 mr-0 mr-md-3 scoped-search site-scoped-search js-jump-to"
  376. >
  377. <div class="position-relative">
  378. <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="2741653" data-scoped-search-url="/henices/Tcp-DNS-proxy/search" data-owner-scoped-search-url="/users/henices/search" data-unscoped-search-url="/search" data-turbo="false" action="/henices/Tcp-DNS-proxy/search" accept-charset="UTF-8" method="get">
  379. <label class="form-control header-search-wrapper input-sm p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center">
  380. <input type="text"
  381. class="form-control js-site-search-focus header-search-input jump-to-field js-jump-to-field js-site-search-field is-clearable"
  382. data-hotkey=s,/
  383. name="q"
  384. placeholder="Search"
  385. data-unscoped-placeholder="Search GitHub"
  386. data-scoped-placeholder="Search"
  387. autocapitalize="off"
  388. role="combobox"
  389. aria-haspopup="listbox"
  390. aria-expanded="false"
  391. aria-autocomplete="list"
  392. aria-controls="jump-to-results"
  393. aria-label="Search"
  394. data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations"
  395. spellcheck="false"
  396. autocomplete="off"
  397. >
  398. <input type="hidden" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" value="Yg94PMX71kf0ncdgG6X9KvUwRSv37OMGRpnTYhdYOaXqrkBO/WV4K8kDfyD/rw5x3rY/X5S+Gca9DwTyK9g62A==" />
  399. <input type="hidden" class="js-site-search-type-field" name="type" >
  400. <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1 header-search-key-slash"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg>
  401. <div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
  402. <ul class="d-none js-jump-to-suggestions-template-container">
  403. <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
  404. <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion">
  405. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  406. <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
  407. <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
  408. </svg>
  409. <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
  410. <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
  411. </svg>
  412. <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
  413. <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
  414. </svg>
  415. </div>
  416. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  417. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  418. </div>
  419. <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
  420. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
  421. In this repository
  422. </span>
  423. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  424. All GitHub
  425. </span>
  426. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
  427. </div>
  428. <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  429. Jump to
  430. <span class="d-inline-block ml-1 v-align-middle">↵</span>
  431. </div>
  432. </a>
  433. </li>
  434. </ul>
  435. <ul class="d-none js-jump-to-no-results-template-container">
  436. <li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
  437. <span class="color-fg-muted">No suggested jump to results</span>
  438. </li>
  439. </ul>
  440. <ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
  441. <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
  442. <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search">
  443. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  444. <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
  445. <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
  446. </svg>
  447. <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
  448. <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
  449. </svg>
  450. <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
  451. <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
  452. </svg>
  453. </div>
  454. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  455. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  456. </div>
  457. <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
  458. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
  459. In this repository
  460. </span>
  461. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  462. All GitHub
  463. </span>
  464. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
  465. </div>
  466. <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  467. Jump to
  468. <span class="d-inline-block ml-1 v-align-middle">↵</span>
  469. </div>
  470. </a>
  471. </li>
  472. <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-owner-scoped-search d-none" role="option">
  473. <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="owner_scoped_search">
  474. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  475. <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
  476. <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
  477. </svg>
  478. <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
  479. <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
  480. </svg>
  481. <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
  482. <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
  483. </svg>
  484. </div>
  485. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  486. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  487. </div>
  488. <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
  489. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this user">
  490. In this user
  491. </span>
  492. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  493. All GitHub
  494. </span>
  495. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
  496. </div>
  497. <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  498. Jump to
  499. <span class="d-inline-block ml-1 v-align-middle">↵</span>
  500. </div>
  501. </a>
  502. </li>
  503. <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
  504. <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search">
  505. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  506. <svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
  507. <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
  508. </svg>
  509. <svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
  510. <path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
  511. </svg>
  512. <svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
  513. <path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
  514. </svg>
  515. </div>
  516. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  517. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  518. </div>
  519. <div class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
  520. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
  521. In this repository
  522. </span>
  523. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  524. All GitHub
  525. </span>
  526. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
  527. </div>
  528. <div aria-hidden="true" class="border rounded-2 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  529. Jump to
  530. <span class="d-inline-block ml-1 v-align-middle">↵</span>
  531. </div>
  532. </a>
  533. </li>
  534. </ul>
  535. </div>
  536. </label>
  537. </form> </div>
  538. </div>
  539. </div>
  540. <div class="position-relative mr-lg-3 d-lg-inline-block">
  541. <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fhenices%2FTcp-DNS-proxy"
  542. class="HeaderMenu-link HeaderMenu-link--sign-in flex-shrink-0 no-underline d-block d-lg-inline-block border border-lg-0 rounded rounded-lg-0 p-2 p-lg-0"
  543. data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2b9d2e267106e9f77f88d306d8f490efdafd8edc460fb3a9af49fcdf2dbef0e6"
  544. data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">
  545. Sign in
  546. </a>
  547. </div>
  548. <a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&amp;source=header-repo&amp;source_repo=henices%2FTcp-DNS-proxy"
  549. class="HeaderMenu-link HeaderMenu-link--sign-up flex-shrink-0 d-none d-lg-inline-block no-underline border color-border-default rounded px-2 py-1"
  550. data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2b9d2e267106e9f77f88d306d8f490efdafd8edc460fb3a9af49fcdf2dbef0e6"
  551. data-analytics-event="{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/&lt;user-name&gt;/&lt;repo-name&gt;;ref_cta:Sign up;ref_loc:header logged out&quot;}"
  552. >
  553. Sign up
  554. </a>
  555. </div>
  556. </div>
  557. </div>
  558. </div>
  559. </header>
  560. </div>
  561. <div id="start-of-content" class="show-on-focus"></div>
  562. <div id="js-flash-container" data-turbo-replace>
  563. <template class="js-flash-template">
  564. <div class="flash flash-full {{ className }}">
  565. <div class="px-2" >
  566. <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
  567. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
  568. <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  569. </svg>
  570. </button>
  571. <div aria-atomic="true" role="alert" class="js-flash-alert">
  572. <div>{{ message }}</div>
  573. </div>
  574. </div>
  575. </div>
  576. </template>
  577. </div>
  578. <include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>
  579. <div
  580. class="application-main "
  581. data-commit-hovercards-enabled
  582. data-discussion-hovercards-enabled
  583. data-issue-and-pr-hovercards-enabled
  584. >
  585. <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
  586. <main id="js-repo-pjax-container" >
  587. <div id="repository-container-header" class="pt-3 hide-full-screen" style="background-color: var(--color-page-header-bg);" data-turbo-replace>
  588. <div class="d-flex flex-wrap flex-justify-end mb-3 px-3 px-md-4 px-lg-5" style="gap: 1rem;">
  589. <div class="flex-auto min-width-0 width-fit mr-3">
  590. <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal">
  591. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2">
  592. <path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
  593. </svg>
  594. <span class="author flex-self-stretch" itemprop="author">
  595. <a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/henices/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/henices">henices</a>
  596. </span>
  597. <span class="mx-1 flex-self-stretch color-fg-muted">/</span>
  598. <strong itemprop="name" class="mr-2 flex-self-stretch">
  599. <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy">Tcp-DNS-proxy</a>
  600. </strong>
  601. <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span>
  602. </div>
  603. </div>
  604. <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
  605. <li>
  606. <a href="/login?return_to=%2Fhenices%2FTcp-DNS-proxy" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f4428b24343bb974fc2872f06f641c8ee069bf16f713b02eb3185e33ffb1ed43" aria-label="You must be signed in to change notification settings" data-view-component="true" class="tooltipped tooltipped-s btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2">
  607. <path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path>
  608. </svg>Notifications
  609. </a>
  610. </li>
  611. <li>
  612. <a icon="repo-forked" id="fork-button" href="/login?return_to=%2Fhenices%2FTcp-DNS-proxy" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:2741653,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3ff39b6ed45bb78c3c4eb077be624162b81c7b8042ef34ec04151e193e6357b1" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2">
  613. <path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>
  614. </svg>Fork
  615. <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="203" data-view-component="true" class="Counter">203</span>
  616. </a>
  617. </li>
  618. <li>
  619. <div data-view-component="true" class="BtnGroup d-flex">
  620. <a href="/login?return_to=%2Fhenices%2FTcp-DNS-proxy" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:2741653,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9359d96410590dc67861b1d8af2191d4dd057667e8bb7907ce95ebd16dfd74a6" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-s btn-sm btn BtnGroup-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2">
  621. <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path>
  622. </svg><span data-view-component="true" class="d-inline">
  623. Star
  624. </span> <span id="repo-stars-counter-star" aria-label="806 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="806" data-view-component="true" class="Counter js-social-count">806</span>
  625. </a> <button disabled="disabled" aria-label="You must be signed in to add this repository to a list" type="button" data-view-component="true" class="btn-sm btn BtnGroup-item px-2"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down">
  626. <path d="M4.427 7.427l3.396 3.396a.25.25 0 00.354 0l3.396-3.396A.25.25 0 0011.396 7H4.604a.25.25 0 00-.177.427z"></path>
  627. </svg>
  628. </button></div>
  629. </li>
  630. </ul>
  631. </div>
  632. <div id="responsive-meta-container" data-turbo-replace>
  633. <div class="d-block d-md-none mb-2 px-3 px-md-4 px-lg-5">
  634. <p class="f4 mb-3 ">
  635. A TCP dns proxy which can get the RIGHT ip address
  636. </p>
  637. <div class="mb-3">
  638. <a class="Link--secondary no-underline mr-3" href="/henices/Tcp-DNS-proxy/stargazers">
  639. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star mr-1">
  640. <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path>
  641. </svg>
  642. <span class="text-bold">806</span>
  643. stars
  644. </a> <a class="Link--secondary no-underline" href="/henices/Tcp-DNS-proxy/network/members">
  645. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-1">
  646. <path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>
  647. </svg>
  648. <span class="text-bold">203</span>
  649. forks
  650. </a> </div>
  651. <div class="d-flex">
  652. <div class="flex-1 mr-2">
  653. <div data-view-component="true" class="BtnGroup d-flex">
  654. <a href="/login?return_to=%2Fhenices%2FTcp-DNS-proxy" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:2741653,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9359d96410590dc67861b1d8af2191d4dd057667e8bb7907ce95ebd16dfd74a6" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-s btn-sm btn btn-block BtnGroup-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2">
  655. <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path>
  656. </svg><span data-view-component="true" class="d-inline">
  657. Star
  658. </span>
  659. </a> <button disabled="disabled" aria-label="You must be signed in to add this repository to a list" type="button" data-view-component="true" class="btn-sm btn BtnGroup-item px-2"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-triangle-down">
  660. <path d="M4.427 7.427l3.396 3.396a.25.25 0 00.354 0l3.396-3.396A.25.25 0 0011.396 7H4.604a.25.25 0 00-.177.427z"></path>
  661. </svg>
  662. </button></div>
  663. </div>
  664. <div class="flex-1">
  665. <a href="/login?return_to=%2Fhenices%2FTcp-DNS-proxy" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f4428b24343bb974fc2872f06f641c8ee069bf16f713b02eb3185e33ffb1ed43" aria-label="You must be signed in to change notification settings" data-view-component="true" class="tooltipped tooltipped-s btn-sm btn btn-block"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2">
  666. <path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path>
  667. </svg>Notifications
  668. </a>
  669. </div>
  670. </div>
  671. </div>
  672. </div>
  673. <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5">
  674. <ul data-view-component="true" class="UnderlineNav-body list-style-none">
  675. <li data-view-component="true" class="d-inline-flex">
  676. <a id="code-tab" href="/henices/Tcp-DNS-proxy" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /henices/Tcp-DNS-proxy" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Code&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" aria-current="page" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected">
  677. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline">
  678. <path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path>
  679. </svg>
  680. <span data-content="Code">Code</span>
  681. <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>
  682. </a></li>
  683. <li data-view-component="true" class="d-inline-flex">
  684. <a id="issues-tab" href="/henices/Tcp-DNS-proxy/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /henices/Tcp-DNS-proxy/issues" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g i" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Issues&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
  685. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline">
  686. <path d="M8 9.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path><path fill-rule="evenodd" d="M8 0a8 8 0 100 16A8 8 0 008 0zM1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0z"></path>
  687. </svg>
  688. <span data-content="Issues">Issues</span>
  689. <span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="3" data-view-component="true" class="Counter">3</span>
  690. </a></li>
  691. <li data-view-component="true" class="d-inline-flex">
  692. <a id="pull-requests-tab" href="/henices/Tcp-DNS-proxy/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /henices/Tcp-DNS-proxy/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Pull requests&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
  693. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline">
  694. <path fill-rule="evenodd" d="M7.177 3.073L9.573.677A.25.25 0 0110 .854v4.792a.25.25 0 01-.427.177L7.177 3.427a.25.25 0 010-.354zM3.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122v5.256a2.251 2.251 0 11-1.5 0V5.372A2.25 2.25 0 011.5 3.25zM11 2.5h-1V4h1a1 1 0 011 1v5.628a2.251 2.251 0 101.5 0V5A2.5 2.5 0 0011 2.5zm1 10.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.75 12a.75.75 0 100 1.5.75.75 0 000-1.5z"></path>
  695. </svg>
  696. <span data-content="Pull requests">Pull requests</span>
  697. <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>
  698. </a></li>
  699. <li data-view-component="true" class="d-inline-flex">
  700. <a id="actions-tab" href="/henices/Tcp-DNS-proxy/actions" data-tab-item="i3actions-tab" data-selected-links="repo_actions /henices/Tcp-DNS-proxy/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Actions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
  701. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline">
  702. <path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"></path>
  703. </svg>
  704. <span data-content="Actions">Actions</span>
  705. <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>
  706. </a></li>
  707. <li data-view-component="true" class="d-inline-flex">
  708. <a id="projects-tab" href="/henices/Tcp-DNS-proxy/projects" data-tab-item="i4projects-tab" data-selected-links="repo_projects new_repo_project repo_project /henices/Tcp-DNS-proxy/projects" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g b" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Projects&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
  709. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon d-none d-sm-inline">
  710. <path fill-rule="evenodd" d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0114.25 16H1.75A1.75 1.75 0 010 14.25V1.75zM1.5 6.5v7.75c0 .138.112.25.25.25H5v-8H1.5zM5 5H1.5V1.75a.25.25 0 01.25-.25H5V5zm1.5 1.5v8h7.75a.25.25 0 00.25-.25V6.5h-8zm8-1.5h-8V1.5h7.75a.25.25 0 01.25.25V5z"></path>
  711. </svg>
  712. <span data-content="Projects">Projects</span>
  713. <span id="projects-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>
  714. </a></li>
  715. <li data-view-component="true" class="d-inline-flex">
  716. <a id="wiki-tab" href="/henices/Tcp-DNS-proxy/wiki" data-tab-item="i5wiki-tab" data-selected-links="repo_wiki /henices/Tcp-DNS-proxy/wiki" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g w" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Wiki&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
  717. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book UnderlineNav-octicon d-none d-sm-inline">
  718. <path fill-rule="evenodd" d="M0 1.75A.75.75 0 01.75 1h4.253c1.227 0 2.317.59 3 1.501A3.744 3.744 0 0111.006 1h4.245a.75.75 0 01.75.75v10.5a.75.75 0 01-.75.75h-4.507a2.25 2.25 0 00-1.591.659l-.622.621a.75.75 0 01-1.06 0l-.622-.621A2.25 2.25 0 005.258 13H.75a.75.75 0 01-.75-.75V1.75zm8.755 3a2.25 2.25 0 012.25-2.25H14.5v9h-3.757c-.71 0-1.4.201-1.992.572l.004-7.322zm-1.504 7.324l.004-5.073-.002-2.253A2.25 2.25 0 005.003 2.5H1.5v9h3.757a3.75 3.75 0 011.994.574z"></path>
  719. </svg>
  720. <span data-content="Wiki">Wiki</span>
  721. <span id="wiki-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>
  722. </a></li>
  723. <li data-view-component="true" class="d-inline-flex">
  724. <a id="security-tab" href="/henices/Tcp-DNS-proxy/security" data-tab-item="i6security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /henices/Tcp-DNS-proxy/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Security&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
  725. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline">
  726. <path fill-rule="evenodd" d="M7.467.133a1.75 1.75 0 011.066 0l5.25 1.68A1.75 1.75 0 0115 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.7 1.7 0 01-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 011.217-1.667l5.25-1.68zm.61 1.429a.25.25 0 00-.153 0l-5.25 1.68a.25.25 0 00-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.2.2 0 00.154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.25.25 0 00-.174-.237l-5.25-1.68zM9 10.5a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.75a.75.75 0 10-1.5 0v3a.75.75 0 001.5 0v-3z"></path>
  727. </svg>
  728. <span data-content="Security">Security</span>
  729. <include-fragment src="/henices/Tcp-DNS-proxy/security/overall-count" accept="text/fragment+html"></include-fragment>
  730. </a></li>
  731. <li data-view-component="true" class="d-inline-flex">
  732. <a id="insights-tab" href="/henices/Tcp-DNS-proxy/pulse" data-tab-item="i7insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /henices/Tcp-DNS-proxy/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Insights&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
  733. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline">
  734. <path fill-rule="evenodd" d="M1.5 1.75a.75.75 0 00-1.5 0v12.5c0 .414.336.75.75.75h14.5a.75.75 0 000-1.5H1.5V1.75zm14.28 2.53a.75.75 0 00-1.06-1.06L10 7.94 7.53 5.47a.75.75 0 00-1.06 0L3.22 8.72a.75.75 0 001.06 1.06L7 7.06l2.47 2.47a.75.75 0 001.06 0l5.25-5.25z"></path>
  735. </svg>
  736. <span data-content="Insights">Insights</span>
  737. <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>
  738. </a></li>
  739. </ul>
  740. <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0"> <details data-view-component="true" class="details-overlay details-reset position-relative">
  741. <summary role="button" data-view-component="true"> <div class="UnderlineNav-item mr-0 border-0">
  742. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal">
  743. <path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
  744. </svg>
  745. <span class="sr-only">More</span>
  746. </div>
  747. </summary>
  748. <details-menu role="menu" data-view-component="true" class="dropdown-menu dropdown-menu-sw"> <ul>
  749. <li data-menu-item="i0code-tab" hidden>
  750. <a role="menuitem" class="js-selected-navigation-item selected dropdown-item" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /henices/Tcp-DNS-proxy" href="/henices/Tcp-DNS-proxy">
  751. Code
  752. </a> </li>
  753. <li data-menu-item="i1issues-tab" hidden>
  754. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_issues repo_labels repo_milestones /henices/Tcp-DNS-proxy/issues" href="/henices/Tcp-DNS-proxy/issues">
  755. Issues
  756. </a> </li>
  757. <li data-menu-item="i2pull-requests-tab" hidden>
  758. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_pulls checks /henices/Tcp-DNS-proxy/pulls" href="/henices/Tcp-DNS-proxy/pulls">
  759. Pull requests
  760. </a> </li>
  761. <li data-menu-item="i3actions-tab" hidden>
  762. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_actions /henices/Tcp-DNS-proxy/actions" href="/henices/Tcp-DNS-proxy/actions">
  763. Actions
  764. </a> </li>
  765. <li data-menu-item="i4projects-tab" hidden>
  766. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_projects new_repo_project repo_project /henices/Tcp-DNS-proxy/projects" href="/henices/Tcp-DNS-proxy/projects">
  767. Projects
  768. </a> </li>
  769. <li data-menu-item="i5wiki-tab" hidden>
  770. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_wiki /henices/Tcp-DNS-proxy/wiki" href="/henices/Tcp-DNS-proxy/wiki">
  771. Wiki
  772. </a> </li>
  773. <li data-menu-item="i6security-tab" hidden>
  774. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="security overview alerts policy token_scanning code_scanning /henices/Tcp-DNS-proxy/security" href="/henices/Tcp-DNS-proxy/security">
  775. Security
  776. </a> </li>
  777. <li data-menu-item="i7insights-tab" hidden>
  778. <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /henices/Tcp-DNS-proxy/pulse" href="/henices/Tcp-DNS-proxy/pulse">
  779. Insights
  780. </a> </li>
  781. </ul>
  782. </details-menu>
  783. </details></div>
  784. </nav>
  785. </div>
  786. <turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class="">
  787. <div id="repo-content-pjax-container" class="repository-content " >
  788. <h1 class='sr-only'>henices/Tcp-DNS-proxy</h1>
  789. <div class="clearfix container-xl px-3 px-md-4 px-lg-5 mt-4">
  790. <div>
  791. <div class="d-none d-lg-block mt-6 mr-3 Popover top-0 right-0 color-shadow-medium col-3">
  792. </div>
  793. <div id="spoof-warning" class="mt-0 pb-3" hidden aria-hidden>
  794. <div data-view-component="true" class="flash flash-warn mt-0 clearfix">
  795. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert float-left mt-1">
  796. <path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
  797. </svg>
  798. <div class="overflow-hidden">This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.</div>
  799. </div></div>
  800. <include-fragment src="/henices/Tcp-DNS-proxy/spoofed_commit_check/646c315fc8e2c7dc808b81f43eb7fc7ae33b2f68" data-test-selector="spoofed-commit-check"></include-fragment>
  801. <div data-view-component="true" class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end">
  802. <div data-view-component="true" class="Layout-main">
  803. <div class="file-navigation mb-3 d-flex flex-items-start">
  804. <div class="position-relative">
  805. <details
  806. class="js-branch-select-menu details-reset details-overlay mr-0 mb-0 "
  807. id="branch-select-menu"
  808. data-hydro-click-payload="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;REFS_SELECTOR_MENU&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="abb43ead1b436f17470d53874e51273b22364396f848aa4388f01ff4ed61c823">
  809. <summary class="btn css-truncate"
  810. data-hotkey="w"
  811. title="Switch branches or tags">
  812. <svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-branch">
  813. <path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z"></path>
  814. </svg>
  815. <span class="css-truncate-target" data-menu-button>master</span>
  816. <span class="dropdown-caret"></span>
  817. </summary>
  818. <div class="SelectMenu">
  819. <div class="SelectMenu-modal">
  820. <header class="SelectMenu-header">
  821. <span class="SelectMenu-title">Switch branches/tags</span>
  822. <button class="SelectMenu-closeButton" type="button" data-toggle-for="branch-select-menu"><svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
  823. <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  824. </svg></button>
  825. </header>
  826. <input-demux data-action="tab-container-change:input-demux#storeInput tab-container-changed:input-demux#updateInput">
  827. <tab-container class="d-flex flex-column js-branches-tags-tabs" style="min-height: 0;">
  828. <div class="SelectMenu-filter">
  829. <input data-target="input-demux.source"
  830. id="context-commitish-filter-field"
  831. class="SelectMenu-input form-control"
  832. aria-owns="ref-list-branches"
  833. data-controls-ref-menu-id="ref-list-branches"
  834. autofocus
  835. autocomplete="off"
  836. aria-label="Filter branches/tags"
  837. placeholder="Filter branches/tags"
  838. type="text"
  839. >
  840. </div>
  841. <div class="SelectMenu-tabs" role="tablist" data-target="input-demux.control" >
  842. <button class="SelectMenu-tab" type="button" role="tab" aria-selected="true">Branches</button>
  843. <button class="SelectMenu-tab" type="button" role="tab">Tags</button>
  844. </div>
  845. <div role="tabpanel" id="ref-list-branches" data-filter-placeholder="Filter branches/tags" tabindex="" class="d-flex flex-column flex-auto overflow-auto">
  846. <ref-selector
  847. type="branch"
  848. data-targets="input-demux.sinks"
  849. data-action="
  850. input-entered:ref-selector#inputEntered
  851. tab-selected:ref-selector#tabSelected
  852. focus-list:ref-selector#focusFirstListMember
  853. "
  854. query-endpoint="/henices/Tcp-DNS-proxy/refs"
  855. cache-key="v0:1376330133.0"
  856. current-committish="bWFzdGVy"
  857. default-branch="bWFzdGVy"
  858. name-with-owner="aGVuaWNlcy9UY3AtRE5TLXByb3h5"
  859. prefetch-on-mouseover
  860. >
  861. <template data-target="ref-selector.fetchFailedTemplate">
  862. <div class="SelectMenu-message" data-index="{{ index }}">Could not load branches</div>
  863. </template>
  864. <template data-target="ref-selector.noMatchTemplate">
  865. <div class="SelectMenu-message">Nothing to show</div>
  866. </template>
  867. <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list " data-turbo-frame="repo-content-turbo-frame">
  868. <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden" aria-label="Menu is loading">
  869. <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
  870. <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
  871. <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
  872. </svg>
  873. </div>
  874. </div>
  875. <template data-target="ref-selector.itemTemplate">
  876. <a href="https://github.com/henices/Tcp-DNS-proxy/tree/{{ urlEncodedRefName }}" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" >
  877. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
  878. <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  879. </svg>
  880. <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span>
  881. <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span>
  882. </a>
  883. </template>
  884. <footer class="SelectMenu-footer"><a href="/henices/Tcp-DNS-proxy/branches">View all branches</a></footer>
  885. </ref-selector>
  886. </div>
  887. <div role="tabpanel" id="tags-menu" data-filter-placeholder="Find a tag" tabindex="" hidden class="d-flex flex-column flex-auto overflow-auto">
  888. <ref-selector
  889. type="tag"
  890. data-action="
  891. input-entered:ref-selector#inputEntered
  892. tab-selected:ref-selector#tabSelected
  893. focus-list:ref-selector#focusFirstListMember
  894. "
  895. data-targets="input-demux.sinks"
  896. query-endpoint="/henices/Tcp-DNS-proxy/refs"
  897. cache-key="v0:1376330133.0"
  898. current-committish="bWFzdGVy"
  899. default-branch="bWFzdGVy"
  900. name-with-owner="aGVuaWNlcy9UY3AtRE5TLXByb3h5"
  901. >
  902. <template data-target="ref-selector.fetchFailedTemplate">
  903. <div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div>
  904. </template>
  905. <template data-target="ref-selector.noMatchTemplate">
  906. <div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div>
  907. </template>
  908. <template data-target="ref-selector.itemTemplate">
  909. <a href="https://github.com/henices/Tcp-DNS-proxy/tree/{{ urlEncodedRefName }}" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}" >
  910. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
  911. <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  912. </svg>
  913. <span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span>
  914. <span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span>
  915. </a>
  916. </template>
  917. <div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" data-turbo-frame="repo-content-turbo-frame">
  918. <div class="SelectMenu-loading pt-3 pb-0 overflow-hidden" aria-label="Menu is loading">
  919. <svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
  920. <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
  921. <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
  922. </svg>
  923. </div>
  924. </div>
  925. <footer class="SelectMenu-footer"><a href="/henices/Tcp-DNS-proxy/tags">View all tags</a></footer>
  926. </ref-selector>
  927. </div>
  928. </tab-container>
  929. </input-demux>
  930. </div>
  931. </div>
  932. </details>
  933. </div>
  934. <div class="Overlay--hidden Overlay-backdrop--center" data-modal-dialog-overlay>
  935. <modal-dialog role="dialog" id="warn-tag-match-create-branch-dialog" aria-modal="true" aria-labelledby="warn-tag-match-create-branch-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto Overlay--motion-scaleFade">
  936. <header class="Overlay-header Overlay-header--large Overlay-header--divided">
  937. <div class="Overlay-headerContentWrap">
  938. <div class="Overlay-titleWrap">
  939. <h1 id="warn-tag-match-create-branch-dialog-header" class="Overlay-title">Name already in use</h1>
  940. </div>
  941. <div class="Overlay-actionWrap">
  942. <button data-close-dialog-id="warn-tag-match-create-branch-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
  943. <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  944. </svg></button>
  945. </div>
  946. </div>
  947. </header>
  948. <div class="Overlay-body ">
  949. <div data-view-component="true"> A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
  950. </div>
  951. </div>
  952. <footer class="Overlay-footer Overlay-footer--alignEnd">
  953. <button data-close-dialog-id="warn-tag-match-create-branch-dialog" type="button" data-view-component="true" class="btn"> Cancel
  954. </button>
  955. <button data-submit-dialog-id="warn-tag-match-create-branch-dialog" type="button" data-view-component="true" class="btn-danger btn"> Create
  956. </button>
  957. </footer>
  958. </modal-dialog></div>
  959. <div class="flex-self-center flex-self-stretch d-none flex-items-center lh-condensed-ultra d-lg-flex">
  960. <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/branches" class="ml-3 Link--primary no-underline">
  961. <svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-branch">
  962. <path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z"></path>
  963. </svg>
  964. <strong>2</strong>
  965. <span class="color-fg-muted">branches</span>
  966. </a>
  967. <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/tags" class="ml-3 Link--primary no-underline">
  968. <svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag">
  969. <path fill-rule="evenodd" d="M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"></path>
  970. </svg>
  971. <strong>5</strong>
  972. <span class="color-fg-muted">tags</span>
  973. </a>
  974. </div>
  975. <div class="flex-auto"></div>
  976. <include-fragment src="/henices/Tcp-DNS-proxy/overview_actions/master"></include-fragment>
  977. <span class="d-none d-md-flex ml-2">
  978. <get-repo class="">
  979. <details class="position-relative details-overlay details-reset js-codespaces-details-container"
  980. data-action="toggle:get-repo#onDetailsToggle"
  981. >
  982. <summary data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;repository_id&quot;:2741653,&quot;target&quot;:&quot;CLONE_OR_DOWNLOAD_BUTTON&quot;,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2d3e31ac90954a64fb33d49fdfb73da3a558f8d53ed6ac6d4317f4d2d0ffcff2" data-view-component="true" class="btn-primary btn"> Code<span class="dropdown-caret"></span>
  983. </summary> <div class="position-relative">
  984. <div class="dropdown-menu dropdown-menu-sw p-0" style="top:6px;width:400px;max-width: calc(100vw - 320px);">
  985. <div
  986. data-target="get-repo.modal"
  987. >
  988. <tab-container data-view-component="true">
  989. <div with_panel="true" data-view-component="true" class="tabnav hx_tabnav-in-dropdown color-bg-subtle m-0">
  990. <ul role="tablist" aria-label="Choose where to access your code" data-view-component="true" class="tabnav-tabs d-flex">
  991. <li role="presentation" data-view-component="true" class="hx_tabnav-in-dropdown-wrapper flex-1 d-inline-flex">
  992. <button data-tab="local" data-action="click:get-repo#localTabSelected focusin:get-repo#localTabSelected" id="local-tab" type="button" role="tab" aria-controls="local-panel" aria-selected="true" data-view-component="true" class="tabnav-tab flex-1">
  993. <span data-view-component="true">Local</span>
  994. </button></li>
  995. <li role="presentation" data-view-component="true" class="hx_tabnav-in-dropdown-wrapper flex-1 d-inline-flex">
  996. <button data-tab="cloud" data-action="click:get-repo#cloudTabSelected focusin:get-repo#cloudTabSelected" data-target="feature-callout.dismisser" id="cloud-tab" type="button" role="tab" aria-controls="cloud-panel" data-view-component="true" class="tabnav-tab flex-1">
  997. <span data-view-component="true"> <span>Codespaces</span>
  998. </span>
  999. </button></li>
  1000. </ul>
  1001. </div> <div id="local-panel" role="tabpanel" tabindex="0" aria-labelledby="local-tab" data-view-component="true"> <ul class="list-style-none">
  1002. <li class="Box-row p-3">
  1003. <a class="Link--muted float-right tooltipped tooltipped-s" href="https://docs.github.com/articles/which-remote-url-should-i-use" target="_blank" aria-label="Which remote URL should I use?">
  1004. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-question">
  1005. <path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zM6.92 6.085c.081-.16.19-.299.34-.398.145-.097.371-.187.74-.187.28 0 .553.087.738.225A.613.613 0 019 6.25c0 .177-.04.264-.077.318a.956.956 0 01-.277.245c-.076.051-.158.1-.258.161l-.007.004a7.728 7.728 0 00-.313.195 2.416 2.416 0 00-.692.661.75.75 0 001.248.832.956.956 0 01.276-.245 6.3 6.3 0 01.26-.16l.006-.004c.093-.057.204-.123.313-.195.222-.149.487-.355.692-.662.214-.32.329-.702.329-1.15 0-.76-.36-1.348-.863-1.725A2.76 2.76 0 008 4c-.631 0-1.155.16-1.572.438-.413.276-.68.638-.849.977a.75.75 0 101.342.67z"></path>
  1006. </svg>
  1007. </a>
  1008. <div class="text-bold">
  1009. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-terminal mr-2">
  1010. <path fill-rule="evenodd" d="M0 2.75C0 1.784.784 1 1.75 1h12.5c.966 0 1.75.784 1.75 1.75v10.5A1.75 1.75 0 0114.25 15H1.75A1.75 1.75 0 010 13.25V2.75zm1.75-.25a.25.25 0 00-.25.25v10.5c0 .138.112.25.25.25h12.5a.25.25 0 00.25-.25V2.75a.25.25 0 00-.25-.25H1.75zM7.25 8a.75.75 0 01-.22.53l-2.25 2.25a.75.75 0 11-1.06-1.06L5.44 8 3.72 6.28a.75.75 0 111.06-1.06l2.25 2.25c.141.14.22.331.22.53zm1.5 1.5a.75.75 0 000 1.5h3a.75.75 0 000-1.5h-3z"></path>
  1011. </svg>
  1012. Clone
  1013. </div>
  1014. <tab-container>
  1015. <div class="UnderlineNav my-2 box-shadow-none">
  1016. <div class="UnderlineNav-body" role="tablist">
  1017. <button name="button" type="button" role="tab" class="UnderlineNav-item" aria-selected="true" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;USE_HTTPS&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6cdf91b4a10146bb5e7388e8758cb6c783897c701ca45e973091014b2619fbc9">
  1018. HTTPS
  1019. </button> <button name="button" type="button" role="tab" class="UnderlineNav-item" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;USE_GH_CLI&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e9686fbb43bdcaa2f4665cd59f0e86f5b9382f44054cedbf501dc8d5622056f8">
  1020. GitHub CLI
  1021. </button> </div>
  1022. </div>
  1023. <div role="tabpanel">
  1024. <div class="input-group">
  1025. <input type="text" class="form-control input-monospace input-sm color-bg-subtle" data-autoselect value="https://github.com/henices/Tcp-DNS-proxy.git" aria-label="https://github.com/henices/Tcp-DNS-proxy.git" readonly>
  1026. <div class="input-group-button">
  1027. <clipboard-copy value="https://github.com/henices/Tcp-DNS-proxy.git" aria-label="Copy to clipboard" class="btn btn-sm js-clipboard-copy tooltipped-no-delay ClipboardButton js-clone-url-http" data-copy-feedback="Copied!" data-tooltip-direction="n" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;COPY_URL&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b1a8cd22284d2515bc612a370b195dfcde1ab04fc014afc79995f485a4110160"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon d-inline-block">
  1028. <path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path>
  1029. </svg><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-inline-block d-sm-none">
  1030. <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  1031. </svg></clipboard-copy>
  1032. </div>
  1033. </div>
  1034. <p class="mt-2 mb-0 f6 color-fg-muted">
  1035. Use Git or checkout with SVN using the web URL.
  1036. </p>
  1037. </div>
  1038. <div role="tabpanel" hidden>
  1039. <div class="input-group">
  1040. <input type="text" class="form-control input-monospace input-sm color-bg-subtle" data-autoselect value="gh repo clone henices/Tcp-DNS-proxy" aria-label="gh repo clone henices/Tcp-DNS-proxy" readonly>
  1041. <div class="input-group-button">
  1042. <clipboard-copy value="gh repo clone henices/Tcp-DNS-proxy" aria-label="Copy to clipboard" class="btn btn-sm js-clipboard-copy tooltipped-no-delay ClipboardButton js-clone-url-gh-cli" data-copy-feedback="Copied!" data-tooltip-direction="n" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;COPY_URL&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b1a8cd22284d2515bc612a370b195dfcde1ab04fc014afc79995f485a4110160"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon d-inline-block">
  1043. <path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path>
  1044. </svg><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-inline-block d-sm-none">
  1045. <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  1046. </svg></clipboard-copy>
  1047. </div>
  1048. </div>
  1049. <p class="mt-2 mb-0 f6 color-fg-muted">
  1050. Work fast with our official CLI.
  1051. <a href="https://cli.github.com" target="_blank">Learn more</a>.
  1052. </p>
  1053. </div>
  1054. </tab-container>
  1055. </li>
  1056. <li data-platforms="windows,mac" class="Box-row Box-row--hover-gray p-3 mt-0 rounded-0 js-remove-unless-platform">
  1057. <a class="d-flex flex-items-center color-fg-default text-bold no-underline" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;OPEN_IN_DESKTOP&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="a1be6b6ee93372331c5d733f7fa7a6e0cce6a4b7959ed596e398383bccc2894b" data-action="click:get-repo#showDownloadMessage" href="https://desktop.github.com">
  1058. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-desktop-download mr-2">
  1059. <path d="M4.927 5.427l2.896 2.896a.25.25 0 00.354 0l2.896-2.896A.25.25 0 0010.896 5H8.75V.75a.75.75 0 10-1.5 0V5H5.104a.25.25 0 00-.177.427z"></path><path d="M1.573 2.573a.25.25 0 00-.073.177v7.5a.25.25 0 00.25.25h12.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-3a.75.75 0 110-1.5h3A1.75 1.75 0 0116 2.75v7.5A1.75 1.75 0 0114.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.75.75 0 0111.25 16h-6.5a.75.75 0 01-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 010 10.25v-7.5A1.75 1.75 0 011.75 1h3a.75.75 0 010 1.5h-3a.25.25 0 00-.177.073zM6.982 12a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5H6.982z"></path>
  1060. </svg>
  1061. Open with GitHub Desktop
  1062. </a></li>
  1063. <li class="Box-row Box-row--hover-gray p-3 mt-0" >
  1064. <a class="d-flex flex-items-center color-fg-default text-bold no-underline" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;clone_or_download.click&quot;,&quot;payload&quot;:{&quot;feature_clicked&quot;:&quot;DOWNLOAD_ZIP&quot;,&quot;git_repository_type&quot;:&quot;REPOSITORY&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d0d88c123096ae07520b343107359589bb4e73ed187b6bcf8bceb109da9c0ff0" data-ga-click="Repository, download zip, location:repo overview" data-open-app="link" data-turbo="false" href="/henices/Tcp-DNS-proxy/archive/refs/heads/master.zip">
  1065. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-zip mr-2">
  1066. <path fill-rule="evenodd" d="M3.5 1.75a.25.25 0 01.25-.25h3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h2.086a.25.25 0 01.177.073l2.914 2.914a.25.25 0 01.073.177v8.586a.25.25 0 01-.25.25h-.5a.75.75 0 000 1.5h.5A1.75 1.75 0 0014 13.25V4.664c0-.464-.184-.909-.513-1.237L10.573.513A1.75 1.75 0 009.336 0H3.75A1.75 1.75 0 002 1.75v11.5c0 .649.353 1.214.874 1.515a.75.75 0 10.752-1.298.25.25 0 01-.126-.217V1.75zM8.75 3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM6 5.25a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5A.75.75 0 016 5.25zm2 1.5A.75.75 0 018.75 6h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 6.75zm-1.25.75a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM8 9.75A.75.75 0 018.75 9h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 9.75zm-.75.75a1.75 1.75 0 00-1.75 1.75v3c0 .414.336.75.75.75h2.5a.75.75 0 00.75-.75v-3a1.75 1.75 0 00-1.75-1.75h-.5zM7 12.25a.25.25 0 01.25-.25h.5a.25.25 0 01.25.25v2.25H7v-2.25z"></path>
  1067. </svg>
  1068. Download ZIP
  1069. </a></li>
  1070. </ul>
  1071. </div>
  1072. <div id="cloud-panel" role="tabpanel" tabindex="0" hidden="hidden" aria-labelledby="cloud-tab" data-view-component="true" class="cloud-panel"> <div data-view-component="true" class="blankslate">
  1073. <h4 data-view-component="true" class="mb-1">Sign In Required</h4>
  1074. <p class="mt-2 mx-4">
  1075. Please
  1076. <a href="/codespaces/new?hide_repo_select=true&amp;ref=master&amp;repo=2741653" data-view-component="true" class="no-underline">sign in</a>
  1077. to use Codespaces.
  1078. </p>
  1079. </div></div>
  1080. </tab-container></div>
  1081. <div class="p-3" data-targets="get-repo.platforms" data-platform="mac" hidden>
  1082. <h4 class="lh-condensed mb-3">Launching GitHub Desktop<span class="AnimatedEllipsis"></span></h4>
  1083. <p class="color-fg-muted">
  1084. If nothing happens, <a href="https://desktop.github.com/">download GitHub Desktop</a> and try again.
  1085. </p>
  1086. <button data-action="click:get-repo#onDetailsToggle" type="button" data-view-component="true" class="btn-link">
  1087. </button>
  1088. </div>
  1089. <div class="p-3" data-targets="get-repo.platforms" data-platform="windows" hidden>
  1090. <h4 class="lh-condensed mb-3">Launching GitHub Desktop<span class="AnimatedEllipsis"></span></h4>
  1091. <p class="color-fg-muted">
  1092. If nothing happens, <a href="https://desktop.github.com/">download GitHub Desktop</a> and try again.
  1093. </p>
  1094. <button data-action="click:get-repo#onDetailsToggle" type="button" data-view-component="true" class="btn-link">
  1095. </button>
  1096. </div>
  1097. <div class="p-3" data-targets="get-repo.platforms" data-platform="xcode" hidden>
  1098. <h4 class="lh-condensed mb-3">Launching Xcode<span class="AnimatedEllipsis"></span></h4>
  1099. <p class="color-fg-muted">
  1100. If nothing happens, <a href="https://developer.apple.com/xcode/">download Xcode</a> and try again.
  1101. </p>
  1102. <button data-action="click:get-repo#onDetailsToggle" type="button" data-view-component="true" class="btn-link">
  1103. </button>
  1104. </div>
  1105. <div class="p-3 " data-targets="get-repo.platforms" data-target="new-codespace.loadingVscode create-button.loadingVscode" data-platform="vscode" hidden>
  1106. <poll-include-fragment data-target="get-repo.vscodePoller new-codespace.vscodePoller create-button.vscodePoller">
  1107. <h4 class="lh-condensed mb-3">Launching Visual Studio Code<span class="AnimatedEllipsis" data-hide-on-error></span></h4>
  1108. <p class="color-fg-muted" data-hide-on-error>Your codespace will open once ready.</p>
  1109. <p class="color-fg-muted" data-show-on-error hidden>There was a problem preparing your codespace, please try again.</p>
  1110. </poll-include-fragment>
  1111. </div>
  1112. </div>
  1113. </div>
  1114. </details>
  1115. </get-repo>
  1116. </span>
  1117. <span class="d-none d-lg-flex">
  1118. </span>
  1119. </div>
  1120. <div class="Box mb-3" >
  1121. <div class="Box-header position-relative">
  1122. <h2 class="sr-only">Latest commit</h2>
  1123. <div class="js-details-container Details d-flex rounded-top-2 flex-items-center flex-wrap" data-issue-and-pr-hovercards-enabled>
  1124. <include-fragment src="/henices/Tcp-DNS-proxy/tree-commit/646c315fc8e2c7dc808b81f43eb7fc7ae33b2f68" class="d-flex flex-auto flex-items-center" aria-busy="true" aria-label="Loading latest commit">
  1125. <div class="Skeleton avatar avatar-user flex-shrink-0 ml-n1 mr-n1 mt-n1 mb-n1" style="width:24px;height:24px;"></div>
  1126. <div class="Skeleton Skeleton--text col-5 ml-3">&nbsp;</div>
  1127. </include-fragment> <div class="flex-shrink-0">
  1128. <h2 class="sr-only">Git stats</h2>
  1129. <ul class="list-style-none d-flex">
  1130. <li class="ml-0 ml-md-3">
  1131. <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/commits/master" class="pl-3 pr-3 py-3 p-md-0 mt-n3 mb-n3 mr-n3 m-md-0 Link--primary no-underline no-wrap">
  1132. <svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history">
  1133. <path fill-rule="evenodd" d="M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"></path>
  1134. </svg>
  1135. <span class="d-none d-sm-inline">
  1136. <strong>141</strong>
  1137. <span aria-label="Commits on master" class="color-fg-muted d-none d-lg-inline">
  1138. commits
  1139. </span>
  1140. </span>
  1141. </a>
  1142. </li>
  1143. </ul>
  1144. </div>
  1145. </div>
  1146. </div>
  1147. <h2 id="files" class="sr-only">Files</h2>
  1148. <include-fragment src="/henices/Tcp-DNS-proxy/file-list/master">
  1149. <a class="d-none js-permalink-shortcut" data-hotkey="y" href="/henices/Tcp-DNS-proxy/tree/646c315fc8e2c7dc808b81f43eb7fc7ae33b2f68">Permalink</a>
  1150. <div data-view-component="true" class="include-fragment-error flash flash-error flash-full py-2">
  1151. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
  1152. <path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
  1153. </svg>
  1154. Failed to load latest commit information.
  1155. </div> <div class="js-details-container Details" data-hpc>
  1156. <div role="grid" aria-labelledby="files" class="Details-content--hidden-not-important js-navigation-container js-active-navigation-container d-md-block">
  1157. <div class="sr-only" role="row">
  1158. <div role="columnheader">Type</div>
  1159. <div role="columnheader">Name</div>
  1160. <div role="columnheader" class="d-none d-md-block">Latest commit message</div>
  1161. <div role="columnheader">Commit time</div>
  1162. </div>
  1163. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1164. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1165. <svg aria-label="Directory" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-directory-fill hx_color-icon-directory">
  1166. <path d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3H7.5a.25.25 0 01-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75z"></path>
  1167. </svg>
  1168. </div>
  1169. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1170. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title="third_party" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/tree/master/third_party">third_party</a></span>
  1171. </div>
  1172. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1173. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1174. </div>
  1175. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1176. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1177. </div>
  1178. </div>
  1179. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1180. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1181. <svg aria-label="Directory" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-directory-fill hx_color-icon-directory">
  1182. <path d="M1.75 1A1.75 1.75 0 000 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0016 13.25v-8.5A1.75 1.75 0 0014.25 3H7.5a.25.25 0 01-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75z"></path>
  1183. </svg>
  1184. </div>
  1185. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1186. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title="win" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/tree/master/win">win</a></span>
  1187. </div>
  1188. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1189. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1190. </div>
  1191. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1192. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1193. </div>
  1194. </div>
  1195. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1196. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1197. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1198. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1199. </svg>
  1200. </div>
  1201. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1202. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title=".gitignore" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/.gitignore">.gitignore</a></span>
  1203. </div>
  1204. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1205. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1206. </div>
  1207. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1208. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1209. </div>
  1210. </div>
  1211. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1212. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1213. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1214. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1215. </svg>
  1216. </div>
  1217. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1218. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title=".gitmodules" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/.gitmodules">.gitmodules</a></span>
  1219. </div>
  1220. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1221. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1222. </div>
  1223. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1224. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1225. </div>
  1226. </div>
  1227. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1228. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1229. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1230. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1231. </svg>
  1232. </div>
  1233. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1234. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title=".travis.yml" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/.travis.yml">.travis.yml</a></span>
  1235. </div>
  1236. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1237. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1238. </div>
  1239. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1240. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1241. </div>
  1242. </div>
  1243. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1244. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1245. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1246. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1247. </svg>
  1248. </div>
  1249. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1250. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title="README-zh.md" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/README-zh.md">README-zh.md</a></span>
  1251. </div>
  1252. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1253. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1254. </div>
  1255. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1256. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1257. </div>
  1258. </div>
  1259. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1260. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1261. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1262. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1263. </svg>
  1264. </div>
  1265. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1266. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title="README.md" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/README.md">README.md</a></span>
  1267. </div>
  1268. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1269. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1270. </div>
  1271. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1272. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1273. </div>
  1274. </div>
  1275. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1276. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1277. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1278. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1279. </svg>
  1280. </div>
  1281. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1282. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title="TODO.md" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/TODO.md">TODO.md</a></span>
  1283. </div>
  1284. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1285. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1286. </div>
  1287. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1288. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1289. </div>
  1290. </div>
  1291. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1292. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1293. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1294. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1295. </svg>
  1296. </div>
  1297. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1298. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title="install.sh" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/install.sh">install.sh</a></span>
  1299. </div>
  1300. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1301. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1302. </div>
  1303. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1304. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1305. </div>
  1306. </div>
  1307. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1308. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1309. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1310. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1311. </svg>
  1312. </div>
  1313. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1314. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title="requirements.txt" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/requirements.txt">requirements.txt</a></span>
  1315. </div>
  1316. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1317. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1318. </div>
  1319. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1320. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1321. </div>
  1322. </div>
  1323. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1324. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1325. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1326. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1327. </svg>
  1328. </div>
  1329. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1330. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title="tcpdns.json.example" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/tcpdns.json.example">tcpdns.json.example</a></span>
  1331. </div>
  1332. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1333. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1334. </div>
  1335. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1336. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1337. </div>
  1338. </div>
  1339. <div role="row" class="Box-row Box-row--focus-gray py-2 d-flex position-relative js-navigation-item ">
  1340. <div role="gridcell" class="mr-3 flex-shrink-0" style="width: 16px;">
  1341. <svg aria-label="File" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file color-fg-muted">
  1342. <path fill-rule="evenodd" d="M3.75 1.5a.25.25 0 00-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 00.25-.25V6h-2.75A1.75 1.75 0 019 4.25V1.5H3.75zm6.75.062V4.25c0 .138.112.25.25.25h2.688a.252.252 0 00-.011-.013l-2.914-2.914a.272.272 0 00-.013-.011zM2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0113.25 16h-9.5A1.75 1.75 0 012 14.25V1.75z"></path>
  1343. </svg>
  1344. </div>
  1345. <div role="rowheader" class="flex-auto min-width-0 col-md-2 mr-3">
  1346. <span class="css-truncate css-truncate-target d-block width-fit"><a class="js-navigation-open Link--primary" title="tcpdns.py" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/blob/master/tcpdns.py">tcpdns.py</a></span>
  1347. </div>
  1348. <div role="gridcell" class="flex-auto min-width-0 d-none d-md-block col-5 mr-3" >
  1349. <div class="Skeleton Skeleton--text col-7">&nbsp;</div>
  1350. </div>
  1351. <div role="gridcell" class="color-fg-muted text-right" style="width:100px;">
  1352. <div class="Skeleton Skeleton--text">&nbsp;</div>
  1353. </div>
  1354. </div>
  1355. </div>
  1356. <div class="Details-content--shown Box-footer d-md-none p-0">
  1357. <button aria-expanded="false" type="button" data-view-component="true" class="js-details-target btn-link d-block width-full px-3 py-2"> View code
  1358. </button> </div>
  1359. </div>
  1360. </include-fragment>
  1361. </div>
  1362. <readme-toc>
  1363. <div id="readme" class="Box md js-code-block-container js-code-nav-container js-tagsearch-file Box--responsive"
  1364. data-tagsearch-path="README.md"
  1365. data-tagsearch-lang="Markdown">
  1366. <div class="d-flex js-sticky js-position-sticky top-0 border-top-0 border-bottom p-2 flex-items-center flex-justify-between color-bg-default rounded-top-2" style="position: sticky; z-index: 30;" >
  1367. <div class="d-flex flex-items-center">
  1368. <details
  1369. data-target="readme-toc.trigger"
  1370. data-menu-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;trigger&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}"
  1371. data-menu-hydro-click-hmac="b0d84b0738d48eecc62da4b146f68d4924483169bf584200b67bbe34115e25e0"
  1372. class="dropdown details-reset details-overlay"
  1373. >
  1374. <summary
  1375. class="btn btn-octicon m-0 mr-2 p-2"
  1376. aria-haspopup="true"
  1377. aria-label="Table of Contents">
  1378. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-list-unordered">
  1379. <path fill-rule="evenodd" d="M2 4a1 1 0 100-2 1 1 0 000 2zm3.75-1.5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zm0 5a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5zM3 8a1 1 0 11-2 0 1 1 0 012 0zm-1 6a1 1 0 100-2 1 1 0 000 2z"></path>
  1380. </svg>
  1381. </summary>
  1382. <details-menu class="SelectMenu" role="menu">
  1383. <div class="SelectMenu-modal rounded-3 mt-1" style="max-height:340px;">
  1384. <div class="SelectMenu-filter">
  1385. <input
  1386. class="SelectMenu-input form-control js-filterable-field"
  1387. id="toc-filter-field"
  1388. type="text"
  1389. autocomplete="off"
  1390. spellcheck="false"
  1391. autofocus
  1392. placeholder="Filter headings"
  1393. aria-label="Filter headings">
  1394. </div>
  1395. <div class="SelectMenu-list SelectMenu-list--borderless p-2" style="overscroll-behavior: contain;" data-filterable-for="toc-filter-field" data-filterable-type="substring">
  1396. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 24px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#how-to-use-this-python-script-">How to use this python script ?</a>
  1397. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 24px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#commandline">Commandline</a>
  1398. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 24px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#configuration-file">Configuration file</a>
  1399. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 24px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#dependencies">Dependencies</a>
  1400. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 36px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#libraries">libraries</a>
  1401. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 36px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#python-moudules">python moudules</a>
  1402. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 24px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#install">INSTALL</a>
  1403. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 36px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#super-quick-installation">Super-quick installation</a>
  1404. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 48px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#linux-system">Linux system</a>
  1405. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 48px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#windows-system">Windows system</a>
  1406. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 36px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#manual-installation">Manual Installation</a>
  1407. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 48px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#ubuntu-or-debian-installation-guide">Ubuntu or Debian installation guide</a>
  1408. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 48px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#windows-installation-guide">Windows installation guide</a>
  1409. <a role="menuitem" class="filter-item SelectMenu-item ws-normal wb-break-word line-clamp-2 py-1 " style="-webkit-box-orient: vertical; padding-left: 24px;" data-action="click:readme-toc#blur" data-targets="readme-toc.entries" data-hydro-click="{&quot;event_type&quot;:&quot;repository_toc_menu.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;entry&quot;,&quot;repository_id&quot;:2741653,&quot;originating_url&quot;:&quot;https://github.com/henices/Tcp-DNS-proxy&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b9710621d48fbb192423dee325d9b6315544d8c8d001464a17d3221cb689a8b5" href="#license">LICENSE</a>
  1410. </div>
  1411. </div>
  1412. </details-menu>
  1413. </details>
  1414. <h2 class="Box-title">
  1415. <a href="#readme" data-view-component="true" class="Link--primary">README.md</a>
  1416. </h2>
  1417. </div>
  1418. </div>
  1419. <div data-target="readme-toc.content" class="Box-body px-5 pb-5">
  1420. <article class="markdown-body entry-content container-lg" itemprop="text"><p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/04d0e245fe61d1aa674f11ff599a492cc2e743f9590fe3a6981cbc16343bf784/68747470733a2f2f7472617669732d63692e6f72672f68656e696365732f5463702d444e532d70726f78792e7376673f6272616e63683d6d6173746572"><img src="https://camo.githubusercontent.com/04d0e245fe61d1aa674f11ff599a492cc2e743f9590fe3a6981cbc16343bf784/68747470733a2f2f7472617669732d63692e6f72672f68656e696365732f5463702d444e532d70726f78792e7376673f6272616e63683d6d6173746572" alt="Build Status" data-canonical-src="https://travis-ci.org/henices/Tcp-DNS-proxy.svg?branch=master" style="max-width: 100%;"></a></p>
  1421. <h2 dir="auto"><a id="user-content-how-to-use-this-python-script-" class="anchor" aria-hidden="true" href="#how-to-use-this-python-script-"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>How to use this python script ?</h2>
  1422. <ol dir="auto">
  1423. <li>change your dns server to 127.0.0.1</li>
  1424. </ol>
  1425. <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$ vi /etc/resolve.conf
  1426. nameserver 127.0.0.1"><pre>$ vi /etc/resolve.conf
  1427. nameserver 127.0.0.1</pre></div>
  1428. <ol start="2" dir="auto">
  1429. <li>restart the network</li>
  1430. </ol>
  1431. <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$ sudo /etc/init.d/networking restart"><pre>$ sudo /etc/init.d/networking restart</pre></div>
  1432. <ol start="3" dir="auto">
  1433. <li>run the script</li>
  1434. </ol>
  1435. <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$ sudo python tcpdns.py -f tcpdns.json.example"><pre>$ sudo python tcpdns.py -f tcpdns.json.example</pre></div>
  1436. <ol start="4" dir="auto">
  1437. <li>stop the daemon process</li>
  1438. </ol>
  1439. <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$ sudo python tcpdns.py -s"><pre>$ sudo python tcpdns.py -s</pre></div>
  1440. <h2 dir="auto"><a id="user-content-commandline" class="anchor" aria-hidden="true" href="#commandline"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Commandline</h2>
  1441. <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="usage: tcpdns.py [-h] -f CONFIG_JSON [-d]
  1442. TCP DNS Proxy
  1443. optional arguments:
  1444. -h, --help show this help message and exit
  1445. -f CONFIG_JSON Json config file
  1446. -d Print debug message
  1447. -s Stop tcp dns proxy daemon"><pre class="notranslate"><code>usage: tcpdns.py [-h] -f CONFIG_JSON [-d]
  1448. TCP DNS Proxy
  1449. optional arguments:
  1450. -h, --help show this help message and exit
  1451. -f CONFIG_JSON Json config file
  1452. -d Print debug message
  1453. -s Stop tcp dns proxy daemon
  1454. </code></pre></div>
  1455. <h2 dir="auto"><a id="user-content-configuration-file" class="anchor" aria-hidden="true" href="#configuration-file"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Configuration file</h2>
  1456. <div class="highlight highlight-source-json notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="{
  1457. &quot;socket_timeout&quot;: 20,
  1458. &quot;host&quot;: &quot;0.0.0.0&quot;,
  1459. &quot;port&quot;: 53,
  1460. &quot;tcp_dns_server&quot;: [&quot;8.8.8.8:53&quot;,
  1461. &quot;8.8.4.4:53&quot;,
  1462. &quot;156.154.70.1:53&quot;,
  1463. &quot;156.154.71.1:53&quot;,
  1464. &quot;208.67.222.222:53&quot;,
  1465. &quot;208.67.220.220:53&quot;,
  1466. &quot;209.244.0.3:53&quot;],
  1467. &quot;udp_dns_server&quot;: [&quot;208.67.222.222:5353&quot;],
  1468. &quot;enable_server_switch&quot;: true,
  1469. &quot;speed_test&quot;: true,
  1470. &quot;enable_lru_cache&quot;: true,
  1471. &quot;lru_cache_size&quot; : 500,
  1472. &quot;udp_mode&quot; : false,
  1473. &quot;daemon_process&quot; : false,
  1474. &quot;internal_dns_server&quot;: [&quot;192.168.1.1:53&quot;],
  1475. &quot;internal_domain&quot;: [&quot;*intra*&quot;],
  1476. &quot;private_host&quot; : {&quot;*google.com&quot;: &quot;203.117.34.162&quot;}
  1477. }"><pre>{
  1478. <span class="pl-ent">"socket_timeout"</span>: <span class="pl-c1">20</span>,
  1479. <span class="pl-ent">"host"</span>: <span class="pl-s"><span class="pl-pds">"</span>0.0.0.0<span class="pl-pds">"</span></span>,
  1480. <span class="pl-ent">"port"</span>: <span class="pl-c1">53</span>,
  1481. <span class="pl-ent">"tcp_dns_server"</span>: [<span class="pl-s"><span class="pl-pds">"</span>8.8.8.8:53<span class="pl-pds">"</span></span>,
  1482. <span class="pl-s"><span class="pl-pds">"</span>8.8.4.4:53<span class="pl-pds">"</span></span>,
  1483. <span class="pl-s"><span class="pl-pds">"</span>156.154.70.1:53<span class="pl-pds">"</span></span>,
  1484. <span class="pl-s"><span class="pl-pds">"</span>156.154.71.1:53<span class="pl-pds">"</span></span>,
  1485. <span class="pl-s"><span class="pl-pds">"</span>208.67.222.222:53<span class="pl-pds">"</span></span>,
  1486. <span class="pl-s"><span class="pl-pds">"</span>208.67.220.220:53<span class="pl-pds">"</span></span>,
  1487. <span class="pl-s"><span class="pl-pds">"</span>209.244.0.3:53<span class="pl-pds">"</span></span>],
  1488. <span class="pl-ent">"udp_dns_server"</span>: [<span class="pl-s"><span class="pl-pds">"</span>208.67.222.222:5353<span class="pl-pds">"</span></span>],
  1489. <span class="pl-ent">"enable_server_switch"</span>: <span class="pl-c1">true</span>,
  1490. <span class="pl-ent">"speed_test"</span>: <span class="pl-c1">true</span>,
  1491. <span class="pl-ent">"enable_lru_cache"</span>: <span class="pl-c1">true</span>,
  1492. <span class="pl-ent">"lru_cache_size"</span> : <span class="pl-c1">500</span>,
  1493. <span class="pl-ent">"udp_mode"</span> : <span class="pl-c1">false</span>,
  1494. <span class="pl-ent">"daemon_process"</span> : <span class="pl-c1">false</span>,
  1495. <span class="pl-ent">"internal_dns_server"</span>: [<span class="pl-s"><span class="pl-pds">"</span>192.168.1.1:53<span class="pl-pds">"</span></span>],
  1496. <span class="pl-ent">"internal_domain"</span>: [<span class="pl-s"><span class="pl-pds">"</span>*intra*<span class="pl-pds">"</span></span>],
  1497. <span class="pl-ent">"private_host"</span> : {<span class="pl-ent">"*google.com"</span>: <span class="pl-s"><span class="pl-pds">"</span>203.117.34.162<span class="pl-pds">"</span></span>}
  1498. }</pre></div>
  1499. <ul dir="auto">
  1500. <li><strong>enable_server_switch</strong>: switch dns servers if network is slow</li>
  1501. <li><strong>speed_test</strong> : test dns server speed on startup</li>
  1502. <li><strong>enable_lru_cache</strong> : use lru cache to store dns server responses</li>
  1503. <li><strong>udp_mode</strong> : use udp dns procotol, default is tcp dns protocol</li>
  1504. <li><strong>daemon_process</strong> : daemon process on *nix platform</li>
  1505. <li><strong>internal_dns_server</strong> : internal dns server on internal network</li>
  1506. <li><strong>internal_domain</strong> : internal domains which use internal dns server to get ip address</li>
  1507. <li><strong>private_host</strong> : like /etc/hosts on *nix platform</li>
  1508. </ul>
  1509. <h2 dir="auto"><a id="user-content-dependencies" class="anchor" aria-hidden="true" href="#dependencies"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Dependencies</h2>
  1510. <h3 dir="auto"><a id="user-content-libraries" class="anchor" aria-hidden="true" href="#libraries"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>libraries</h3>
  1511. <ul dir="auto">
  1512. <li>[libev] (<a href="http://libevent.org/" rel="nofollow">http://libevent.org/</a>)</li>
  1513. </ul>
  1514. <h3 dir="auto"><a id="user-content-python-moudules" class="anchor" aria-hidden="true" href="#python-moudules"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>python moudules</h3>
  1515. <ul dir="auto">
  1516. <li>[gevent] (<a href="https://github.com/surfly/gevent">https://github.com/surfly/gevent</a>)</li>
  1517. <li>[pylru] (<a href="https://github.com/jlhutch/pylru">https://github.com/jlhutch/pylru</a>)</li>
  1518. <li>[python-daemon] (<a href="https://github.com/serverdensity/python-daemon">https://github.com/serverdensity/python-daemon</a>) (Windows does not need)</li>
  1519. </ul>
  1520. <h2 dir="auto"><a id="user-content-install" class="anchor" aria-hidden="true" href="#install"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>INSTALL</h2>
  1521. <h3 dir="auto"><a id="user-content-super-quick-installation" class="anchor" aria-hidden="true" href="#super-quick-installation"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Super-quick installation</h3>
  1522. <h4 dir="auto"><a id="user-content-linux-system" class="anchor" aria-hidden="true" href="#linux-system"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Linux system</h4>
  1523. <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="
  1524. chmod +x ./install.sh
  1525. ./install.sh"><pre> chmod +x ./install.sh
  1526. ./install.sh</pre></div>
  1527. <h4 dir="auto"><a id="user-content-windows-system" class="anchor" aria-hidden="true" href="#windows-system"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Windows system</h4>
  1528. <p dir="auto">Use tcpdns.exe in win directory.</p>
  1529. <h3 dir="auto"><a id="user-content-manual-installation" class="anchor" aria-hidden="true" href="#manual-installation"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Manual Installation</h3>
  1530. <h4 dir="auto"><a id="user-content-ubuntu-or-debian-installation-guide" class="anchor" aria-hidden="true" href="#ubuntu-or-debian-installation-guide"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Ubuntu or Debian installation guide</h4>
  1531. <ol dir="auto">
  1532. <li>
  1533. <p dir="auto">Use the following commands to install python modules</p>
  1534. <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="
  1535. sudo apt-get install libevent-dev
  1536. sudo apt-get install python-pip
  1537. sudo pip install gevent
  1538. sudo pip install python-daemon"><pre> sudo apt-get install libevent-dev
  1539. sudo apt-get install python-pip
  1540. sudo pip install gevent
  1541. sudo pip install python-daemon</pre></div>
  1542. </li>
  1543. <li>
  1544. <p dir="auto">Pull the submodule source code.</p>
  1545. <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content=" cd Tcp-DNS-proxy
  1546. git submodule update --init --recursive"><pre> <span class="pl-c1">cd</span> Tcp-DNS-proxy
  1547. git submodule update --init --recursive</pre></div>
  1548. </li>
  1549. </ol>
  1550. <h4 dir="auto"><a id="user-content-windows-installation-guide" class="anchor" aria-hidden="true" href="#windows-installation-guide"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>Windows installation guide</h4>
  1551. <p dir="auto">In order to build gevent library you should install Visual Studio,
  1552. although tcpdns.py can run perfectly without python gevent.
  1553. If you cannot run "C:\Python27\Scripts\pip.exe" in the CMD,
  1554. you can try "C:\Python27\python.exe -m pip".</p>
  1555. <ol dir="auto">
  1556. <li>
  1557. <p dir="auto">Pull the submodule source code.</p>
  1558. <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content=" cd Tcp-DNS-proxy
  1559. git submodule update --init --recursive"><pre> <span class="pl-c1">cd</span> Tcp-DNS-proxy
  1560. git submodule update --init --recursive</pre></div>
  1561. </li>
  1562. <li>
  1563. <p dir="auto">install python 2.7.9</p>
  1564. </li>
  1565. <li>
  1566. <p dir="auto">Install pip.exe</p>
  1567. <p dir="auto">Download get-pip.py from <a href="https://raw.github.com/pypa/pip/master/contrib/get-pip.py">get-pip.py</a>,
  1568. execute the following commands:</p>
  1569. <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="python get-pip.py"><pre class="notranslate"><code>python get-pip.py
  1570. </code></pre></div>
  1571. </li>
  1572. <li>
  1573. <p dir="auto">install greenlet</p>
  1574. <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="C:\Python27\Scripts\pip.exe install greenlet"><pre class="notranslate"><code>C:\Python27\Scripts\pip.exe install greenlet
  1575. </code></pre></div>
  1576. </li>
  1577. <li>
  1578. <p dir="auto">install Microsoft Visual C++ Compiler for Python 2.7</p>
  1579. </li>
  1580. </ol>
  1581. <p dir="auto"><a href="http://www.microsoft.com/en-us/download/details.aspx?id=44266" rel="nofollow">Download link</a></p>
  1582. <ol start="6" dir="auto">
  1583. <li>
  1584. <p dir="auto">Install python gevent</p>
  1585. <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="C:\Python27\Scripts\pip.exe install gevent"><pre class="notranslate"><code>C:\Python27\Scripts\pip.exe install gevent
  1586. </code></pre></div>
  1587. </li>
  1588. <li>
  1589. <p dir="auto">install pyinstaller</p>
  1590. <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="C:\Python27\Scripts\pip.exe install pyinstaller"><pre class="notranslate"><code>C:\Python27\Scripts\pip.exe install pyinstaller
  1591. </code></pre></div>
  1592. </li>
  1593. <li>
  1594. <p dir="auto">execute toexe.bat</p>
  1595. </li>
  1596. </ol>
  1597. <h2 dir="auto"><a id="user-content-license" class="anchor" aria-hidden="true" href="#license"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z"></path></svg></a>LICENSE</h2>
  1598. <p dir="auto">This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
  1599. as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.</p>
  1600. <p dir="auto">This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
  1601. of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p>
  1602. <p dir="auto">You should have received a copy of the GNU General Public License along with this program. If not, see
  1603. <a href="http://www.gnu.org/licenses/" rel="nofollow">http://www.gnu.org/licenses/</a></p>
  1604. </article>
  1605. </div>
  1606. </div>
  1607. </readme-toc>
  1608. </div>
  1609. <div data-view-component="true" class="Layout-sidebar">
  1610. <div class="BorderGrid BorderGrid--spacious" data-pjax>
  1611. <div class="BorderGrid-row hide-sm hide-md">
  1612. <div class="BorderGrid-cell">
  1613. <h2 class="mb-3 h4">About</h2>
  1614. <p class="f4 my-3">
  1615. A TCP dns proxy which can get the RIGHT ip address
  1616. </p>
  1617. <h3 class="sr-only">Topics</h3>
  1618. <div class="my-3">
  1619. <div class="f6">
  1620. <a data-ga-click="Topic, repository page" data-octo-click="topic_click" data-octo-dimensions="topic:python" href="/topics/python" title="Topic: python" data-view-component="true" class="topic-tag topic-tag-link">
  1621. python
  1622. </a>
  1623. <a data-ga-click="Topic, repository page" data-octo-click="topic_click" data-octo-dimensions="topic:dns-server" href="/topics/dns-server" title="Topic: dns-server" data-view-component="true" class="topic-tag topic-tag-link">
  1624. dns-server
  1625. </a>
  1626. <a data-ga-click="Topic, repository page" data-octo-click="topic_click" data-octo-dimensions="topic:tcp-dns-proxy" href="/topics/tcp-dns-proxy" title="Topic: tcp-dns-proxy" data-view-component="true" class="topic-tag topic-tag-link">
  1627. tcp-dns-proxy
  1628. </a>
  1629. </div>
  1630. </div>
  1631. <h3 class="sr-only">Resources</h3>
  1632. <div class="mt-2">
  1633. <a class="Link--muted" data-analytics-event="{&quot;category&quot;:&quot;Repository Overview&quot;,&quot;action&quot;:&quot;click&quot;,&quot;label&quot;:&quot;location:sidebar;file:readme&quot;}" href="#readme">
  1634. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book mr-2">
  1635. <path fill-rule="evenodd" d="M0 1.75A.75.75 0 01.75 1h4.253c1.227 0 2.317.59 3 1.501A3.744 3.744 0 0111.006 1h4.245a.75.75 0 01.75.75v10.5a.75.75 0 01-.75.75h-4.507a2.25 2.25 0 00-1.591.659l-.622.621a.75.75 0 01-1.06 0l-.622-.621A2.25 2.25 0 005.258 13H.75a.75.75 0 01-.75-.75V1.75zm8.755 3a2.25 2.25 0 012.25-2.25H14.5v9h-3.757c-.71 0-1.4.201-1.992.572l.004-7.322zm-1.504 7.324l.004-5.073-.002-2.253A2.25 2.25 0 005.003 2.5H1.5v9h3.757a3.75 3.75 0 011.994.574z"></path>
  1636. </svg>
  1637. Readme
  1638. </a> </div>
  1639. <include-fragment src="/henices/Tcp-DNS-proxy/hovercards/citation/sidebar_partial?tree_name=master">
  1640. </include-fragment>
  1641. <h3 class="sr-only">Stars</h3>
  1642. <div class="mt-2">
  1643. <a href="/henices/Tcp-DNS-proxy/stargazers" data-view-component="true" class="Link--muted">
  1644. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star mr-2">
  1645. <path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path>
  1646. </svg>
  1647. <strong>806</strong>
  1648. stars
  1649. </a></div>
  1650. <h3 class="sr-only">Watchers</h3>
  1651. <div class="mt-2">
  1652. <a href="/henices/Tcp-DNS-proxy/watchers" data-view-component="true" class="Link--muted">
  1653. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-eye mr-2">
  1654. <path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path>
  1655. </svg>
  1656. <strong>78</strong>
  1657. watching
  1658. </a></div>
  1659. <h3 class="sr-only">Forks</h3>
  1660. <div class="mt-2">
  1661. <a href="/henices/Tcp-DNS-proxy/network/members" data-view-component="true" class="Link--muted">
  1662. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2">
  1663. <path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>
  1664. </svg>
  1665. <strong>203</strong>
  1666. forks
  1667. </a></div>
  1668. </div>
  1669. </div>
  1670. <div class="BorderGrid-row">
  1671. <div class="BorderGrid-cell">
  1672. <h2 class="h4 mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame">
  1673. <a href="/henices/Tcp-DNS-proxy/releases" data-view-component="true" class="Link--primary no-underline">
  1674. Releases
  1675. <span title="5" data-view-component="true" class="Counter">5</span>
  1676. </a></h2>
  1677. <a class="Link--primary d-flex no-underline" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/releases/tag/v1.4">
  1678. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag flex-shrink-0 mt-1 color-fg-success">
  1679. <path fill-rule="evenodd" d="M2.5 7.775V2.75a.25.25 0 01.25-.25h5.025a.25.25 0 01.177.073l6.25 6.25a.25.25 0 010 .354l-5.025 5.025a.25.25 0 01-.354 0l-6.25-6.25a.25.25 0 01-.073-.177zm-1.5 0V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 010 2.474l-5.026 5.026a1.75 1.75 0 01-2.474 0l-6.25-6.25A1.75 1.75 0 011 7.775zM6 5a1 1 0 100 2 1 1 0 000-2z"></path>
  1680. </svg>
  1681. <div class="ml-2 min-width-0">
  1682. <div class="d-flex">
  1683. <span class="css-truncate css-truncate-target text-bold mr-2" style="max-width: none;">Tcp DNS proxy v1.4 released</span>
  1684. <span title="Label: Latest" data-view-component="true" class="Label Label--success flex-shrink-0">
  1685. Latest
  1686. </span> </div>
  1687. <div class="text-small color-fg-muted"><relative-time datetime="2016-03-09T01:39:31Z" class="no-wrap">Mar 9, 2016</relative-time></div>
  1688. </div>
  1689. </a> <div data-view-component="true" class="mt-3">
  1690. <a text="small" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/henices/Tcp-DNS-proxy/releases" data-view-component="true">
  1691. + 4 releases
  1692. </a></div>
  1693. </div>
  1694. </div>
  1695. <div class="BorderGrid-row">
  1696. <div class="BorderGrid-cell">
  1697. <h2 class="h4 mb-3">
  1698. <a href="/users/henices/packages?repo_name=Tcp-DNS-proxy" data-view-component="true" class="Link--primary no-underline">
  1699. Packages <span title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>
  1700. </a></h2>
  1701. <div class="text-small color-fg-muted">
  1702. No packages published <br>
  1703. </div>
  1704. </div>
  1705. </div>
  1706. <div class="BorderGrid-row" hidden>
  1707. <div class="BorderGrid-cell">
  1708. <include-fragment src="/henices/Tcp-DNS-proxy/used_by_list" accept="text/fragment+html">
  1709. </include-fragment>
  1710. </div>
  1711. </div>
  1712. <div class="BorderGrid-row">
  1713. <div class="BorderGrid-cell">
  1714. <h2 class="h4 mb-3">
  1715. <a href="/henices/Tcp-DNS-proxy/graphs/contributors" data-view-component="true" class="Link--primary no-underline">
  1716. Contributors <span title="5" data-view-component="true" class="Counter">5</span>
  1717. </a></h2>
  1718. <include-fragment src="/henices/Tcp-DNS-proxy/contributors_list?count=5&amp;current_repository=Tcp-DNS-proxy&amp;items_to_show=5" aria-busy="true" aria-label="Loading contributors">
  1719. <ul class="list-style-none d-flex flex-wrap mb-n2">
  1720. <li class="mb-2 ">
  1721. <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div>
  1722. </li>
  1723. <li class="mb-2 ">
  1724. <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div>
  1725. </li>
  1726. <li class="mb-2 ">
  1727. <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div>
  1728. </li>
  1729. <li class="mb-2 ">
  1730. <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div>
  1731. </li>
  1732. <li class="mb-2 ">
  1733. <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div>
  1734. </li>
  1735. </ul>
  1736. </include-fragment>
  1737. </div>
  1738. </div>
  1739. <div class="BorderGrid-row">
  1740. <div class="BorderGrid-cell">
  1741. <h2 class="h4 mb-3">Languages</h2>
  1742. <div class="mb-2">
  1743. <span data-view-component="true" class="Progress">
  1744. <span style="background-color:#3572A5 !important;;width: 94.7%;" itemprop="keywords" aria-label="Python 94.7" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span>
  1745. <span style="background-color:#89e051 !important;;width: 5.0%;" itemprop="keywords" aria-label="Shell 5.0" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span>
  1746. <span style="background-color:#C1F12E !important;;width: 0.3%;" itemprop="keywords" aria-label="Batchfile 0.3" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span>
  1747. </span></div>
  1748. <ul class="list-style-none">
  1749. <li class="d-inline">
  1750. <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/henices/Tcp-DNS-proxy/search?l=python" data-ga-click="Repository, language stats search click, location:repo overview">
  1751. <svg style="color:#3572A5;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2">
  1752. <path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8z"></path>
  1753. </svg>
  1754. <span class="color-fg-default text-bold mr-1">Python</span>
  1755. <span>94.7%</span>
  1756. </a>
  1757. </li>
  1758. <li class="d-inline">
  1759. <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/henices/Tcp-DNS-proxy/search?l=shell" data-ga-click="Repository, language stats search click, location:repo overview">
  1760. <svg style="color:#89e051;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2">
  1761. <path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8z"></path>
  1762. </svg>
  1763. <span class="color-fg-default text-bold mr-1">Shell</span>
  1764. <span>5.0%</span>
  1765. </a>
  1766. </li>
  1767. <li class="d-inline">
  1768. <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/henices/Tcp-DNS-proxy/search?l=batchfile" data-ga-click="Repository, language stats search click, location:repo overview">
  1769. <svg style="color:#C1F12E;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2">
  1770. <path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8z"></path>
  1771. </svg>
  1772. <span class="color-fg-default text-bold mr-1">Batchfile</span>
  1773. <span>0.3%</span>
  1774. </a>
  1775. </li>
  1776. </ul>
  1777. </div>
  1778. </div>
  1779. </div>
  1780. </div>
  1781. </div></div>
  1782. </div>
  1783. </div>
  1784. </turbo-frame>
  1785. </main>
  1786. </div>
  1787. </div>
  1788. <footer class="footer width-full container-xl p-responsive">
  1789. <h2 class='sr-only'>Footer</h2>
  1790. <div class="position-relative d-flex flex-items-center pb-2 f6 color-fg-muted border-top color-border-muted flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap mt-6 pt-6">
  1791. <div class="list-style-none d-flex flex-wrap col-0 col-lg-2 flex-justify-start flex-lg-justify-between mb-2 mb-lg-0">
  1792. <div class="mt-2 mt-lg-0 d-flex flex-items-center">
  1793. <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com">
  1794. <svg aria-hidden="true" height="24" viewBox="0 0 16 16" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github">
  1795. <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
  1796. </svg>
  1797. </a> <span>
  1798. &copy; 2023 GitHub, Inc.
  1799. </span>
  1800. </div>
  1801. </div>
  1802. <nav aria-label='footer' class="col-12 col-lg-8">
  1803. <h3 class='sr-only' id='sr-footer-heading'>Footer navigation</h3>
  1804. <ul class="list-style-none d-flex flex-wrap col-12 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0" aria-labelledby='sr-footer-heading'>
  1805. <li class="mr-3 mr-lg-0"><a href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}">Terms</a></li>
  1806. <li class="mr-3 mr-lg-0"><a href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}">Privacy</a></li>
  1807. <li class="mr-3 mr-lg-0"><a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security">Security</a></li>
  1808. <li class="mr-3 mr-lg-0"><a href="https://www.githubstatus.com/" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}">Status</a></li>
  1809. <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to help, text:Docs" href="https://docs.github.com">Docs</a></li>
  1810. <li class="mr-3 mr-lg-0"><a href="https://support.github.com?tags=dotcom-footer" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}">Contact GitHub</a></li>
  1811. <li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Pricing&quot;,&quot;label&quot;:&quot;text:Pricing&quot;}">Pricing</a></li>
  1812. <li class="mr-3 mr-lg-0"><a href="https://docs.github.com" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to api&quot;,&quot;label&quot;:&quot;text:api&quot;}">API</a></li>
  1813. <li class="mr-3 mr-lg-0"><a href="https://services.github.com" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to training&quot;,&quot;label&quot;:&quot;text:training&quot;}">Training</a></li>
  1814. <li class="mr-3 mr-lg-0"><a href="https://github.blog" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to blog&quot;,&quot;label&quot;:&quot;text:blog&quot;}">Blog</a></li>
  1815. <li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
  1816. </ul>
  1817. </nav>
  1818. </div>
  1819. <div class="d-flex flex-justify-center pb-6">
  1820. <span class="f6 color-fg-muted"></span>
  1821. </div>
  1822. </footer>
  1823. <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
  1824. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
  1825. <path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
  1826. </svg>
  1827. <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
  1828. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
  1829. <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  1830. </svg>
  1831. </button>
  1832. You can’t perform that action at this time.
  1833. </div>
  1834. <div class="js-stale-session-flash flash flash-warn flash-banner" hidden
  1835. >
  1836. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
  1837. <path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
  1838. </svg>
  1839. <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
  1840. <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
  1841. </div>
  1842. <template id="site-details-dialog">
  1843. <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
  1844. <summary role="button" aria-label="Close dialog"></summary>
  1845. <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
  1846. <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
  1847. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
  1848. <path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
  1849. </svg>
  1850. </button>
  1851. <div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
  1852. </details-dialog>
  1853. </details>
  1854. </template>
  1855. <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
  1856. <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
  1857. </div>
  1858. </div>
  1859. <template id="snippet-clipboard-copy-button">
  1860. <div class="zeroclipboard-container position-absolute right-0 top-0">
  1861. <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0 tooltipped-no-delay" data-copy-feedback="Copied!" data-tooltip-direction="w">
  1862. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2">
  1863. <path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path>
  1864. </svg>
  1865. <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2">
  1866. <path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
  1867. </svg>
  1868. </clipboard-copy>
  1869. </div>
  1870. </template>
  1871. </div>
  1872. <div id="js-global-screen-reader-notice" class="sr-only" aria-live="polite" ></div>
  1873. </body>
  1874. </html>