Run tor service with basic configuration

It's not ready to forward any requests.
This commit is contained in:
Ivan R. 2024-10-14 23:15:34 +05:00
parent 4f7ed75840
commit 671c296a5d
No known key found for this signature in database
GPG key ID: 56C7BAAE859B302C
9 changed files with 401 additions and 111 deletions

View file

@ -0,0 +1,9 @@
FROM alpine:3.20.3
RUN apk update && apk add tor
RUN apk add lyrebird --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing
USER tor
ENTRYPOINT ["tor"]
CMD ["-f", "/etc/tor/torrc"]

View file

@ -0,0 +1 @@
mcomfyzeyibt2unmkttoxa2li2dzpsljcp3sasrioqsks4ayrl5kk2ad.onion

Binary file not shown.

View file

@ -0,0 +1,10 @@
$ANSIBLE_VAULT;1.1;AES256
61396332323030333966396133656338343630386661646431393233313061633436656138356264
3666343065366430303331333733383535646133373964370a353666666535386261346632313838
39393637333937383934393131636432653730373639653737623066633737323665326530366334
3235663166373338320a616365626364306333396263396462633334663037626538646333643439
38383632373537626537646134663532323633616638636166393335303130666565636234373266
65343932316465306139336365373539356161616166323930383466353430366465376336393535
61363863386436393530373434656435626430366263346262386439336263323765313333396137
32326334383364653838326436386561623264626335643434626663663236633730306437373766
65613939666433383732363634656437346432323339396161386630313562336332

48
roles/tor/tasks/main.yml Normal file
View file

@ -0,0 +1,48 @@
---
- name: Create tor directories
become: true
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: "1700"
owner: 100
loop:
- /etc/tor
- /var/lib/tor
- /var/lib/tor/mastodon
- name: Copy tor config
become: true
ansible.builtin.template:
src: torrc.j2
dest: /etc/tor/torrc
owner: 100
mode: "0600"
register: torrc
- name: Copy tor files
become: true
ansible.builtin.copy:
src: "{{ item }}"
dest: /var/lib/tor/{{ item }}
owner: 100
mode: "0600"
loop:
- mastodon/hostname
- mastodon/hs_ed25519_public_key
- mastodon/hs_ed25519_secret_key
register: tor_files
- name: Create tor network
become: true
community.docker.docker_network:
name: tor
- name: Run tor container
become: true
community.docker.docker_container:
name: tor
image: git.comfycamp.space/lumin/homelab-tor:v0.0.2
networks:
- name: tor
volumes:
- /etc/tor:/etc/tor:ro
- /var/lib/tor:/var/lib/tor
restart_policy: unless-stopped
recreate: "{{ torrc.changed or tor_files.changed }}"

View file

@ -0,0 +1,192 @@
## Configuration file for a typical Tor user
##
## Lines that begin with "## " try to explain what's going on. Lines
## that begin with just "#" are disabled commands: you can enable them
## by removing the "#" symbol.
##
## See 'man tor', or https://www.torproject.org/docs/tor-manual.html,
## for more options you can use in this file.
##
## Tor will look for this file in various places based on your platform:
## https://www.torproject.org/docs/faq#torrc
## Tor opens a socks proxy on port 9050 by default -- even if you don't
## configure one below. Set "SocksPort 0" if you plan to run Tor only
## as a relay, and not make any local application connections yourself.
#SocksPort 9050 # Default: Bind to localhost:9050 for local connections.
SocksPort 0.0.0.0:9100 # Bind to this address:port too.
## Entry policies to allow/deny SOCKS requests based on IP address.
## First entry that matches wins. If no SocksPolicy is set, we accept
## all (and only) requests that reach a SocksPort. Untrusted users who
## can access your SocksPort may be able to learn about the connections
## you make.
#SocksPolicy accept 192.168.0.0/16
#SocksPolicy reject *
## Logs go to stdout at level "notice" unless redirected by something
## else, like one of the below lines. You can have as many Log lines as
## you want.
##
## We advise using "notice" in most cases, since anything more verbose
## may provide sensitive information to an attacker who obtains the logs.
##
## Send all messages of level 'notice' or higher to /var/log/tor/notices.log
#Log notice file /var/log/tor/notices.log
## Send every possible message to /var/log/tor/debug.log
#Log debug file /var/log/tor/debug.log
## Use the system log instead of Tor's logfiles
#Log notice syslog
## To send all messages to stderr:
Log notice stderr
## Uncomment this to start the process in the background... or use
## --runasdaemon 1 on the command line. This is ignored on Windows;
## see the FAQ entry if you want Tor to run as an NT service.
#RunAsDaemon 1
## The directory for keeping all the keys/etc. By default, we store
## things in $HOME/.tor on Unix, and in Application Data\tor on Windows.
DataDirectory /var/lib/tor
## The port on which Tor will listen for local connections from Tor
## controller applications, as documented in control-spec.txt.
#ControlPort 9051
## If you enable the controlport, be sure to enable one of these
## authentication methods, to prevent attackers from accessing it.
#HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C
#CookieAuthentication 1
############### This section is just for location-hidden services ###
## Once you have configured a hidden service, you can look at the
## contents of the file ".../hidden_service/hostname" for the address
## to tell people.
##
## HiddenServicePort x y:z says to redirect requests on port x to the
## address y:z.
HiddenServiceDir /var/lib/tor/mastodon/
HiddenServicePort 80 127.0.0.1:80
################ This section is just for relays #####################
#
## See https://www.torproject.org/docs/tor-doc-relay for details.
## Required: what port to advertise for incoming Tor connections.
#ORPort 9001
## If you want to listen on a port other than the one advertised in
## ORPort (e.g. to advertise 443 but bind to 9090), you can do it as
## follows. You'll need to do ipchains or other port forwarding
## yourself to make this work.
#ORPort 443 NoListen
#ORPort 127.0.0.1:9090 NoAdvertise
## The IP address or full DNS name for incoming connections to your
## relay. Leave commented out and Tor will guess.
#Address noname.example.com
## If you have multiple network interfaces, you can specify one for
## outgoing traffic to use.
# OutboundBindAddress 10.0.0.5
## A handle for your relay, so people don't have to refer to it by key.
#Nickname ididnteditheconfig
## Define these to limit how much relayed traffic you will allow. Your
## own traffic is still unthrottled. Note that RelayBandwidthRate must
## be at least 20 KB.
## Note that units for these config options are bytes per second, not bits
## per second, and that prefixes are binary prefixes, i.e. 2^10, 2^20, etc.
#RelayBandwidthRate 100 KB # Throttle traffic to 100KB/s (800Kbps)
#RelayBandwidthBurst 200 KB # But allow bursts up to 200KB/s (1600Kbps)
## Use these to restrict the maximum traffic per day, week, or month.
## Note that this threshold applies separately to sent and received bytes,
## not to their sum: setting "4 GB" may allow up to 8 GB total before
## hibernating.
##
## Set a maximum of 4 gigabytes each way per period.
#AccountingMax 4 GB
## Each period starts daily at midnight (AccountingMax is per day)
#AccountingStart day 00:00
## Each period starts on the 3rd of the month at 15:00 (AccountingMax
## is per month)
#AccountingStart month 3 15:00
## Administrative contact information for this relay or bridge. This line
## can be used to contact you if your relay or bridge is misconfigured or
## something else goes wrong. Note that we archive and publish all
## descriptors containing these lines and that Google indexes them, so
## spammers might also collect them. You may want to obscure the fact that
## it's an email address and/or generate a new address for this purpose.
#ContactInfo Random Person <nobody AT example dot com>
## You might also include your PGP or GPG fingerprint if you have one:
#ContactInfo 0xFFFFFFFF Random Person <nobody AT example dot com>
## Uncomment this to mirror directory information for others. Please do
## if you have enough bandwidth.
#DirPort 9030 # what port to advertise for directory connections
## If you want to listen on a port other than the one advertised in
## DirPort (e.g. to advertise 80 but bind to 9091), you can do it as
## follows. below too. You'll need to do ipchains or other port
## forwarding yourself to make this work.
#DirPort 80 NoListen
#DirPort 127.0.0.1:9091 NoAdvertise
## Uncomment to return an arbitrary blob of html on your DirPort. Now you
## can explain what Tor is if anybody wonders why your IP address is
## contacting them. See contrib/tor-exit-notice.html in Tor's source
## distribution for a sample.
#DirPortFrontPage /etc/tor/tor-exit-notice.html
## Uncomment this if you run more than one Tor relay, and add the identity
## key fingerprint of each Tor relay you control, even if they're on
## different networks. You declare it here so Tor clients can avoid
## using more than one of your relays in a single circuit. See
## https://www.torproject.org/docs/faq#MultipleRelays
## However, you should never include a bridge's fingerprint here, as it would
## break its concealability and potentionally reveal its IP/TCP address.
#MyFamily $keyid,$keyid,...
## A comma-separated list of exit policies. They're considered first
## to last, and the first match wins. If you want to _replace_
## the default exit policy, end this with either a reject *:* or an
## accept *:*. Otherwise, you're _augmenting_ (prepending to) the
## default exit policy. Leave commented to just use the default, which is
## described in the man page or at
## https://www.torproject.org/documentation.html
##
## Look at https://www.torproject.org/faq-abuse.html#TypicalAbuses
## for issues you might encounter if you use the default exit policy.
##
## If certain IPs and ports are blocked externally, e.g. by your firewall,
## you should update your exit policy to reflect this -- otherwise Tor
## users will be told that those destinations are down.
##
## For security, by default Tor rejects connections to private (local)
## networks, including to your public IP address. See the man page entry
## for ExitPolicyRejectPrivate if you want to allow "exit enclaving".
##
#ExitPolicy accept *:6660-6667,reject *:* # allow irc ports but no more
#ExitPolicy accept *:119 # accept nntp as well as default exit policy
#ExitPolicy reject *:* # no exits allowed
## Bridge relays (or "bridges") are Tor relays that aren't listed in the
## main directory. Since there is no complete public list of them, even an
## ISP that filters connections to all the known Tor relays probably
## won't be able to block all the bridges. Also, websites won't treat you
## differently because they won't know you're running Tor. If you can
## be a real relay, please do; but if not, be a bridge!
#BridgeRelay 1
## By default, Tor will advertise your bridge to users through various
## mechanisms like https://bridges.torproject.org/. If you want to run
## a private bridge, for example because you'll give out your bridge
## address manually to your friends, uncomment this line:
#PublishServerDescriptor 0
UseBridges 1
ClientTransportPlugin obfs4 exec /usr/bin/lyrebird managed
{% for bridge in bridges %}
Bridge {{ bridge }}
{% endfor %}

1
roles/tor/vars/main.yml Normal file
View file

@ -0,0 +1 @@
bridges: []

5
tor.yml Normal file
View file

@ -0,0 +1,5 @@
---
- hosts: webservers
roles:
- role: tor
bridges: "{{ tor.bridges }}"

View file

@ -1,112 +1,136 @@
$ANSIBLE_VAULT;1.1;AES256 $ANSIBLE_VAULT;1.1;AES256
34646465666661333035663364656438653739616533343964616336343363663164363038613634 30373832336334383031646564333333653031653261353835306230386636653566316661303737
3732386633376134333131646365656339343838366666390a663934333132353261643439366537 6364386435343864386361393466663839663563363430370a303030613533363830626134363862
37363930623832623034353661336133643837393630613965363434663865303839333337643531 37376436353530383662643338373936313566313165376134656532356139666136313635383635
3961373238383532620a636539306634356437303062303961346538623463396634363335323163 3961666334376565640a646130383664323466616566316539636663643338306162353162393065
36633134613734393335386237626632323437653731326435373837643066623163653162396161 33663031643362323434623836336664643762303139303031613065346661323262383938623764
32343437333035633138353461666139646134633864626438613266386130343263323662303430 35323862623835623037343537313533333362306666396237333839313835303665306130623933
35336330326331376238366230363036376461343137306333376138396562366235643033613235 63333038666232643936353062353562316263306338623161636463376132343665393139333434
66313066393934363835363938663262613539353830633666386165333032316634333330623334 38373165343465343131616130613739633437636361663563373730643631663534383735663266
37336664613031363337623934306661653938306231373163353534343133366331306230653964 35383535383732636236383831626130633333633535386430356666393533386562636633333365
61316133346365373063663539363335363263303432373066303833626338626337376131303266 61666136353163396462346535326631626238356430636465636464373634313765653735666436
66336135333839643733383961666433616334313335373035363032343935386164333631313231 38313435326330346131376332663161323061323633636363336662333135623265366139653831
62393263643537663138323266316231636630373064613432356331373531303431323563383462 64616333303464373331323562613433343935343731393531333063346130653462616535396562
34663438333433333762323562623465313632613638356466656634393130366531633638643864 66653935313339373339626139376139623335353761656638653666333632383037366665623739
62666564343235323938653663633265653334306531656533383365393339313235613932333066 37666539346165616165653633643661356638326333396364626465373662343134386336373637
62363963616466346539666562366330303064656562383735363862633138363466336237663262 31356531363062346533323835343666623062373239313435363863373133366131326430363963
64353264373066303962326364343239643164393939333566613935356632613731333366613963 61343438366532346631313532643363343932636566336338383138623138363761663533306463
39653831373934306237393565343161383232623062633035306163336235616530346162393961 33386333663261633464333264616161366164376262646265366431346330363834626138656662
33336435353062313633623635303931383230323265313835613631303930623265383436396361 35613063303735653039303664343065386663616335343433386264346635343639636432653633
32363032616461366339643630306263643062623564336666623561373235653266373466306436 30393137663230323764376434383966363335663831633634613564626366646563343937386435
33346231376461363130303231326139383131316236303539363035356533333163353165366637 31303237356332313432306163356531656364323032636338636264356636393137383066353961
61306236373936646466333339653964333663376666383862303664626163353736663633613161 36363266393166306439663764326339373037303063653036383733656237653930376262623963
30636135343462343436336566633637663062653566323430616433333933373463393564653234 64663462306161366530343232336436353237303565323939353534653863653736373033633132
35313634646638623766666534653937643661353933616264393732373961333831326264633531 38323736663961373938363862663262623030643532623761303036616438373665646263613730
30373762663364326363653437393532323831366564643131383234333565646437366365666534 66393436623339333035393237343734636561656363643938373539316435313337363531333335
62346536396463313561616265373064326433316137643336616434643239343364633133336235 61656139643035366361316630623630646664323438346466353234396233376634376230313638
61616461306465376638373332353730313264356432383439373632643937643062363731393634 30646630623362333334656533326164343831646463623965383461336336303362386134366463
37633539653534343335613236366564396461626236653239633632623735646533323238376463 37633030363636636161303735333734323939323534313131343837663634643830383836653864
38336538633239313138353630383832633730646662366632373962363365316566643231393838 63313834623439636439643734376134316334326337316337623437333566303537303030373662
63653962623662613265363466343138636333303034643562366136323234323439636532396638 63383630633564393164356534646562656139653063306438646164383437356635616337333234
34656236653064653364643337303832303437363661636333356332613163636330346138663266 61633066323636666135303761373863373934623135323163356434323231363965346264373363
35383232303438336234363231626161323033663865316563326161666561663534353466313234 65356139396636326538326166636338353536623432626363643566333165376331666131393061
37383865313064336634623631323935613535373137323333353834363639333762326633343165 30666436306137643333616365333165346363633061363534313662306430613433623461393439
66376132633466623265366433316665303934323662626438366637376331386465346335303436 38353037303064306631303461386163316135663636613534313037666361363935613763373835
31666464623237366239353831343436636564636466343830626236623935333038633562353566 64666465383238366335383635363962313534313937326338663134316439346638393164363463
65626238363663326432646633636335383935623736373761363862316263383664656562653332 62393835383734316232623039656231303234613132373634363564346635663938613762623733
39623436656163353232666137633666336631393738303565396436653535396163336236653431 64353437623031643066643832313039623763663238393933326563646637623333356661313336
32363462666539373130656631366435306465386138616261643866353537306165613934343233 63616462333261316130666365336261343639353737346438666237653430326531323437626664
61303038343435303264663433353232643830373437373430326161613963353164393934326435 61623863613336333232666139343534636433653333336661626436343332373363306337666466
32646163343863373134316336363063313139643838613035303638363665313963346537643862 61353532613630626564666437363766343834646632333266396630393261343965336537333632
32653562383562333961333061616239303138306661656265326565653830396165663134363534 33653934646265663833366562343331363763653961326132353530636166363135336436303362
63353039626438666663326531376430613864623730353763643932646532656664393331346231 64373262666666633961393537623036363763323262303435333036633362623366383765333764
36313933356566633665666530323239656632303837343362653230303931616461373734343633 66656338636634636265343066386332643332653433623838386630373930363065386433316630
66663433376332373933623662376634306333616366333461366264626333313462363833353639 39653834326533306161616366333761626165653233646462336566633664663836376337663961
38396337333139666530316536333130396530616239376433356336336338666635613630613437 62366335626132323661356362643564633634366331303663336336643535383039663964393330
65613030336364353434306631366332353063383761626664633030313336653764366265356437 30353966373862643038626532313539373666646161373437656635633033666166323664316162
65666565643962306331333739653361373538653530336161303430643437663566613235346161 64363632366337356234376265333164393261656634313133343966643364666535383532663931
38646163643530666162366464383237666366666333393964353364663064316663313935663264 65643764393363383732313637333734323137383830643533383330373465363861653138356563
35326561643939636233366164663239396537333538623435393932313137633361333231333663 63356338653066623630333639336535613939313663663865616562653038356661356539373439
34373561383438653466636238326331626431633437363861663439386334313466303733663166 38656337613835613939623736623234356234623932643130613437643333356333306166623835
66313830326533656564396562313834393933313962386166383963623162306238336161636537 35643133383466313861373236333435326633326232366233656538663261396663326563386437
63363361373839336435316238643333643866396137366466633239383031326161663561363539 39663633653230343063663663373430333933353931313638346239626538386361343866353933
38613031326434653763303438306335663665303662376432323066663435393162326135396332 32366439633137626239373938646264663537373135373031653062663465376332646561383431
32646533326162653935393563323539623361633066306130376662313233303162303930666433 35386532303134323463633761323165333831626566393966376561303261373832313336623439
37346436393438323134373364616561343636383861653063353362303934353239633061396536 39653631383638393364333061663839323632343638326330323064303036386162666334633066
34653637633166393864626363303530323234643163303835363561653636666438656363363433 65356636366664373165383163316465383566646530633561376266356636306263653039613361
66353834306461313463356166663765323130336264303331396235313637646538656137363736 36326165336135636438666132386366356230326435393234333862663432633364333430316266
32633665326131363337373930326462623065623132613335656136373031323930623862626562 32373230323735623162353938373466623337303765366665316530323731316233643266633930
37643166663731316162346166386235656537653331643431623133663761366435356635363134 62643737326661613961313430333763663035646262626264323639383635343264326535363263
66343665363136366536346135306237666366613664633031303639363933373635396161306430 62393235326631343035346530613631316638643661653164356134663163383235613330353030
63383734646363396662633531616266303036663636626136346163636431356432343664643139 63616532346363376361643334666233656664303837333237326366623136313937633961613434
61333864646436373162333863646662643163666338663731346465373762626563353263303137 35393834313538353936383638303466316234366665353832386430616131326365613635303338
38323961306130356132313263616134353536626534626165353162666262373538623133343930 65343130373032323538333364313633353966343561373366613831396463363961326561313366
30643231303135383964373038666434363239393736656561636335636465333333353732656139 34323833363761386433633961636266326632356331613563306230663739613134623532626532
61343664376333653063663266656438343930393230383238303734663439643636303863303336 38316531346636323361613331646332373661613665626338646161393332656434663139396164
64323335663565666331386362343236326233333739343837636664613931633332393033373730 64613962363635396538343365616665626439623466316334356638653733303338363264633361
61373534366635343066656635613532623331353631656236356331663634316266643866316338 31393237393964613062356566303361623933346537383032303530623232666166643436313164
32646539373931653262643031626361646566346332373238336233313238383634316434653739 36373435656234313639303463663861653661323737343232386230303131613962353132633261
66383164313764383339356564656238626339346637356538303937323431386630656166313530 61333739393831313630663864626535623832326535653437383932356163656533313231306566
63346533383163613730333731643733623836343038306566353837623034303938366564313737 33663231336461323464316138366232346432333937613335623966353235646235346231636436
66326163373739373764336536356232383634623035633733616237343664323530303161373964 30616533343330373263666136373234303061383632396530303734633361613133613735356162
36653732326632393731383262663434643136346464653931653865336337316533356139326435 31643835313463623034393530373933386630393064306465336234373763646437376263306365
65636536386563313366353863323231366161643636373836303330653135343065303830356431 39663436623430316362356261383064656530393330313662373731316135633937313432646630
32373364393334393236363635353139363139656366633532633436623964303366636464373135 39646431653663386432323961663530643436663436313461663264656134353231386365323931
38323731323664626536346639666237386332626664383433313834366135356536363239323631 34323438306363306537363137393830666463313462336631636438323365626334643162333466
31346532323737393330646364393764643338353061373833363666656632666464646462323931 63626334623433666431316339383830336438666139383437383132613831343237376134346563
30633263616464386237316435393031306436393733346163306166313934653633363566616162 63633337633262303561353862313137383563343336636366626238396636313765623334376432
32323033656632393931666531363536386135353239613165656335616565336331303839663130 31336436383532646532663636333461343635363933313533613539626664393061646237376431
37643465313466386466323836643737313633653537353235356335333461303235383031396236 39613337333730373263353836353731356264653131356535323532623862323262353862386535
61353837666339386334656131336332613435303635626566633630333537336330356537366337 34323764646137353063303237396464303666643132313861633534616637323363663238653362
35343565616363626632383237316233393239613965376630356437643937383734623137633766 62303336356237376534333534656262383433306266333663343535376664383034356662613663
61303263356339383266636537636339653533366432373464393761636666393463356334383963 37343365363436346538646334363833323731636533316664316632366162346535633463306439
38363434393938396636613963633161343861333637323231633231363134303138613864353038 36633336623632383736363761396331303239376535316230323339616163363230663030393761
35313939386333333665616164666334373962393937323166656533343765663332656561353838 30623461646130326338613262373135656264393963326364373065663030366566383036396464
65333762663962666362623731363039353137643133356532323931313966323039623631393736 66613130373435383236383430353262356537323038663665633631343838383433613062316432
64613639303762363561633433363737343637336566663937323737326133313334393139633431 66616233343938326236323364623965643364356565316666663338306133643738393638393532
33373837333434323430353134613064313063353737306239396231356465656265396239376565 32636662663066353132363065353939613161383765663538333233316165613537646162383136
62623535643832383961653436383362646439336263633430346365623039656663393735303836 32313434663834396165336236333763646435643163393938346234646563386639386234303163
32616536666539376562383730643636653762363336666331343938343161653630643939636635 35313537636564323366376337643465373162306138613561326462633035343638326533386330
32303935323732623930336330303133383830666633366239343733646338343939663635343331 31646436356264393832313265663238363765313639336431346166356261356430366162396531
33333565653431346130646533386435393964316231616661333735623761656332323264366164 61376234616631393435613837663036613663373334393066366366353966626266303562666134
61653133636437663139366634363264656130643530326133393366313665343730373230666432 32333763373936376663343233663165313332336263656234346234356465653462316531313737
64656231633038663136666635653136633062623132333338636438346533353731333265333765 34386566346132313639613465336634613737616331306164313866316530623832616565353936
38393266643737356162346466323866646237396435396536373736623838333836656562656531 36383930306563336634383234356536633638303833636535386535343937383865386232626238
32383935613664666266313436356437313833303633363835666161336666356639643436616366 31653235303336656466636363323333656333343037633935613964306664393931623938396537
30316534383733313737646364323639653833643535316334386363643161363564393834396132 65346136626665653933346639613261313666633736323735633265633762356462353739363636
36636236396331356664626265396331303361623233336435383032653731653337333238613034 31616333653831343631333736376433326135313963643363663766323065366538393437366631
33373832373363623531303764366462393738653338653533656533303232323763313238626131 65363332643066666663316134613430613239383666313135663839643236346537303238316533
30646662373261316537383061613539363135653431346637313861646333343933646333366366 34323432653863323966366461653361356232356466316162653739346563643138643965313363
36393463346536303866643738383538646334343634653431666130373663666232396230623631 64663266376461383066613538613134333638316333646363333537646132643836363136303336
64613838656364353835313265656366363462666466363833313531306366363261306265613739 64353431393133353666333865376139316664306434356464623563643733353763633738336261
31393666663037643566373131323935656135616339353630613339353065343261366330393762 36626130366362393061626434333365373164373037303439316263316530323333663261346232
62323636653931656161363262626166376665303632326265613130663633616161663834343066 39303463646364633562656565646235616637363464636631333138363663306531313464643535
36303036383139313431653134666163353230323536633762643631383238613732346439346665 30353738636162373866356438356237343837623136366365613739383234633335306431646139
37623433633737383562336238373461623262653261346136393233613230373831313137383133 65353565316530313461333863353161383464323439643132653136613962613133303731346162
62346165656136393032383764323533626430383936366338336130623633373965313961666538 66653237323738333537356464323362383062326531613039386235633063336666316631326366
38333936653763656632303761303937353739313531643931653565313535366264666538343737 32316233373237333163373532336633326565396237363432323236393231396435323365653139
39396337623136376161633463313431343434316431366531373130666131643266643237393762 36313732353437656231373334613732613063306634666235643330386463653338306162663965
37333935373831646566323066623833663831663565643530366636623839326330346564643730 34623933356231643861353733613933326332326539303036366431383937383132616138663965
34326663303931343336643061633564373536653066323562363234386239326364656431316366 39393631313635653035636339663034373862376534663365333863393531346236373038653031
38616265333632626232336634643538623761386136646235383536643564393430656264393035 35343065316533653639356366306230656362646239373138386439613161366162633361356563
383639323339333239383266623566633466 61356461356362613063346530356634333839376637383762353437666430653439613831303032
31653564633362623232616330623134306638306262613135663861396338643363663266313732
62373732323134303335383165323164393737376338636134313265383963343936303863336431
38356337383537393630323939653063396366653735643437343261336362313765383833313337
65306435326531306630623236643438356337636364636437396533663361336338316133306237
34666561393730346132366339333361623631316636323263666462353533336161663731613434
30643338653264643636373735353130396436613231303535323965656439393932366262313837
33386333653534613763663133396430633938653737646132303566643863316666636238613864
38646137346163643933363736626662343863636533323563343438646539376535626464393863
63346435643138326134316638346139643635373064316631643265313437343466383536396265
36643236323933626663366663396636343835623861653361653239643138366138373338353939
65383836353334386432393132376433323831393461303133313631333634353938316166336539
64626633386262346136386336313432636365333861643463613264393264643331336361626361
37373333323935323663663561333630333565633665653836356632373337356165623166656538
62336437356431393136303037633662663762306436373538323135316130356165616366366336
34363235623133363961363462383934373830396133356232303938656131386632666133633062
64323330633731616264393263326137353434373538623537646431646133646234353034326462
64306139353834616639613638326238386632363232356338306337623136326563653334666564
64353765343630306535653430376431343132396232303466393964383333613666626561333766
34646430616231633061366332323337336462363437626166363561363232353563633563323332
33616534643335343832393164646434636430363366333037666539626132376161303731386561
36663830303433343932366661343536623865303438366132313832386637643063663439353038
65643335353163316533306633363037616232383530393839616334663336306237303531613832
65636663336239376235643036623032646331663962633430633161306539646464656131623163
346539663562636361616135326237383664