1
0
mirror of git://f0xx.org/android_cast synced 2026-07-29 02:18:40 +03:00

docs update, be sync

This commit is contained in:
Anton Afanasyeu
2026-06-17 14:34:49 +02:00
parent 1ff1753021
commit 5e7ef17c1f
72 changed files with 6460 additions and 3888 deletions

View File

@@ -1,5 +1,24 @@
# Android Cast — On-Demand Remote Access (Reverse Tunnel) Proposals
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-03 |
| Last modification date | 2026-06-03 |
| Co-authored | |
| Severity | medium |
| State | pending review |
| Document type | DR |
<!-- doc-meta:end -->
\newpage
\newpage
---
_Date: 2026-06-02 — **merged document**: initial proposal (rev. 1) + infra review addendum (rev. 2)_
---
@@ -10,6 +29,17 @@ _Date: 2026-06-02 — **merged document**: initial proposal (rev. 1) + infra rev
---
---
---
---
---
---
## Table of contents

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,24 @@
# Android Cast — Email agent config & 2FA / mobile auth flow
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-08 |
| Last modification date | 2026-06-08 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
_Date: 2026-06-07 — FR §9 (email) + FR §10 (registration, 2FA, mobile) — **alpha must-have**_
---
@@ -10,6 +29,17 @@ _Date: 2026-06-07 — FR §9 (email) + FR §10 (registration, 2FA, mobile) — *
---
---
---
---
---
---
## Table of contents

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,24 @@
# Android Cast — alpha priorities (2026-06-08 renumber)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-08 |
| Last modification date | 2026-06-08 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | pre-requisite to |
<!-- doc-meta:end -->
\newpage
\newpage
---
_Owner-agreed task order, dependencies, and implementation prep. Supersedes informal numbering in older roadmap tickets._
---
@@ -10,6 +29,17 @@ _Owner-agreed task order, dependencies, and implementation prep. Supersedes info
---
---
---
---
---
---
## Table of contents

File diff suppressed because one or more lines are too long

View File

@@ -1,8 +1,26 @@
# BE services & infrastructure — validation map
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-08 |
| Last modification date | 2026-06-08 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
_Last validated: 2026-06-08. Companion to [INFRA.md](INFRA.md), [REMOTE_ACCESS_IMPL.md](REMOTE_ACCESS_IMPL.md)._
**Documentation index:** [README.md](README.md)
---
@@ -10,6 +28,17 @@ _Last validated: 2026-06-08. Companion to [INFRA.md](INFRA.md), [REMOTE_ACCESS_I
---
---
---
---
---
---
## Table of contents

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,24 @@
# Stream dump — developer debug recording (FR 0.1)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-08 |
| Last modification date | 2026-06-08 |
| Co-authored | |
| Severity | medium |
| State | postponed |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
_Emergency debug — not an alpha release blocker. Enables 6.5 (audio lag) and 6.6 analysis._
**Parent:** [20260608_ALPHA_PRIORITIES.md](20260608_ALPHA_PRIORITIES.md) §0.1
@@ -10,6 +29,17 @@ _Emergency debug — not an alpha release blocker. Enables 6.5 (audio lag) and 6
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 14 0 R /F5 16 0 R
/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R /F5 14 0 R
>>
endobj
2 0 obj
@@ -17,42 +17,42 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 716.2874 66.58104 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 762.0394 66.58104 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 705.2874 119.949 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 751.0394 119.949 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 694.2874 97.25304 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 740.0394 97.25304 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 683.2874 110.597 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 729.0394 110.597 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 672.2874 146.581 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 718.0394 146.581 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 661.2874 147.061 672.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 707.0394 147.061 718.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 650.2874 115.053 661.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 696.0394 115.053 707.0394 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 639.2874 65.24504 650.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 685.0394 65.24504 696.0394 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
@@ -62,22 +62,17 @@ endobj
endobj
13 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
14 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
15 0 obj
<<
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -87,12 +82,17 @@ endobj
endobj
16 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
17 0 obj
<<
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -102,88 +102,139 @@ endobj
endobj
18 0 obj
<<
/Outlines 20 0 R /PageMode /UseNone /Pages 29 0 R /Type /Catalog
/Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
19 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190925+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190925+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Stream dump \204 developer debug recording \(FR 0.1\)) /Trapped /False
/Contents 37 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
20 0 obj
<<
/Count 8 /First 21 0 R /Last 28 0 R /Type /Outlines
/Contents 38 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
21 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 22 0 R /Parent 20 0 R /Title (Goals)
/Outlines 23 0 R /PageMode /UseNone /Pages 32 0 R /Type /Catalog
>>
endobj
22 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 23 0 R /Parent 20 0 R /Prev 21 0 R /Title (Modes 0.1.1 vs 0.1.2)
/Author (Android Cast project) /CreationDate (D:20260616121122+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121122+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Stream dump \204 developer debug recording \(FR 0.1\)) /Trapped /False
>>
endobj
23 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 24 0 R /Parent 20 0 R /Prev 22 0 R /Title (Archive format)
/Count 8 /First 24 0 R /Last 31 0 R /Type /Outlines
>>
endobj
24 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 25 0 R /Parent 20 0 R /Prev 23 0 R /Title (meta.json schema)
/Dest [ 15 0 R /Fit ] /Next 25 0 R /Parent 23 0 R /Title (Goals)
>>
endobj
25 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 26 0 R /Parent 20 0 R /Prev 24 0 R /Title (Wire frame format \(raw files\))
/Dest [ 15 0 R /Fit ] /Next 26 0 R /Parent 23 0 R /Prev 24 0 R /Title (Modes 0.1.1 vs 0.1.2)
>>
endobj
26 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 27 0 R /Parent 20 0 R /Prev 25 0 R /Title (Android implementation plan)
/Dest [ 15 0 R /Fit ] /Next 27 0 R /Parent 23 0 R /Prev 25 0 R /Title (Archive format)
>>
endobj
27 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 28 0 R /Parent 20 0 R /Prev 26 0 R /Title (Visualization / 0.1.3)
/Dest [ 15 0 R /Fit ] /Next 28 0 R /Parent 23 0 R /Prev 26 0 R /Title (meta.json schema)
>>
endobj
28 0 obj
<<
/Dest [ 17 0 R /Fit ] /Parent 20 0 R /Prev 27 0 R /Title (Tests)
/Dest [ 15 0 R /Fit ] /Next 29 0 R /Parent 23 0 R /Prev 27 0 R /Title (Wire frame format \(raw files\))
>>
endobj
29 0 obj
<<
/Count 3 /Kids [ 13 0 R 15 0 R 17 0 R ] /Type /Pages
/Dest [ 15 0 R /Fit ] /Next 30 0 R /Parent 23 0 R /Prev 28 0 R /Title (Android implementation plan)
>>
endobj
30 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 662
/Dest [ 15 0 R /Fit ] /Next 31 0 R /Parent 23 0 R /Prev 29 0 R /Title (Visualization / 0.1.3)
>>
stream
Gatn$>Aoub'Z],&.F)EaBs)<g^tr6@kt<7D%Gb>774pQV>JSH0M6p'n'6;j%Zt0uX";\`LJ*..@MM!e4ZiIU1i-N=lECf6-I,[M6&&Y4;X2joqrIB\PTK\$;8>m@%GRg&HNOTdL5eL4G0EMjk4SBZF71\it8!spO![Th1?n9(h<^6pQ::\15,_Q)l[Rq<sXbmI_S;33*[E;4?/C'hg$a;*<2UgahVZ"me:r9)2=-1'[nccc,HPs,=a)QrC0G9oN"3P)hi;A#Kmu_!j!Sa&p5,-dBpTWf\pD<^=WH/6BF>]d6ptc#Y6GfM%!P5q[A&f&G4jN9=jo"31INkBrcHIFhAZa,/[/e-upj[_\i30*L(MhOhN6L$);QhUiZ,r6bL'WF=hG*dc!$^Q2!Sl=LWRhL>`YPjt+WYtXg)$Rn<D2oB9F3=WW^=-*%r#,)5IEqTXXjsZA'nJjJN4L$44W^[/4&&o%*Hd4SUiDn>SWY!ZI\6).[O]S%R969j+he.RHr`lq<K@H]bU`WfG-]H>aplmfQ%+QfUG#qE%IsdL/2ngn#VFBbfZgJ)fTWO<7#;:8KNXGj4W@)r%K&uDkHGgOmRT):8NsEEa?C?fGOJm\qGjT#hE0rP]]eU1"k?^Wf4'"X]Dlp3QNs])XGJ4n^..8(2ocK~>endstream
endobj
31 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3186
/Dest [ 15 0 R /Fit ] /Parent 23 0 R /Prev 30 0 R /Title (Tests)
>>
stream
Gb"/)l]9f?&c_:6@_NO9#Br9_hi(DHkM/(@l9gguV*U4OL_[I`B_.K8F_A,Gs5$nm6rA?SBn68l@*@%PB6PCYo:)-o+QJ7<s10AhgEg+>,<urFY(:8L#0W'H[s[l'.oO[BFNLb/=Td-Y,[If8Hk1uY>pd!GT`*+oYE1*1QVf%LQ6@lTJsiecM]Y."`EgR[L.1MO4LWs\i(6d>LuJhV">iZX'K?I;9c:$af_s%("EtG`"Y9fZ8N^;*S`e$)d*:$TI)j-3%K**>54qk=2(Uu.nf,EfO8.sKa0[,&B'3jR9!RPoX4QeSYf,D[r51I4Z(RUUfsgc,6@Sb""XpZcaG+Lk2]ik)Dk+eaLVH!"=FRc,PX5lue4a!h;g,$2MQE4TB0?nB8Mt)-5JaR$<Ot(B_2q>n[K\(WP%>I49;nYXck7ED6@+Mea\FrWL%g!hK62\^Laf<//"j/=BSa#QoL)@d*gdmf%n\^E>.d,,$;l/7n([\+F,W9E6(2d__\Ba(pS1H#O`';G1N7&s6-@X*O!?KtPXQYRYkE@2]g7!f),B0&-Q.rn!0&dEr9<kgCQsg53%Hnu\ZRkrT;A(2"cp?fbK;W&?*1YugC*_Zg>Nhh)`J6?Re_2]i5O$N2'6O%ZP9])%Ks+6(MKV-3bd3#D1&ICDV=V]*!Q3ukQ]U[(M%B"`TqY>9lFDS,>4s_cVHdcL7,E2E$6+eha5OQLX;)/mN:8K9(ZF?8)EM;1TgQr/L^iH9*3GYJ!Ae1)8[3K157>=ersW;;0<U!eM^se!m/q,>K_G2KWjVeDUasdU)7i<<4"klItK#cVjsJqN@DBh@Z$D6e"HYF^4c)=?E38P+[[]l\T/<9<7$SQ.n8fX$'te]gjXsYH=]Ij%p16N1[':tmA6h]MM/_?SDAW17iD/a?IGic8t(^$ANo@Nd^C-amtr@:06U?d]@pc7GAakLbSqAt,jM0s4ZE=Zq(#__\2[`:jZ(KEU\-lZd*"lEbLKh,L7?rZj&MQ89=Is(GenfP><*A!+E8"!N(T_j3#YlTI"iH-XVjWC_A^,7L=9\&io*H1]'j!$YW>^"K)OSM^AE1\CQjRHBW^/f*OI^m\'SH>n08CiO8'QJ/qnfK6]@'m*L@'.i1GHrlV3$]?A>>%?,bfCL!AfR*Cb+)!?Irp(?6L4gVYoflhl9_5J<42`RJu4\ukFVmh#rF9BD;RKC?aV!$:_4\bWjboWrq4f9jr[#2OQ7!2$7lo[8^"Hn#=+,5U()"Msr.-E&>9ThR7H5LdTNVA57/_t?AWr*s)-eSRrW%(.0\lBWlejb,AHI=`?n`i,mX-3`(g[?3d*/<"Un/!*q&dE"3na?`(N[Su*E8p%p"#W2UUa=D!^\+Wt_+Xm!7Gg%P.$f05V>I"&[[&tqPKUM&`VIU?'9h>.Kd:"J5e4]a333)niN-Uf4d(Ua"=*RZe;_HjUQ(OOqji@/IkPr7K:8d.>_BcgtdiX2+MkW04?oj!`V</'h3:Xo]>Q&`:fJs+HM:7fo3R>F[]&r&dki?*7&Bsf[7/0h-jb2;f\_%&d4SuL&=k$YAJn&Z(_XNY)0nf`p7hW&gEJXDa)'O9kU"N2_?SUH(<5n&cB,W+JeV'@A<N?@&GKW<6MHa(\DlbgJ>DXhj!`t=g?#rJs/!75:au2840JY@Pf?hj:X"0re<Vm39,!(ZS=<3neMXh(Yk5puo_L_E5(>Y'_;mt#G]\Fn5$%se_'%,(!c6.MX;O@9+"?7?f'7!1kTJ`&fNh,dcG^?rAQcLL*E<LagTa[faf_hlG6[fd:.@Bs6&-WVer!@O&M>E>C0RctD@8IC(pV"U3p\19B]RM#Xkl?#59:eeGa2($L>Y/E<h6WnS;*H:.->ZjI@4UVRFVHBY,<S*uLrD&\MkpU;#,O,4r)qII-r60>_AB,F-94Le\i0FNi>N"!*1Al=M;>9iOBU2_R^C;$["<OcXOK.S_4WV2NB:T@(tVH9-7s6B6b7ZfOCHIG-jR6A9M?XX`'h97`8']4j*]&u9in;ZZMkb_pn$)ZLT2El>bU4h-Ubg#K[1=SI*r7nj=2/`b$\)C9.$ARiD_giP=@B#[rHn"5?Q3V17DT0EsZKL7VNM,lk0pPB=J4:qb%K;(q8fN:Tq`n/>H&U&W`-U0o(VAjd7A<OejmiaIuQX;N^+'HmmQR#1=@)VeQ4<N5bi]<<JUm1^<HK)UOQ15.XW&@+N[A^o+bAA/nU,N5LD#@kOepP-,QYPF%B2LP$.;fdKgl(Q#/IC:q#JUoHsW+/k0t$DuXj4m]*DqI'cOYDV$6'UJX`BEkLKX0LM`#5eE_o7*'=:;YjDd`f:U4eM64OUTNjqk5,*"5935;,D_i7EN0=Xb'OoVQT0igHqU#-^?7qNN^5fUK7K@_VZ*LMsB:]_t+K<MIJCX2.AdBOj@XgiHKk(,IQ0MkB^d'E@=0[=L?2Y:;Y]<s&+%+RONiu3g2<'.i-&V"$FiKen^9IF52"!:b=Z6;J2ci_'2:,6>%R41e[u5E14&?OKR=blu#6&ESr1dU"M:F%1e'@"8n_8fo,<a^!.^l[`mWF-YR6YPTA%@C@"!P+ZK()B?S#JlRDKt4n8HIA/A0)bXAZQXaP3Z-0Og_p".%*IbZjj46q_dYk*n_+M4,%'g')/;'C[if]8hnd$UIuRVqcTOs:aA-d:q,r9OfU_Xie1maTWD3.370f:<,o?J@.Z]6ir8DUKPJ\)ln(e34=aZg5t5l3FeRrTI:qT;h3BdaS0l7>',S@k#((K-E#JqFa0L5tnt$i7G5GSB+&,bO3uPL1u<PT@\rNGOfCfgVLj(C"a?_GF1BD0]@uHpnTuQ@%5phP\O=>hHnts?"]*4\`qRY#o:_)6ZX)%-+[\2OG-?<B^r3Kibf2f/$NU7S('2?ROY;Jeo157OF"e!Q>u!Uf_</t+Yk]/MQK5Yd/F5:Po]+8^8a6]?J6J[fpIG#>'HoI5DktdN*;Rl_Bb.:YF/,22!1R!.CZ]s(GfumUpq8\,+#.S?gn!Qgtr"cH!EPgh:t*$5M\!,[S1qa_h>Wpo>0$g?;%faKuqZrcT4*)!e=ofSE*tPFNo=_$&cGh5S&KD'LX1Z][;BsIq8fQLg>-Y.[lqG^5q=#?2jC,pV&m1[(/\.='V7bhaiB-7GZ9=]PL^Rl[WlGZ[Y!q:/rB&.5+IGK<V=4^B8r`Q[qoBJHG#MX8`0UW&,b~>endstream
endobj
32 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1090
/Count 6 /Kids [ 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R ] /Type /Pages
>>
endobj
33 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 856
>>
stream
Gau0B>Ar4L'Ro4HS4C.#j%F:^@FDTee#H]\P&;pD<>6FA.QCRIkdk-9'*gipTnQbd6"6IErLJ?!Eu7`dR/N*/!,k1@?8,b,_??5n*!edG]<M%)a&\d<5cA'CpqFP!Ob7)n>$^6kVpL9Ii4(#K)*SIrJ5S`)U.7Zoo`GH1pJhe$m0KG0<HMA\bd[K/O*2fL[q'^2NaN;WN0nMrN2lZeErt;@KJ0?!?h)i\j+7r*HCL^kF4h7%_Y'YMs.[<+*F:_5WBZD9.Fm0DS$=N2Be3?Z<G3J]abt;'gYUkA]ABu;4V(,aU+H6hiE'3uBm7D(1_I:I\_;s;+GM,!jZ[%QUN<$M-"q!dWb*0P5Fd;HB<t8UU'^#B9-G$D(\9s\P%R]rioI7DG)<uG*XT@F\.#tCX7nd:_S)c_KmCqg%)t9Sd&iaT#*#$gcdQJE#J9qs[4MK@C'3Xo\j090B!@0ig8Ut0&he2Q^.Y(2he.C<eD1TU-%+h$ALKmbE\gnT/"1Ja[V>Ru#:8h)74);4R*%`S6jma1V?pKsb@m!<m(r7/ddQ\l%aANmdYsj0'0\E"HO7#Ei;1A(:E\`dg>2kO=G;h-27dPXLA*:MMlK,U?ERZAPV=<TDJ1V9?GJMc&K5WI$6[4N'G00`,H&pK1"mpTs%<Qc]N,74'/IX]"1jT'].hJ#m""4^3q%2GNK!475$lS09!?^/hQbQK?h`2@7UO7s02XO:>!%C?)&9V!:iiEjs5O6,*QPH>:Q'7/8#MH5d9K#.09jla;R.qkAqBTrP9`e$e`:_1'`f>ABlO,nIVeuK`-PN=FJDPZU\RW\i1tV]_OgD;2s6Bg^X@2i_3Ws;kS`?^otU%OXoGL[s$l3R$24e?(SEg7,I(;S4l7VR38T)hHs/TO.?ku6_1'gL<Y1Ju]2l_uI<=,GmU7n[^AmDtaKjhGamm&<N@_ti2n"_h4Rdd?Umd_+5uGcMr<Xcna`LpPBJ8bH'^*V,WR;o=(,@dgMFZB**eK3sh).86dAKOo+`diBIbK@G)X^OFCVNso=.9^])nO>&rCsb<JmsjR(=aMF/nLFt&)A^>Bt:LsdOjl;TUdPuml+7G^g[~>endstream
Gat=*a`=.1&A@rkqO")$MHX\E@qNh^:$%P*b/kI>a9a9t*XkX%n#+"</7W1/@9Z4'p\K$5[30F7YkhYE!8i16]gk<grYeTg$2t&)oOiYdpbbr!VHq.e(h4D,4@qLf1[YT?3PZV1F5m<X8pCslH^PHn*o%V%@r`^m<Tui+dXfsPk<bBg&)h8cB/YPh/E/64KeO(lGIpGU2PYbOMAOA#.a>gYH%G)-r=a.)bNis5hn[!XH'aJs5LOUH^IG(=rJIAJ&c-?O^VePb!\?^4*:^>p!PWZkY,2*W2;2/7"hU;#f(oRR.DpgS.REG&g8-o1]!N"Rqd@:)'':TOp6\+f`152BL%PmpQ;9Y5n7,s174=keegQ!=ft2piSEJFhnB1@8c:*R,k,jr4!4Ss@nc(YE:1leV]^"c`R]':[<G11&a<J5&:KA)XA<N_%K_[X\'Xl';7[F9C&.3VO35i8C]-;`!ZOsHI5b6tM!dErQ$$MrL35+mu)j@00pQL#dG#=]u(OcBD%S/I@e*roOU7A#G)!(Xp4ed/3"$sQcSC>M!d&e[niINm\Lsn%]8#n'>9_U@n!'*44krboEgQ#C:b4PFT$-qU&(3DlT;>tjthfS;=L/ANnA-aPqBT\@EdHSU(FI-ppA0CE,h5R27dT$n6,_u;=4$rUNrnOY_'<:`M&anQKI@Drm(oc_"dVGJ(dDZ8Q%OZ_\S4Mc-"r<J\[gg"!c!(9S6V\2X2hnb41h>^UTP`Ztb3OSj#%K\*di``;Tc8[O+Cp+D3XDX[X"15?TJZQ!.WL613nD>MG;P;JBlpUdZcks.US6T=%S`#KY>_c-%*C:5?.sIU@LCMb/s]QE\"Gg:!4..b=+Tf~>endstream
endobj
34 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 576
>>
stream
Gatn#9lJc/(kD)N(%3m5Jb"C%Gdg^FHWd.^V;!:o`#Q)0g*QnLOnS*2S?,oK8@9oTa]JcEH/9'a5h!O:>1N]*)D5q>OF^^=Ag@KW"f?V<H\A;f=\aXmBa.I-6@"]ipX1gjMXd2=iJ!q&!KfAm15,.4PeN"#(o3hj`*aqs@gBkQS"GrL^OjlmX_ld:!W!E#VZZg3)X$mIIXob*GQcPcL`QHFS#QuR.u#7nr6e'-":;s5Gf+h5E&Elq<@HI:B49mhD;$%Ep5s*^7G"t*j>$K8@_&qTklF:/'`<^o.Hk1)J"ac-*6]I)Y-N%rdDL\#K@QVt#4Il9l:kjUeFf\].4^n12",dI+re\b]8Kll\N`U^A_2pSLOnGP)/'udr:2$P3F#HE&C58+JuI.QUm+e/"N'L#N=s?o;B03p71Tolf"KsqdXDBiR@o/3`P)7/]p^N"&$rmeA:"2n9BmhI)3YVKfk%@-bu9;/%o;+%\=;9hcIol?&__AB[^b.0Ht^u4CI;S]0MT+O+d+e#':C"9!O([]r,VoI,#1Z#Ij*oY&lbh9/13HPlG=LH<*JgD"/EUuW*HY~>endstream
endobj
35 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhNS@cJ`sQ<)AT7bBX2'SI1sre63!8eu#Hi*12+:VXOqE!h>Xcq$8qnjH_CLV:rJP%rsj5>UUDD.`Liah"L%cVntog).//WF]OI2_e/&`/?Tki+CUX9Pb^j~>endstream
endobj
36 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhN!`Q!btAh.P+,O??T$:5)Js2%0!'c(Chi*12':B,^cE"9mgcpTunnjM9CKRM'[P%nF[hj8K8<cdi[ag.prcc><c[4u7=;Tm#&O;KE.i_Ac@E&[+g9Rn-*~>endstream
endobj
37 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3227
>>
stream
Gb"/)lYkP!&c_:6@_NOq%Q;SnRhlcmF*91H`i*D5H77&D@R[FF-@BArfhm\,n"&Q5'ZHs_'I_<6M*gTKG3?+l^R84+14DdnY8[PU=hrQl!^qUY$A^$CYkS4-MmG'LUnlL^afoki"4K.R7Fk.[n*FO3JYc"O8ath8dUcl,"PVa\I>3rKH6'#]_]m$!W*nbGOMq_Pi;>KDI*EjZ#9I)efC5Ra-:DhX1]eR@)[`)=N2@#L60s&4>_:^d/d%DkJLmD<l.5H9#jD-L'u&_eY6KI)@$g_hoElA+@.Al2oja%BVI%ICj`&I:Z0#f#=)ShX`7j>N_q/jV:H=?=+7iWgK(IrB:h7P,%G>d)5MX#cG4$I/s6\eDir/8>'RD1#B$(aSZ8+jH9ptWX_QY=le[5DZ"&1(G!sGW7)91#;7$:QEpClbVKEemj#]rWq'P2dporONM5CmE>L91kX6-PdjAO8_:"`a7aIc@nP^n5*TU_?EFX!hQ"%(N'm]S*Z*jGB6N4>8_V*gEg*HI=gbG).2-q6'*P\0YUFH&uX.d4b`BbPc+Fmg;#FT,G-qbogS3lGjKSK9SeGj08*"R_?^(j"_n>&18?Udf;<t`q\#`#s/2gfhc<-7^pn?K'WB*$[^30DsO]L+(giimc3ki*A"\pKj3/g_h;VcDI[q]ZV<#ARaE[?/<0fUm*dt4'M4k(C.nA''A]nUb;]iPYOO#Ed;=uQXVJ$?/Mk(pAW.h,SNK.8N!j7G>/H,,\9e<4#9?,qR^R[oQ;l[<HbJ4]baMq:Qf"JaV''kOi48WDd^p^@.X&IB)3+G;fhtdT"\H*2fsF#]D/3q_3?R3q\qpg&-&!`O>S7eM%otn;9CXH&1p'&qCFr)QS=KlOn+%d#lZfDkS&[C_N$uhG:fBY9qRm`V(G8rJY]KgZ]'@fT_3;l*m@:udrCnqH7E#]`)lKe2V`;igr9.^oU=3e]Xe!9(f<hZ8k.>(1oW)7tkK`dgnZA9t3V17U5D_I9EmJ$@>lT]4]=I:ni%P\NecU?:;_DNd0AjP[>i.(R0@O`=*c';bkM18?eR>0e/C$VK;<_!t8)qUY0CV,;/&kGUYej=Pc"XITEUtFVh=XPk7%J$M+o[h1msZ=eg*GfN<pMuJp/W-l>?J)JplU;UNqaHI0#[SPLDV+e3A(kf_E\!p[[RP$]F7O)Wf"dU#+I:3>E%\Q"$/oj%E:V'2u@/Ck4o2\IQEZD`RJu4gTBq"T+R.%96DG6qm-s.!dMoojQ>q%_9_\DY!LI[#*8Aq!'XBbGY0n!n>R6IR!.P>+;iZ?2+'g;$YtXYqOns226G6,(p4t'iK&CA<OXeV[cMsOWLK9APQYLSrs1EnM:#:,9MD`$CEnO4GSoQ17Nf*pU6D^?OFr'%m6cHf.+&@%+OgCE,.FQ!gra8\LS3"$iAR<Y/p'cI&;g-kBO/#\Jski^\eGfRRZR5uUA\&s;GZs5EDYccA^&&.MY:m)]u$7BT(_+EXF/q'/)S?*56(@WYr`tE)^afLSUqGImM*VP!7NC(.lDN1^sP0$^X[8cae_pTQ8j<WU3ZGqejYd<TMp;BdO_F`,LS,IZ:ff&??s9p!dOEQgU!ifKET?LDM@$mh-_-/IZ>[]`T%O"mk[<$/46n;P!a#N.1sclq^'*)YTfJ!?+"r#FZ1kIUUX<(87Se7ge(Ok'Y%TTl_57_Y!gi13SWTt`[JbB?UI&/YHEiT<UCIpMWcak@<IZB']fu`OK<U-QabrSm0>5S+j$TtT>GlY9DT;-<OO3JTgPBdpkGUtp[\Z01,(*HPWV3H:0VNrkF(l4GigWD9q(&Ar:iVs9WbSq9CIZ6.bIZRoq<Q:+R&S6r+6T9"!(eIW'J4m)Wn5MLO\a[4O8<I/e$20oEpmHQT'tXJS_mF`[&8GBqs[8bcjdn[!';eeB-u(=9M-=H5]V<@EqnH$cWWjB+k**Zt"2Y[>2,AnAXXj8P[ZrY0Gg"3![;aLLq#h@X$i@UfOn3-;AQSXWX42X/!fV#,Nb_gjr#5\Rl1*Bp',4dcFti'Pjj:3Og(G@M7]'+l_T2k%9)\QX`3p\kE9joiI6mpUm@b<;"W$.OA^h+VIOYI%!sqZed2Y2sH]-#)as:3YC`bVofmI1nmRQM>P3ehK)H@d0.4Pb;eN=8s>WT(Qe,G_auQ9?[uh-\6\uVH7_Ts)3()@Gaq`mfb8OqA"&?EQI6`sqbiDE7@HU7^0$"*87MdpWWC=!)?]b6%:F)$(r3%a5X24EkXn!g=[Q[!TB]%2EDS)>p'Xn3V6!9[\m"l&?:(Y5p.A.mUG.+&,cVocn_PaX8hA)io_pJB.U/'>'(e4a?U*nKn]RXb!/9V831@Z5ZIYC]/;*nNT(ua:1FHW")/3\g_Of*KHR+78iI:!GrID>BAe^IOF]%_4BrbX,LT)g#m']aS`DL2>7,t=%dHG.,ZgbR.Gu7ie(O/,q?W)j&U.4K>.E^=[3d_`W4]73?=0?ai]EU0FJ48d?j!:.sr3'\@Y*gJilT6P*Y[g&t1*G%nCq\i,0ZT0^"4`!O.s3bM*\9Y-.!.qQ8])f]%]:1[/*X)$_X9nc&-m*Im$h;PdI88\h8A.7P.gWsg"RL0BuBlAAqHlA6eUFgUrKRd"`dO;FuJ^Q\=HNYe:a_Y-+eiQ@4$TNB]Y/10=d$;YJ(Hhp>`kqfNAm]^s;s[!861=XMj?,Ll/9)KNS2^jG8dO=TeU5@[K$hbl5Y$^-F,0mo\b.3][MD01GcLdm;]/l\]4rcTU,Z\u"hlSDB7[]:j+cmFt52i-)jV9rll%[J`UA\pqJ1YhWe@Kf?J;"K"D4:ZsEeWE0N+1"M:.)Cg=%rRY<]mV'-VR,<iQfCERq)oBQtC"cVK:RF6$A',\$nPOe=5WALY:`<d\HTQ69Fd4[fA>`5,,e.2Dmb>Wm/($9XJLt-L7?_Yt't7u:=b.$WhP@#'_&\,Fhs^<J=c^nr)+Pa/I1L];,P,ZF=?.W-mI)aY(Xob2X<ZCqG:%<k'QiLIA)4h:bTnNhn^[jmediAU_1U;JZ7q-1j#^f#dtmf#I)8mbq*hj[,UmUoZ,gLUo[hiI3&e<rG9.P2\(>iLc*)?chcT;-&7PFKV!0So0eX3qCr><mmUmP7$A#=c%2*rQ.:"[$8\u\?!q>D=PR4'S?=$[LT>([noS2-&+k/_u",%G<#LN60Oh7-]$J^fD&Rl[*rn]_VI\u,JV&)'aUT<B*_ZN<^1r3RlTBt`%69sQrO`:"9h;BLm~>endstream
endobj
38 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1206
>>
stream
GauHJD3LGI&H;*)YoeBc:IYBgcA0[j]jBGeg,(Nu^Nemq@c?@!"\#^MQXAW=(lW$RB/_JrD(P(4oW35.'a4gaC4;?]^oI_ff+]Wc-jAlJ&#)#PF#<`;7(8UI,`YNG#e5M:VB20DC&M#SO[LL>$D'I.N%tm0e:gL[qJ8Qsg^-:Xm.]':FU*m!r8R'nMISQ!.bhWAB'\ekj"@R?fkfPtFoajde]u"<[NE*t&D]YEXS28rT:Iq'1;Y'GF*d&n\EFp@Mo,8@UA,#6n`8D>K]A\6V.W+Ir`lYLX_;K/L8"_mP@>[b8E)c3-VciT\A&akdQCi&+cgNh"[&_>+a[!PDOm@/q5q")c]Um+ftaaK=X%\38f)&SjS(SmB0P3SDWW+eA=R;)"anTfG]#1E&iq@`lHs:MF+`SHO<<Z^]Fl/[6L.;t'n#fD"mBF+bQT2Z1ZlD'n_=qJ,mr'Ea.0reTd+oDhn'I,=lB)im.^Ba7`:(/;cO=/R[VK0L(djHeaqUi'0H*_:,e.N_tl@X$1QCNY_%3'*&Rf;VG6.:Kt>+OiB&R6SkjUp4*\hq5_=LjFgQo=]R[5gJt9Ii$Tn[ZeF,GJ)2.n_qaUZbgk1Q.[Lo_TV<TfiCsk16iH;ei0+414Qirq?XTZ:(0j3fn-RcFIk832m-M7om+1mRVUo]hc!%G&?1"N)"a*i2^ASPM;%`0_A9Y_g9*2gNZ")pH[X[enC\\8Hi27*i=nCc<<U*]02qeuX^U2(1HK[-c8$1(;h!pc1c<##/m?/]n?+3I$RL#r.&hY&3BHT!7tKMm'M1EC9(?6hsnA7Cbl"I<%mhC:cG&k[Y3f'kFd7&_8@le[Yn6X%GZ!D0P^>('*t^L$4`VGE>OGp_i$Dd';9WiS;`3BK2!NFOh[(:mAS'(P7aVKPj$fWaQ!kge5]ierWl-po(boQ(thpE=k."%)h54\C?sHc1%iITuo7XAq6D-mL9pj%6^aJHdA>=oh:jT\3/Rg!".A**eh(G$JHrr*<l;<)HkZ]bZ8[JH0^6QhpE]X@/M*JdSPhEN(\?IP=JF.AVt[WBbh\7A@a&>M;]>K#e7Q@s0o-hd_L;josUMPm5jV.r;)$buFtOYe-Br0l;@+?hX1^:p0EFT_]b=)c:22K,nMj/N8Dfm,7jKc9[[ci)(D3YhqOV2TD-:>JfgIc$(n%6Yr"2-U+B#$/q6rj79m+@.YPDYoDL~>endstream
endobj
xref
0 33
0 39
0000000000 65535 f
0000000061 00000 n
0000000135 00000 n
@@ -198,35 +249,41 @@ xref
0000001386 00000 n
0000001535 00000 n
0000001651 00000 n
0000001919 00000 n
0000002025 00000 n
0000002231 00000 n
0000001757 00000 n
0000001835 00000 n
0000002041 00000 n
0000002309 00000 n
0000002515 00000 n
0000002602 00000 n
0000002930 00000 n
0000003004 00000 n
0000003091 00000 n
0000003206 00000 n
0000003315 00000 n
0000003426 00000 n
0000003552 00000 n
0000003674 00000 n
0000003790 00000 n
0000003877 00000 n
0000003952 00000 n
0000004705 00000 n
0000007983 00000 n
0000002721 00000 n
0000002927 00000 n
0000003133 00000 n
0000003220 00000 n
0000003548 00000 n
0000003622 00000 n
0000003709 00000 n
0000003824 00000 n
0000003933 00000 n
0000004044 00000 n
0000004170 00000 n
0000004292 00000 n
0000004408 00000 n
0000004495 00000 n
0000004591 00000 n
0000005538 00000 n
0000006205 00000 n
0000006433 00000 n
0000006661 00000 n
0000009980 00000 n
trailer
<<
/ID
[<3b9b84c2007c5695de8ad1fc8eea63e2><3b9b84c2007c5695de8ad1fc8eea63e2>]
[<d5199be1b9289b743a4b5a7e9d5e6fce><d5199be1b9289b743a4b5a7e9d5e6fce>]
% ReportLab generated PDF document -- digest (opensource)
/Info 19 0 R
/Root 18 0 R
/Size 33
/Info 22 0 R
/Root 21 0 R
/Size 39
>>
startxref
9165
11278
%%EOF

View File

@@ -1,5 +1,24 @@
# Android Cast — exposed services catalog
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-10 |
| Last modification date | 2026-06-10 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
_Validated: 2026-06-10 after FE `apps.conf` consolidation + BE sync. Public base: **https://apps.f0xx.org**._
**Documentation index:** [README.md](README.md) · Companion: [INFRA.md](INFRA.md), [20260608_BE_SERVICES_and_infra.md](20260608_BE_SERVICES_and_infra.md)
@@ -10,6 +29,17 @@ _Validated: 2026-06-10 after FE `apps.conf` consolidation + BE sync. Public base
---
---
---
---
---
---
## Table of contents
@@ -41,7 +71,7 @@ _Validated: 2026-06-10 after FE `apps.conf` consolidation + BE sync. Public base
- [Publish (operator)](#publish-operator)
- [Heartbeat (device)](#heartbeat-device)
- [Auth & account security](#auth-account-security)
- [URL shortener (preview — not deployed)](#url-shortener-preview-not-deployed)
- [URL shortener](#url-shortener)
- [Non-HTTP services](#non-http-services)
- [Validation scripts](#validation-scripts)
<!-- /toc -->

View File

@@ -2,8 +2,8 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 33 0 R /F4 35 0 R /F5 36 0 R /F6 37 0 R
/F7 38 0 R
/F1 2 0 R /F2 3 0 R /F3 33 0 R /F4 34 0 R /F5 35 0 R /F6 36 0 R
/F7 37 0 R
>>
endobj
2 0 obj
@@ -18,147 +18,147 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 716.2874 115.501 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 762.0394 115.501 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 705.2874 88.37304 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 751.0394 88.37304 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 694.2874 97.26104 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 740.0394 97.26104 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 45.68504 683.2874 123.037 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 729.0394 123.037 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 672.8499 120.135 682.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 718.6019 120.135 728.6019 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 39 0 R /Fit ] /Rect [ 59.68504 662.8499 109.2825 672.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 708.6019 109.2825 718.6019 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 652.8499 133.4625 662.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 698.6019 133.4625 708.6019 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 642.2874 71.02104 653.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 688.0394 71.02104 699.0394 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 631.8499 120.135 641.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 677.6019 120.135 687.6019 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 621.8499 103.4475 631.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 667.6019 103.4475 677.6019 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 611.8499 164.295 621.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 657.6019 164.295 667.6019 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 601.2874 71.91704 612.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 647.0394 71.91704 658.0394 ] /Subtype /Link /Type /Annot
>>
endobj
16 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 590.8499 120.135 600.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 636.6019 120.135 646.6019 ] /Subtype /Link /Type /Annot
>>
endobj
17 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 580.8499 155.9775 590.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 626.6019 155.9775 636.6019 ] /Subtype /Link /Type /Annot
>>
endobj
18 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 570.2874 100.813 581.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 616.0394 100.813 627.0394 ] /Subtype /Link /Type /Annot
>>
endobj
19 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 559.8499 120.135 569.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 605.6019 120.135 615.6019 ] /Subtype /Link /Type /Annot
>>
endobj
20 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 549.2874 125.709 560.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 595.0394 125.709 606.0394 ] /Subtype /Link /Type /Annot
>>
endobj
21 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 538.8499 120.135 548.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 584.6019 120.135 594.6019 ] /Subtype /Link /Type /Annot
>>
endobj
22 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 528.2874 87.92504 539.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 574.0394 87.92504 585.0394 ] /Subtype /Link /Type /Annot
>>
endobj
23 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 517.8499 120.135 527.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 563.6019 120.135 573.6019 ] /Subtype /Link /Type /Annot
>>
endobj
24 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 507.2874 82.58104 518.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 553.0394 82.58104 564.0394 ] /Subtype /Link /Type /Annot
>>
endobj
25 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 45.68504 496.2874 92.82104 507.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 542.0394 92.82104 553.0394 ] /Subtype /Link /Type /Annot
>>
endobj
26 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 485.8499 82.20004 495.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 531.6019 82.20004 541.6019 ] /Subtype /Link /Type /Annot
>>
endobj
27 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 41 0 R /Fit ] /Rect [ 59.68504 475.8499 119.2875 485.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 59.68504 521.6019 119.2875 531.6019 ] /Subtype /Link /Type /Annot
>>
endobj
28 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 465.2874 111.485 476.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 511.0394 111.485 522.0394 ] /Subtype /Link /Type /Annot
>>
endobj
29 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 453.6874 129.725 463.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 499.4394 129.725 509.0394 ] /Subtype /Link /Type /Annot
>>
endobj
30 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 443.2874 97.70104 454.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 489.0394 97.70104 500.0394 ] /Subtype /Link /Type /Annot
>>
endobj
31 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 432.2874 115.469 443.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 478.0394 115.469 489.0394 ] /Subtype /Link /Type /Annot
>>
endobj
32 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 421.2874 106.149 432.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 38 0 R /Fit ] /Rect [ 45.68504 467.0394 106.149 478.0394 ] /Subtype /Link /Type /Annot
>>
endobj
33 0 obj
@@ -168,39 +168,27 @@ endobj
endobj
34 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R
24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R ] /Contents 76 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
35 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
36 0 obj
<<
/BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
37 0 obj
<<
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F7 /Subtype /Type1 /Type /Font
>>
endobj
38 0 obj
<<
/BaseFont /Symbol /Name /F7 /Subtype /Type1 /Type /Font
>>
endobj
39 0 obj
<<
/Contents 77 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources <<
/Contents 79 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 78 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -208,9 +196,21 @@ endobj
/Type /Page
>>
endobj
39 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R
24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R ] /Contents 80 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 78 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
40 0 obj
<<
/Contents 78 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources <<
/Contents 81 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 78 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -220,7 +220,7 @@ endobj
endobj
41 0 obj
<<
/Contents 79 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources <<
/Contents 82 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 78 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -230,7 +230,7 @@ endobj
endobj
42 0 obj
<<
/Contents 80 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 75 0 R /Resources <<
/Contents 83 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 78 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -240,214 +240,265 @@ endobj
endobj
43 0 obj
<<
/Outlines 45 0 R /PageMode /UseNone /Pages 75 0 R /Type /Catalog
/Contents 84 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 78 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
44 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190925+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190925+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 exposed services catalog) /Trapped /False
/Contents 85 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 78 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
45 0 obj
<<
/Count 36 /First 46 0 R /Last 74 0 R /Type /Outlines
/Contents 86 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 78 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
46 0 obj
<<
/Dest [ 39 0 R /Fit ] /Next 47 0 R /Parent 45 0 R /Title (Validation snapshot)
/Outlines 48 0 R /PageMode /UseNone /Pages 78 0 R /Type /Catalog
>>
endobj
47 0 obj
<<
/Dest [ 39 0 R /Fit ] /Next 48 0 R /Parent 45 0 R /Prev 46 0 R /Title (Hub landing)
/Author (Android Cast project) /CreationDate (D:20260616121122+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121122+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 exposed services catalog) /Trapped /False
>>
endobj
48 0 obj
<<
/Dest [ 39 0 R /Fit ] /Next 49 0 R /Parent 45 0 R /Prev 47 0 R /Title (Console home)
/Count 36 /First 49 0 R /Last 77 0 R /Type /Outlines
>>
endobj
49 0 obj
<<
/Count 3 /Dest [ 39 0 R /Fit ] /First 50 0 R /Last 52 0 R /Next 53 0 R /Parent 45 0 R
/Prev 48 0 R /Title (Issues \(crash reports\))
/Dest [ 38 0 R /Fit ] /Next 50 0 R /Parent 48 0 R /Title (Validation snapshot)
>>
endobj
50 0 obj
<<
/Dest [ 39 0 R /Fit ] /Next 51 0 R /Parent 49 0 R /Title (Related endpoints)
/Dest [ 38 0 R /Fit ] /Next 51 0 R /Parent 48 0 R /Prev 49 0 R /Title (Hub landing)
>>
endobj
51 0 obj
<<
/Dest [ 39 0 R /Fit ] /Next 52 0 R /Parent 49 0 R /Prev 50 0 R /Title (Upload via curl)
/Dest [ 38 0 R /Fit ] /Next 52 0 R /Parent 48 0 R /Prev 50 0 R /Title (Console home)
>>
endobj
52 0 obj
<<
/Dest [ 40 0 R /Fit ] /Parent 49 0 R /Prev 51 0 R /Title (Bulk / synthetic issues)
/Count 3 /Dest [ 38 0 R /Fit ] /First 53 0 R /Last 55 0 R /Next 56 0 R /Parent 48 0 R
/Prev 51 0 R /Title (Issues \(crash reports\))
>>
endobj
53 0 obj
<<
/Count 3 /Dest [ 40 0 R /Fit ] /First 54 0 R /Last 56 0 R /Next 57 0 R /Parent 45 0 R
/Prev 49 0 R /Title (Tickets)
/Dest [ 38 0 R /Fit ] /Next 54 0 R /Parent 52 0 R /Title (Related endpoints)
>>
endobj
54 0 obj
<<
/Dest [ 40 0 R /Fit ] /Next 55 0 R /Parent 53 0 R /Title (Related endpoints)
/Dest [ 38 0 R /Fit ] /Next 55 0 R /Parent 52 0 R /Prev 53 0 R /Title (Upload via curl)
>>
endobj
55 0 obj
<<
/Dest [ 40 0 R /Fit ] /Next 56 0 R /Parent 53 0 R /Prev 54 0 R /Title (Create via UI)
/Dest [ 38 0 R /Fit ] /Parent 52 0 R /Prev 54 0 R /Title (Bulk / synthetic issues)
>>
endobj
56 0 obj
<<
/Dest [ 40 0 R /Fit ] /Parent 53 0 R /Prev 55 0 R /Title (Create via curl \(session cookie\))
/Count 3 /Dest [ 38 0 R /Fit ] /First 57 0 R /Last 59 0 R /Next 60 0 R /Parent 48 0 R
/Prev 52 0 R /Title (Tickets)
>>
endobj
57 0 obj
<<
/Count 2 /Dest [ 40 0 R /Fit ] /First 58 0 R /Last 59 0 R /Next 60 0 R /Parent 45 0 R
/Prev 53 0 R /Title (Graphs)
/Dest [ 38 0 R /Fit ] /Next 58 0 R /Parent 56 0 R /Title (Related endpoints)
>>
endobj
58 0 obj
<<
/Dest [ 40 0 R /Fit ] /Next 59 0 R /Parent 57 0 R /Title (Related endpoints)
/Dest [ 38 0 R /Fit ] /Next 59 0 R /Parent 56 0 R /Prev 57 0 R /Title (Create via UI)
>>
endobj
59 0 obj
<<
/Dest [ 40 0 R /Fit ] /Parent 57 0 R /Prev 58 0 R /Title (Fake session data \(dev / BE\))
/Dest [ 38 0 R /Fit ] /Parent 56 0 R /Prev 58 0 R /Title (Create via curl \(session cookie\))
>>
endobj
60 0 obj
<<
/Count 1 /Dest [ 41 0 R /Fit ] /First 61 0 R /Last 61 0 R /Next 62 0 R /Parent 45 0 R
/Prev 57 0 R /Title (Remote access)
/Count 2 /Dest [ 38 0 R /Fit ] /First 61 0 R /Last 62 0 R /Next 63 0 R /Parent 48 0 R
/Prev 56 0 R /Title (Graphs)
>>
endobj
61 0 obj
<<
/Dest [ 41 0 R /Fit ] /Parent 60 0 R /Title (Related endpoints)
/Dest [ 38 0 R /Fit ] /Next 62 0 R /Parent 60 0 R /Title (Related endpoints)
>>
endobj
62 0 obj
<<
/Count 1 /Dest [ 41 0 R /Fit ] /First 63 0 R /Last 63 0 R /Next 64 0 R /Parent 45 0 R
/Prev 60 0 R /Title (RBAC / access control)
/Dest [ 38 0 R /Fit ] /Parent 60 0 R /Prev 61 0 R /Title (Fake session data \(dev / BE\))
>>
endobj
63 0 obj
<<
/Dest [ 41 0 R /Fit ] /Parent 62 0 R /Title (Related endpoints)
/Count 1 /Dest [ 38 0 R /Fit ] /First 64 0 R /Last 64 0 R /Next 65 0 R /Parent 48 0 R
/Prev 60 0 R /Title (Remote access)
>>
endobj
64 0 obj
<<
/Count 1 /Dest [ 41 0 R /Fit ] /First 65 0 R /Last 65 0 R /Next 66 0 R /Parent 45 0 R
/Prev 62 0 R /Title (APK builder)
/Dest [ 38 0 R /Fit ] /Parent 63 0 R /Title (Related endpoints)
>>
endobj
65 0 obj
<<
/Dest [ 41 0 R /Fit ] /Parent 64 0 R /Title (Related endpoints)
/Count 1 /Dest [ 38 0 R /Fit ] /First 66 0 R /Last 66 0 R /Next 67 0 R /Parent 48 0 R
/Prev 63 0 R /Title (RBAC / access control)
>>
endobj
66 0 obj
<<
/Dest [ 41 0 R /Fit ] /Next 67 0 R /Parent 45 0 R /Prev 64 0 R /Title (Git \(Gitea\))
/Dest [ 38 0 R /Fit ] /Parent 65 0 R /Title (Related endpoints)
>>
endobj
67 0 obj
<<
/Count 2 /Dest [ 41 0 R /Fit ] /First 68 0 R /Last 69 0 R /Next 70 0 R /Parent 45 0 R
/Prev 66 0 R /Title (OTA updates)
/Count 1 /Dest [ 38 0 R /Fit ] /First 68 0 R /Last 68 0 R /Next 69 0 R /Parent 48 0 R
/Prev 65 0 R /Title (APK builder)
>>
endobj
68 0 obj
<<
/Dest [ 41 0 R /Fit ] /Next 69 0 R /Parent 67 0 R /Title (Layout)
/Dest [ 38 0 R /Fit ] /Parent 67 0 R /Title (Related endpoints)
>>
endobj
69 0 obj
<<
/Dest [ 41 0 R /Fit ] /Parent 67 0 R /Prev 68 0 R /Title (Publish \(operator\))
/Dest [ 38 0 R /Fit ] /Next 70 0 R /Parent 48 0 R /Prev 67 0 R /Title (Git \(Gitea\))
>>
endobj
70 0 obj
<<
/Dest [ 42 0 R /Fit ] /Next 71 0 R /Parent 45 0 R /Prev 67 0 R /Title (Heartbeat \(device\))
/Count 2 /Dest [ 38 0 R /Fit ] /First 71 0 R /Last 72 0 R /Next 73 0 R /Parent 48 0 R
/Prev 69 0 R /Title (OTA updates)
>>
endobj
71 0 obj
<<
/Dest [ 42 0 R /Fit ] /Next 72 0 R /Parent 45 0 R /Prev 70 0 R /Title (Auth & account security)
/Dest [ 38 0 R /Fit ] /Next 72 0 R /Parent 70 0 R /Title (Layout)
>>
endobj
72 0 obj
<<
/Dest [ 42 0 R /Fit ] /Next 73 0 R /Parent 45 0 R /Prev 71 0 R /Title (URL shortener)
/Dest [ 38 0 R /Fit ] /Parent 70 0 R /Prev 71 0 R /Title (Publish \(operator\))
>>
endobj
73 0 obj
<<
/Dest [ 42 0 R /Fit ] /Next 74 0 R /Parent 45 0 R /Prev 72 0 R /Title (Non-HTTP services)
/Dest [ 38 0 R /Fit ] /Next 74 0 R /Parent 48 0 R /Prev 70 0 R /Title (Heartbeat \(device\))
>>
endobj
74 0 obj
<<
/Dest [ 42 0 R /Fit ] /Parent 45 0 R /Prev 73 0 R /Title (Validation scripts)
/Dest [ 38 0 R /Fit ] /Next 75 0 R /Parent 48 0 R /Prev 73 0 R /Title (Auth & account security)
>>
endobj
75 0 obj
<<
/Count 5 /Kids [ 34 0 R 39 0 R 40 0 R 41 0 R 42 0 R ] /Type /Pages
/Dest [ 38 0 R /Fit ] /Next 76 0 R /Parent 48 0 R /Prev 74 0 R /Title (URL shortener)
>>
endobj
76 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1045
/Dest [ 38 0 R /Fit ] /Next 77 0 R /Parent 48 0 R /Prev 75 0 R /Title (Non-HTTP services)
>>
stream
Gau0Cd8&FM'Rf-pmaG.4&Rm+_d_1pKChRMJ+Rk%@\V["ddl=\)1B)_].29dP\]@^F</OtRj)a[smi`8%6i)#3"?=J2s,[5SOC&'GK,F/hR,g=nGKB0qQj$($_AL]X%Dlcqj8X'X#W!C(#_H`WKP:WVb31N+TW`NX9sT=A+^ZDr"i<;+8im"cdNG8mK]@=aK2Goh,tf(rA)W$f'Z@1E),YttH6ir-T\u,;l=q.++-=6k]g#R`_Vaj.MKD/dG#+Q\A=*pQr;2k''X0H3dd]h9_X>;r$ms<i>-gCS3B$>61d/_MMH@+E<iUI/7RNX2KaAC,gVXDp=W5X<m7BN*+X3B^m\(c^-5Q5;(5&.'.KSfI$<:;->N7s[1M(q2kYBU.f9GpkkP%$*RQ"i]X93ngq830]cCj0>.I4$aj!I.Y$[8[eUJU]q=pbMmlnnfn')9P8()-FO:hXb/TLGW_2&Ek7,gu'OO;R26@LCc!S9cM0U>crH8^q=HUf68!M-gU&9r3(@/'4JuFlbl=q'C",<X[ObF&Ui(Yd+8^LW=s:*;[g6>S[_+Ujf[6VXFY\IOU5`5RMo@S/jW*PQ(jEjW@O"&]SpJ@A21;$CA&/_kF8-po&HoGDH=D[YOLF#V>XAiK,\qgkh(.'$"+=@YM480QDt:P51!PM-)6$$=7+miM$J0*nb`kimc`F%n:%CID,Hj-.0lo>\;CW%"*su'42rBVOq;Jb,Q00!LIV`l[.q@o6(7.ZiJodE0mkgLYb)>YPAIX##!k8qMhiKEF0@WR,=jnU%=7B^UVa9<_7*00*\EgRTlVZ<)<Gbhh#W*_cq).hP-ui,/>6Xid[`)(Z/U`cOalo[<$TA*B:($/RAI&&PIK2^`iF&PG<+#F?UW1QV5<<YNWlq62mVD]h`o;h)JRCFQ0F[G\I'`/K:%_-72TOOGl;;Najo$jEABj/:[<5nt2p_(ZKj]i'Zl2^7S.qcB#u/dpQ=]XZ`OT^P,;2$No!Q00n)BrG[R@S[]HhJ=U2!S$qR_(62OkCL.%F$]MV&*pjhgIKLXV!/C~>endstream
endobj
77 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3471
/Dest [ 38 0 R /Fit ] /Parent 48 0 R /Prev 76 0 R /Title (Validation scripts)
>>
stream
Gb!#_=``=W&q9SYka/F!A8I.tiDaPBaZ/g&SAZ'i].^=05nkS!VFV1_q:LK$mG$PFP2ZMbREUt,9-D#>j6K10]?sJ@`ZHN*lYZa[b[L?C!C__<$5?do@=A@ro92C6P^K9E8>^7F3`rgB)4I>\He=<2.O?Z@117g"7HU4D85TJI'9io.ED5KP1L@u[T>^Ji,b`D&:hA0>PKbmP#-pj7%.>h,B:+096@)+76DB9-DA]JGkP55o^h52l.=#>%^VH<H?r)>(_=_^)HS-iTUZVe<,CaKm,S<,1:/e/Cq=.;hj)p![Pd]a.3#]Ql:FdWDABDF%&a:.*9"$#r4Tf4dedT6=J7V<P/DE;iF@e:5Sgech*7,7dU2[*2C*k_oD6MAo\LJd5/.5"e2IRd0MJ>_+qg<-W9baht1Oe!\k=s@Q8$\,%b,0&Mf]G)h;&H'k9GbX\UVUungt7Mt2SIEOl?5I3)3+)JQSOD73]T*8KO-CKY`&q,P&.1fTn0""VJOp.=bc5*>\-\4rgKP?;B8>/<"mOk%:T[F(J'bi'OrttD2a\le=l\@]S1tC.HBG5.*M0(A_T7tYbbE-68`MOgCDg8h0/^2FPFVM!hpFCP&>"BeP,9CotV,RBHM:A.294ahH[Ta$4\F;H+Td<?)J#ZL+161ll8CglPJ>BOH=]]]6C(u3tfuMNgX9nPoJeb,krGK!DKm)AlYk;?LAR1E!aqBX)tnST9<S"LYgH*/@gc"n/HM6W;q+:=##,9<p's5McO%1>gDNaGk<l@Xl5&tBdA.G\WN[=58U:!Q9oZBYe3hE,I>C'Pm-Xr]aAcW1g)EU$`hRI@CEo3LMJR,K,b2XK`$6lU(%c$>);eodd*.3#gf>lrsOCdSZt/hfm3R[`kt%LOZp^/_<D?C4IYlV&7s$)Xj(2HEDdu37(,OJ4V<$&Rcj-NDG=t!=J+c[_;11qT`-WY6KIHff"F0T'/Ih1R'MArHn'PS@?8V?(lbsp/T^`Y_YpoXmWT>b*[('GggQT6Z<eV7JXZs8EHoPg5/HF>?35rsDaiFa_AHdiK)<6JmtYd!Bf*qJ4iY-BIIhN@gk:'E_c%1kOWTbJYi,0)@&="$h>jj16B]EZAlD:K->G1&rPa.dQ@g.cM/n7pj[2Vf`s>rs#1oJ[F8.Hdr2Ea;7lYo2eRLn%JE8595=63U@^`&N1!%:W'Sk'hNa>;9G99aj7X/DWoLB65GA+K;d]^.+g`;#`r4(S1^G3`#A,[%2EMFBY3'G=XQGpR/L1f4Us8SMaK-CRfLhO$2K)un/"!\4X"n;VC^R[p(C?^HSc-J'3:F$#`aun!nT.Stq+(f5R>j[VgO6+O"b)d*"4ASrD_IhJTm:mI:Q<fAKlb[8e-.h=CpY=G&[0Ko)LS\'6YZ5ep!N<5.kISNPS`_KGFcHia'gp/DQZHFjp'>B<R40-E0,m@[mp-5j_pTgJZ+G(WL5Ajj"$4sl93(PRT;F#pSE8h>:Li2G2l_akOs^M`?,A)`rUAc^(I:G%[l`]]B0fHg*h.?=+IR\?,upbS>tV`=+*q72OR,i,!0:j"MZ_OXU[#*q:L<VIq9k2KQ8MUFmOn4llk4cY$s@T\[C#a*^pE8fR3!`YS/RXnYI25W`Z-1I3WF>(^c(^SJ8lWRk1oJ)S`G6T"E21cji(HLD1bR?@gNU[QCH?>#Wilmqj[*Ds$FP@o<ed5$b?[Tg)T0oM4YC;56YR:,*"_\QAt-T0\?PoTQ^>>13?PVc)_4cK8.0IKu*G]?/olkp?S2oTPs,-6[a=E4ea(H*:jSe[R$?s'_4Y@6K_bi?#e&91Wdm`KaaDj57H*kJ(I1\NAV/,i4k$a7t;O2l-&u1.!1//&iQY)*c@7b*]CBaUaGn*#E,-9"`=pY<8P<V2!0(s9/\XL-6%3`jMsW=5Dfk;^2GgADc-#<:D"A)pMbUS/n9lL\9A)*7(+Aae@P+<FNZ';N4_osgb"%pD8^[d&`$D3[=+X!CF$<eYlCGU"8-KDo,F;:hD;+R>mq3\W/i4<UBt#emESM?Lo`%u)s7$rc?,=:5jlJ_K"G!Ohe&;3;g@aWVsk5:G*JQ7giJS\I`\mVVsoCX_h8)2?/-g*O=/3sQu*+HNcOm(@<gt_6ZYWMg['BK%r>^1VqQ\jl[hma1_ob'RcRM!*4UJSQ,0LEh*0uDaV_\5HLC0_+cj<fq$eppYi@s>mPTl#+Fc5:mO(uLAfeV]G5l-9ArR7\AdKO;me$AHH5IqOlF$DcDPhcS)UH!N/]<1Eha_NVCs?S@&$mK*pKDV,+EZN-(:@)[C-R)bfNGqo[c&g(LG:Vr;uYV]FH?XbcdA]82fq^O([r-N03LJ"4tePCZ6fG%0mX<DJi^$*nD?*(TB+$]IXMJ.8+'NB1g96<n:rTh34^*]*_'5PTXh7J@&o5bNEVie*#FX$1UT`JH$<mTW`c4[3'H@`RV>C*A+jQ>MdTLu"J_SU=AiJhJo:=OZ@r+p\;qaB_aM;ndkD=k9r0pLehBcL#)mZtEj#X)@B9Aa-W2KeBqOTZG^IC>qtn&s+'rrQdCUdicJp)J`sr30APZWN^Bder4^'(!H'Odk$n(']4"oF&:\4ZMrk7=]nRkGI.(m<]J6][0H_1n&"Xn/Z6o`e;l^HX9^M54ZJ<>_NXT\/f6&)IgMi$Ak)O@2,:\s+:,3N0\CYc'W2,XhEZ,^>T&qn*M2V^%.5i\i)Q`uLf>st%.`R@uLTo*m);"P&s"%L$B-0"Zd;P9'_Y"(bDWiC56e]n3($[<]kTN8'_I9sSn(c4aV(\Bsk3;QB2Rq7Ekg8V1hBoR/CecN2Z=5Omui3SpukSi#[#gj])r7P(cMTC3lc&r#sP>0[CHD%[S;5D6o^<"j$PIRWlOsukjn]`jDh*-s=8\49P`t5uA`DO^F#FTgQUWB5!rqUDoJ-<k**kIj/(Q-Re8j+X4\ikRA-r069R2n$l_S9]c:M(el#O#d:D'^hj=T?Dlf/";WZaN:p#\l'eh+X-o),Krk3r-T:-6AlVlMc6u(E+(9Gg]Y79;X5c:XWKs\dIj0jGr2S=g('p%a^t0N6tkB<Toj,88dtU/J#OOR!aQfFe!j!PPuKjEqrrs:gHe"NQp[E0/7bEVbT_'KDS$44K+o='3a"-&fFK6kCj:hnC>nR1KZ=k1u;d9f8PLl"Eit[,mj+ZouIRt5.;afN[)tAkZP7JRNF(?6f7;KS_+Me`A>t3.#91('8"#\/q&[<.&=KCE=_tLd_@!X6&;2Gr4q7"loM]u,f)0I9qPYBTj%-3$;7V-UE%o`fMNg1j-!T&`kJIiWDuqXql1"(<`NSqX"'&H^P6lYIS8'E[7^$p7:XZQW]HOtnG]_un(2YEP@p<a.iLj+B*QSrf[b"PZST'uRem,\UX63Dmu#,J!&%4]\@/a;Zi08Pk#_C`P$fDZ9k)PEUJ;E(,I86iG#j_(H?SiDW2)ao'ka^7?=.!NlM<__/:F&Gb^C`1jKS=o:AtLaIq3O~>endstream
endobj
78 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2900
/Count 8 /Kids [ 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R ] /Type /Pages
>>
stream
Gb!;&CNGt9o"0B?QSs1kp**mh9%e7P3Jf]\<&S`*D;A3_Y#JmJ8_=:SKAq-"oA?_V&4.506*]lUY!`]Ie*lPcmX]nCIjFpK>lqYUKDIA)U;M3[`)KDI^P0#adAJ3e5an!J%kZ$/a*&0A(n%o%kkg9kc(\`?e!,+o1ndEC#+j&"&0iW\ka#\oG_n7NYf5W2L4Vblj8#a>hNEUD)@W32qAr?Kr:PD#H.mTPj(fM3!<)4Z0Gr/I%Z0X?mg6/\_6K0-3(hUJ^,gfm3-1$WQ`%T)]KPSsT.l[tb5pBu'#9$)_VcMTnc!QfO=s?^cVth[l7*8fl7)6ImVOTY)#OHU0;C44@6,7_`U#V33"C>&VLB5Zf/sD$OYPpa%^,_k-?nsg_&<>hmR+>K9Z;"-,BVNG@$umY!.:g20NTFF`:)I)>XP4+[Dnp?qKG/Y>U&+LkQY28(_U"r"DFEUU!#E'>]g_&(XlWG/5`ULHc&0Gj_j(u.9BHfe*.k"9a_-p`Kk2^]Gk#nn&'bO@EuCnUYH/6]Y@PP2kU5e$e#8PI2@:V=,]dK-$H99/ZS$Xqc,NtNW\`[@8\"/9^aauc$U:Or1<W[E/o6AGdL(J<m29qqp/Grh7uMc69g`g:KHG&@$p/h".V)jIrY1"H?sS6/3QEg2k&Q=&UE3FNM<r.l=SMpq7QCL"am2(cb0+KEl6J[W2OTu4c'h:9K?K?J]nD:#J#MLp;m)2#8koM/8,YOc65pGCkhpjA&!-03r>Ot$>pRK-t%S,2bT^i3H*92P]XJl1>2hbD/8J5g7BNWLp$(0/LSP<ai?U5q,CgYfqtm=N?mqk=0J\!n*K=b?"8dLNVRW1j)</,RJ,a#&g_TR;JG>@OmfgpUJICJf??t\8;.ZAVp@Q=4\;K<2QR\-m.Z?tk^H/CUM#$8Kp;-IrZg2faiuAmDF'X&-N0C(F2%)<#/@Xj79$=?/Qk[n:M$&IO;=P`#M>(g^r+\)%.eHaG$6CVH\giHZ,"kE)et6ge.'S$`>I9s1Bb\%oT;_`8KWgi6Oh]g.6>jn(_?c^#.#B_V>+94fM3*=Os)ZUrjuKJR?^e9c:sZ8]a89mAtn\34<,DmfXCP62&h8'K3)uUZG`6oE-gqc7),)()/+OtDTnCl/^McN%&5@<qj""9aD5o566'Qmc>j3UZbd;YOm@b)fU@4"hl!N^4_$3?7klmF?k5MMYtF#3ZPr8sHEj`!fYFd=8=EPAYKt3$#3_(kU2*dI?:?VS"P<4;g2.NQJtu$.'$jWQZm>"d*VWd1Vm,W35d!hVX-uGu+JF;&gk@^PN9(I%FV@6f;C#h:p5kI(5^RUnr=W\W=tZ.4h&LbnB$n^FR0>P.6^_L#HO#p,9!SQDdN/(#EE6Q3"cb'QR2o<Ga[F/ON&&g&bU-<rqJm@6P3O`RF@Ro4&!s.MLuo8f]8Y].O(/TFpi(4'=tWHX@+?cQP"8/fQpJ<YIYfha?.lI`QM!5'0R"Ra*CEg<Q'SA5l9"AU-.cRKk`5Kr9rY`9VC4K/3t,S?51??+.fJ=$FGeM2p;k49g`04t*G1Q(W3[b-QBp3lBQZMcj_XLT-BUF<+7VVbN;?Or)eRp3NE$n<]YT*L8'4YP9T)17pZ(Qa`IcjMNaH\(9JHt617R!dfRBr&!%T0DLdW>X3ebIl$B+lJ'Fr;8XRW>i3%UuK2D)5.L%Te(#"RtcXO/O33*K+F>9'"L#4sMDqO0MiB'u+>LN9V]=4]sQhh_)KYaIFD1H3%80*gh=%rJEk;n!Lr*Z;)>5uZ6*JBlE6,'t->c/6h@pSEi-80L^7jBJkO=h>bDPHX>b(Z!%/4*D!kNO**\jPr*(h"$cE%9cNWqf.mY$T%Wprn%q=HKMMM6IC7HBG;B1YhAdlHK'3%SQQ(p=@>g5BUIr-k5fnhFNNJ5ik/,3buD8f`%iEF4(O\7P<R;[3k/%/j0Qj+#mN5]A3fkBe0HWtVW.UGjIe\_H/uY!rHP'69*BDC\J.[4-/G)Ije\pa]dF*@K>CR`<*Z4/4?-YeQ@rq_'C%1Jn1QNXr&.0[I!E<<CW6.i%rl"\WlI<(i@5*O8DPX9E<j*uD(@UBUR1gk^j==R_OJJ$;X[cW.e21#?d4aIR2Jl7MnD-!KhnG%lokC3+$JN!(V-m2l[W<HT_dY_Nhc&Z_mX3Rp[qYi+2oe45Sq<X<nCX#@_JuFqHDpdEX@.I7.dqCWR7+>SeK%[NW/b[^"UcdS':rA>lo,\3-q.BGTh&1UKb=(23[f2>TD!E2H:&I`AWq@o3SLLE]Xkj'&Vg/i@_a"B]=kA,-a)FV09)3j%gZA<:"qh0"M=\4T,l)K['f/_u51;kb>5iC1>@G]c4$t9GjIM0XtCBnQ_-5R?5liKiCp9pbY8\1?t62[tt&$[n=T=P1t&[A2W3\rV(5.G*hLOEfncjZhusYGMI5j.,FEBlRg9Z=N+X#)A10a7hN[h.]qO)GPm,]s(B=Ml$T),H+(?:_<oM/qf`QSo?0#2%P7JB<gdhaOsJf$#Lqi$1Ic2GbF1n=4bH8j6c[l?]'%bU6Hs./Q#*ufPP<l`@6_0=M"3\1CTDil*4ZPF$.mrTW1\F'$G8dZ>_&0ic1Q98h-,7@b>Ru[88lbV#\%f]JF4NMAY'8G^Ka#:XY>B]FFato"Vb*eh=U7&$F=3l%mBW_WQ)UF]h88]c$Y_sD1JIs6m9.m-Jn`tiFdJS@%H22/-YjeWW5tn(M>M"PiH;]8XE>t0Nq'te/$,S(--"N9/%PbB.1T<CVOF(^K-7$]IX\'m+4'6`@NIpS7'o&5f;^f=G\3n6q+H%OC@Cj?+t]T7Vg:5"W:657-`[NEkVMl`.#c3<t(+U2"@Ph"kC8sE4t:[[>ABBQ:UXO^K@i57.?:t+UYf9pp)dKq^J*F;BN@$\jAm]R#;);rs&(:ds:~>endstream
endobj
79 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2787
/Filter [ /ASCII85Decode /FlateDecode ] /Length 862
>>
stream
Gb!#^lYkfA'*"Q<@_NhD('u9a0.T;lE-ARK2V3(](W?CU%,#6/D.H57kWJ9Ps8*6O=dEX@VX/2I#SMpTBP'4Wre?X<3rTuLhrtd3Ad$gX!t5O37kcK'_<;AH7q[=A)$QjJ';oL/(:^M?FORSc3Ln(oNKTW:^h=%=b(mBc1`JYkZT@S9SDUYa//\02.8/,3@.Xmt5>!B>i_Pa`LD%4%&l(tpL+Y]3@D-M\^U)$^-:4jcRlcCZ&4q2EBmu5@jACDT,r)%8Olf.i*XB$NT8IX*j)8``Zmkau"\Z7IcN/C'k*bYt>^(EP^VB$J^OecRlC(;s+r\YfC+;@DTWi7%<XcWI;<.LG`bRr3In^dS7Ef0Y7qisK.sP2"JqZK?@)ec?<9s\GKLPBW^tGWNcY%dXpVYs&85\UO+!V+RdU$,hoEs4BerK:](Y`@0qLZtB7C+6L,1.G=Ng+#*i&F_V7.4"%2M%6eUUrZ3BJIggUlcjKb]ZiZO&1HiE+t]T)*InS/EKYn@TaEYN7XSQAF(kGIhiP<?,K#Uh^jIp*XDu+aWD0IB<OgHIhiI*baJKA@M-piX^`2#l(NNci-\ar^6LW7.<0Im(p3ZcZ"W67=t[(%oON0[K,%2APgrl;T9nfhDL^,7OD&K&r&Pf<[Q`N:WHh4>0n,e,?.KfV$+*=`=:75e;j&\pGQ(QL;I7O:%XUi_NCHp5@@m+H*Ced6^6baDZ,BA2Q_gU]JpEcsW7OaHON)!'P7$\\ZOQR9m5Bg+Ep^*eCEuhnqgB[HoDhuIT8O$I"\Hi:=<rYBY-auVL]7uWoc.`;p*"&fF_?3FFr.[W6P>/_\VQ%4R]eY#'lODjk'kR5NEbI>q"sH;oVcQY#1Pm+5FpaSo<POub>"PI;$b'U6EbjADgea+kUI:kCiJ^=9]0SIJNH20!_<'>JS6M@'$7?tPRK#6E_"::E_oN#QBh>7:7$TBqU`13fl:if\qV_`fM#]-KGF]GOHi[5<e[:j_t`=#&3OP':?s?7$0WRn.mU0Q]/B*K5](/'[%*;H,mQ=YX:oAkEt"h"]o#Kpgq^md7m!.amg/Gj?0B.U$Y+[`!0/&JC9oP0Oo<9?0&n=fK.Gj:pP5AZLZ=m'nFl],'O0]EHhE^sLfGgl(iu"]>VN<Tr94jr1+f'f+;(S"(c'daZWO+rg:jt5ekaOGr&R@"JB'I50%fefDB(a(:f[O`n_ir>[K*\V9Q:4sn]^_)Z$X1WI+K,>gBQ#^(.a1bi,O!D+ksucD\Vt*F@'YVCk2H:15Jp+);E_HFT3DaK!"c*dLL@+VK]7CO>VKRj?TVnFSkhSlkF.%HZ]\O3NI?2h0H&D$JkNLg*pDHFi9-/DF^-6<p\+Y[opKL/9fYCkYO_#EU?#8f(Z[_V\cRJb6d4n,"QYa`m^i1[3r*$rS[N/?Z]nnisGo64B;!,MQe<eZ`]gJ6`hN4h^:^,/>!ZqM^'OH?.(Stm0XdP<=uW;:1-Yq9]0S+e1MUs6g\p*)/9u:X\dd'*F_""fa8HF&-"-c3eO,<1tW8SiO?tNc13:IRJG6(1P)<f"<EV#J+,6f<^A]T>X8tF+_J'N^B3n8H>3e%RWcXi/IC'Q<;Q]3+6MPZ0399@0V@D*R9V;$WSl!-@We4$i9R<PfLlC/r`!8E,Ys%,RLmXrg-#$k@$dj^'laItQ_E.=JX8lf!+,)%5j))ISa+U@o6Kja:d"8ipqV1T$(.nXB6DGMS[TO"ld#6(bh)0.2Ma?QYjo?3bqMUnJ;Suq:b:*=L6Ae$0Lg9;H$Rk:q&pkf`ZCN1W1a(Vp@$;8B)fLhX4^iOfQ$WRcMC![%Z;GE0n7qfGe8#aU'@dpmu$M1i\f2GMnQAX^f#6-d]/=K`=]0Tmbdj&^;giAn#)C*i7R@p\fVKB<)%lA/sorEXVXmk=l72>&:VuThY)GC79"ItIMnMr9SVu%7-_emSQW`%UF?R:6\NBZV_t+[7ogQp*%J@h)oC_Y[*$JE]%6Cb3T4ju^[@t9Fgg")a8(q&N],$;2mf(Mk)OUJhqHMI\j:.K=^.@\l5;uC#eILP$_LpAJ^l$%i$ApB.*bb!kGAe0f=]!qf<5Q^?_ei!A.3@)qf;F>r8Dg<p[qm(WH('fHTctKdGD-,gF3Fip:-^rJ]kjDbZ?eBVj9X(Ak@J@QTG_26B=c6UWjd6^&@I::tf]8mM59;'d7<BQ/uJT'5TV;:Um#>>`i2sRC]P:o`^Z$-%L+`Ne45P!j2XrMk6K7&tD8p)b]6m(eZ[7=K=h"eLU(Qf^8\O6U-otR\p2kT*Got+:t23iZl<AO=rO+cYYn;0m\"7cnTS&+i>dt@Fq^P@\2Nsf\&4+;2SSF0)R,,Tjmp`lWPieXa!B0Kg,k]q3LI%T/N^l""Qf?gMXT$-:AEiGCg3f+qm1PitW*j/&C5rG%t*_9/e@\m:O!SX#f">;]ZdQdq7(H7n\(*>J+]8=kF"RVK.X_DDJ^X?ps%0YiE*Z+o[[0iW;>`6^h@QeFh]`b;2dU$6C'3qrqE5W-%SeY:HG,d7mZh%%[:aT`3f%Jo<e*ZheYpFq.Q:0M!!^V:TX$.)#(A2^88Vi9W2\94%r_)u/3,6d4u0c=1RZX-'B(:<M&S3K'[Clk1mjq5b7Z95]DCU;da<<^P[%4DC=>%'s%_b[p</_=-@ATnM+G>a^+57P^R.LnF5EN4o@YN(<hnCt,a,pgBlRN$Vp1Q75lt><eg"16kTCl?Tc8`<6<pCP'i7F)q`4GSTV[FHNsT9aF(#^HS)]AW>BrY:4V[g_.mF`.42<gbkM@p"J/1(!cd`)c?L&~>endstream
Gat=*9lldX&A@sBlnQaAMH6?gFOR&7NXq+DHg6;>E^Ic2$J94pI0BcF;&b.C!=`5G[nj&18I3g0=FSj6^aBY1*tXNb[fI12J@C&UDt\O4mj!N3b)oYRes]G'$B)6&664&l#Jsb8[0&fijpHe6BkBBqi'r>8=VhKC(+pFS*$AgG1WliU$fGb@#AFeTE9Cjor*i?Pq>6Uk-@j=9qf$C-=SoYD9qFP!pB'2/giOF8i(*Ya'<RA;7^SuT.YN9*(X7f<A7M=j#)3m6$b3c4TrV)iA%BZE_Yj:4qq_/(0_"ZfM(9O?9\iNVL"CA_&1obJN\3c0#:RVFJ;p=5lsLo?M7A(UBpi8DO=;,-$)rL#[H/s2H46Rh`fQ?[5ejEuoK9I,$*c\?X"N?GkBZklJJdN$CQ*gCAeP!U^hbC%QBIP>rG6"e$'i'bQAPAJRVd"!P>EG8'\+MR5Q0upoU+CsU*p5C6Ce\uZ0cMEbFau?`*=pfNcSESo8OjhfpgZcXup[D`2UYf2#Au5jaCJ1"l)'[<DO+B?#$C1aDOQIV*1Ps\q;`,)lUke=;9paPQ]ql>Ygd'FAJYY+JoB-\adl02Bus:lMc5cJ5;cYb3Vh@k&9G]:$7O1&FQ9D#iXhMXn#=>3h86hiAF?$;NkYoJgZ?3F0aXk-I*caHQAf,14O2mc`tagm1Jc)p3i>@LM7q!h5/^U^Y%i]r&L;C;0+'!^KXg*-JCB):,d#!C^iBj<88AF-J"7n(PB/Q2CQ$:EZ9u*5]hWT*JA/=U4X!dJp.d=V5l,I7\J,YC)+7r:Hd=M;n"T;MC<SNY$.P'U/oWZHcN!VeGHf08d<Bp6-!lU9G33GPh453KNiCVM#al3G>="D~>endstream
endobj
80 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3309
/Filter [ /ASCII85Decode /FlateDecode ] /Length 966
>>
stream
Gb"/*D0+Gi')q<+Z/_7a3)0/P^?DDWl,^"J\!In$;Qfa[EuKpf,UO5AOH:JAPQ(8[O<RCrUe&X"V_cqERM5n7Md6=pca09%;"7&6s)urnk@7>k1scMe(SDYO!TR7#3Bm7\U2<C=VJLBLeUUDm/$"!B_"Y&P?dpi6RL\@8BW>m+f9Iif>p3"'J&3M%NO[4l&J140P%mRWg4'Ii&$bDEj;D3._Y+RVMB=:VWku9J'M!&qSYVf+4e!#3g)ZW)_>,DL]4`ni([c;WdeSs^XDHdl*\:QWVBWLu54]YIHcdM+i@UT:ohWjAoS*F=mE]K+GmY3O3Y6+>Sf=fI%_93U*?N$Q\>>n2\/3ltV<`Vk"c\#QRHQBGjt?8a^OJM&\T7N^0$69R.:!ch-E>H*$WB7)d'EblQ.*[o&X';dB]g3"R\E)(C3)4Y:2aEn:7aA2&a@H/EeQo_ahb[])kHB`%\NP2B4(s1]I5`K@(pjBBJ*Jtb4thD>l+&B\N\o?:gpQa]H)u?`H`$f'a84faU@e5B:4HHd8Fq]KZouKG/U:Ea?EFU.o'bJ.iMj2X/o2PbJ>ZA@$95Xls?f-d]]FTDd^TIpMf<d<RHnE-:NR?9[()/mZ/Qs@j=+`d;oTXRW0h1Ne>Y$@%N.s<055j"58OW/r6#[I1DK'%5t`HeMDRPE>-b($eI<"FFI_Tp.9"&@:OKo:P`^eidVb2/Hu;i'7(ci,EVm,nZka<nDo2sSGHJ/a&Br'oA&D;.N]ks5Cpp%S`L`>1l!Gc:,>\:p:m+)'2SM'Ja4sbT:[G8Aa7S2&Z65-Op@ml^D8)CNu_0a5>='.lM+aqA@GNI<"C[aCd?/D1>(M3q^:;+@2iR,<:mrKmjf41&kPPK_6f/k8m1Noh:+aAH^<CMK%r(Pcd9V1qtM'n1!H4_1h)#haXEshp]3g@TC!35//oeRiX@77]7%dH[;trs&TVl-SQpPgBLnZ&8TMU'ZBqq@>gpW4jem_V7q4'B(E\STHV#`SL$/Z+_`C9Tqr+T-f_i?**`Q?P)@a&fH#9`%VV6>Pg'aJ`e]a&HG>JZ"S^pj>O=o@Fe$+;dm:G`[4fhSX"6m8E0YV%[5WpY4^rl8IhdeCJf<\rnc]fKT"[bjS*J6\W_Lsgr42(a\LR?p.5`X'kp,[Eag;Zaa2HHOWgFBd>gTJ!hV@=<>JU!s<N^SdnL!$#IqagZ%,q=D`s#uso?.(H$%>t/q?_1Zr^.Y7!qB77rbC`[IU#quJ4-.pIEOc\C@PC733j=lm?lI+/?n:W[i1K>N<n`,,>R17"4"ui\3j=lk&CO360'8HW[W?dsKo8W_aLZ7k`Oqc':u0:jCNJ^3OHUTRMk/YnRdq2_=)M!^Zt-S>p5Y6),5^ZCV=nHEcoO\<^=e/?Mi%P>H.HbZli`?NGLGMHZTt'>K"5Ta5Rqh"b^6H:<0@O)KGP/:IX+o6W'#h?6Uiu:4Clq`B?ep>Q](UD7eWFV>)@;gGLkDi=.aZlOB'Kh<MFT!kd%`>d$b`i.;i@oLn)g$OR!X+*;s]W!tVk-]HqM=">%K>TZh3WA,BM&?;'>X1u9dRnXpc!2)RNQYB%CRS?>uQ\anAnbaHq@92$hT2i1cKP11_Yg!',NUZ-Zs"V-dKeIa)d*EC*AW)n<"5gkl,BZZ)B&OWo<cLVS)YQml<dbf(>a&Q&9gA/NE@6tOX(Wp-<q:bN9?JYtq5M`pCmR:s8e8tSL&V?k<q;@tX%U01HIh1lUD,b<pl2You1R?lTF/Jr]qS#2[qj6V-aKNXg8\V4N%diAl@@Tf:,+lNF[WfNMbX7@8mpt%:QT/33<Gs`lc8h[Ho9WT\Jr,3Ud^\-_.JFPYGna??qnPC-LHFaF%R6S<-t7U'C-,$S?+gafM(\X$M2QVX,GQ/_R4$aYEDGn_L(G"94IDa!DFgghc8"\Zh66p9CEg0,T7%'309N_HI[,OQMk#@-DVOQ%oB,.`!SDI+T0hg)Cec;%QkpLG*?`cl^H@T!NhOri3l_DEWW@Q1o!%T2`0&=?6_tHUU(_[7'Kq[dHL8N>gl5D'3O$k9])Ic0@rH$q;67A0qDkM/aK6s@,2:$41?e^3.ENY-p^VE,20))2UpkU6@2;@`kW*n/:a!_=l&CM74f*N#mg;Q2--G@N:5S6C+F7+U%;W]Ynh?_(&;6kpOHu\O'Mp%h&cNe"7+G8ed^5u;h1XWA6gr)B''q0$>9?`mKO^foN)C2VFebGNo,HM)/YZ)Kcn>VD8F6PH_]V&Y?4L=u6O)_+dH-9!VGM/>b5LIEc)+qOEqCLQ@Q531?]M!F,$WlKJZL\>TAm_)RYqJNZoC"4W]MtA>]KEHY\W(AjfV$Co`._0#.,Y/DjW1`O-+s20=Rta=\=p76#t+_Lf-5@g*%O!S>V+gPd@#'\`K?Z7dabh:a7O*_^\-4hnKcIh[r#-YK!&!qrX(!7s#6I@Mup@)/9;*G;T;R8E&[M%N@+Ap/jMcjdhdc2b`%(Q-Hs-Q1:7=2Y#`-Cd21olkulZJj1$rms&V-)I6j_N'nu`HN<qkLDd\?SL-eYf$n5$D\;eA&16(:Yd3TMe\5dIJY%HpK/_$UHZNB]roY53HuW(Q`-k"j\@G+]kAK?7[.h:V]^^ua%!FY:'2kWkCGuZ)LnN1/Fc<7McfBL>MEZ:`DENZ_j$Ae09[6`_[]"W<DY&+k^Ac&2VY_*dG[I95oK+u41;:s)!Ol>V"!_H0lTek8Hd&(J`S]g^]Fm+EK]UmsE`i;W5i:6/b0fsl]+TN*"-IWM0Im_Id6!.PHJRieWgO<0$(:d0HgX#,,haHW>0PJR@V*eJ.FLUbWN4U-id>N`e'i%8QWLV2jSlof4A@t4lcNUA]Mf_r^sQK\A++elHJ?5]S"'I>S^D/o)i@%]e@J,LZsD^(*X:)HU9$d4A9,[kDBuC?-A7Hd,2WllFRau4972?IcGl6q/Uqtskp?s]]TIW%eEkh3+XeW^.Nn47J\X&QC(D01kj"n\R*Z=DV53bYcg>mlGo8,_\F*^QIGTi.m9>["niKR-F(7Skhn0@&E49jJNJhZ"dLVB\HS\N.ccgPNRrJSY3$2DT/4=jKT1hA)<fJJU"QUA$?_I=cfs`W,a0Xt&ZMEoKVYhN;ZqsDdo398kjR\,^@h=<p=`A*bBQ$^&i)t#"eG1N<_P<d*J2MV&Ls8Csp0h>hR`u3QYUJC_c*Rk`:Taq,Bh)arq_.\@?>=1#/FF/(kRjrnbE7f3pX0)E^XKaIr\>()]#IF_C$X)ein'G!9e*C,GG6#R#);hZ;sPkCku-#eEN\<1]E4QaX1_*&e_>2A[%L;Z;(3R$J$e.pIkNRZ;u~>endstream
Gau1/?#Q2d'Sc)J/'c\0:)_(U%.(.=d^<8dAL["HUractj+UlQRo]L^4-6i7qQW&G-R=9FiH`b9cZ'5DG`_o0D?*-0*$,b9'T+C`E=bKW#*WNcCI!&=`_!tO,`Em@diaV?(k7=MK.s&t&j[)j/5.i*dY-a;!I[,HGEN1>$),uoKC0S@G(a;?(R4uC"f86$W3&(1i[5H/48*k\?K/<\%K'mt-]n!:P+I-E/%O_AWZ"RU)m`GnJKO'hpa>G1.UFc>II4h011/hAWf9?[YLH$$JE^8>rZ_-eQrY&k%nk0l$FFK2[Ut!H+G/r5K#Bp,jBb@1?!d2\Le;9Ri`7TreB:<Q\&8[Q9"8Oa`KtNg3L$YKr[iZ^IKb\aC(5r+mV9?H<gFm*n2L]qR'2GsA@WI.hIl*P9[=$\QsU/0/Pnd+!#MOCpuK3K]DTRH1r>Vt0eASn9Ard7%'Md)_Iq,_PtMgcrK4f-JbkXNbgupaSW=5:@k<r*#&A9:EJag@CemoqM2fBJi+7ac*6@+<AC&(_o#R<jUSBP)I;=3pP%`s]/go?O$@FoYV7rI=2#RK6<`Vke*Oop8Y&Dc&ib]!b(+TpAK"I7Q&pp*9^D08c2H]f.m5KmqkPi`jBDbN4%[1ftrGnh'U67J?cA/D3RTlVZ]H6p=^BN54JR*6,hTF9GkJd8W62W`Sqsk!ClO'oJ>.]B1h1DEUg0tH*7P*qtK8.V)9R\]X"5N]cgjZe5I/J^ZlkT(m<IZtWMCI8]46J]$Ia#IL)ilq-V3[+a=q`9/&>^Q7n1R!;B0itQ!;.W]aVfZ-T?m/c=%EJY[Q_8U:uf*$FX]KU%4MZ&$%JI@As]FUaa(*n_OT&]9:=Xi9%Ib[[n<hiehI&EN,tQ"(#"1D@=F]Sl*ac?cO*tL$@#icbY@TNjrfWi8JsYhghM:W@NMc0?NcE@8YS$a)$U0*UP+`1[q\I=V.P3r@.5+LR(%G~>endstream
endobj
81 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9$AT&MD_`PtL;Egp*cQ&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:ps&&=X(PCeL]7-s8G,Z6b]&CVFJ!om<]_Oaf@33/!:]XjY5-C*Ut>641HTb(JKc.+9~>endstream
endobj
82 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`Sh(gXlj:fa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#B]'raq*pZH62`G1DsFgA+6hs6uHU'5'".RbXr2MH_7OtUjbJt$1U9V<CL~>endstream
endobj
83 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3476
>>
stream
Gb!#^>Beg]%Xua-^tX)p#u+:ko^(8[G1pOiBq%$KmRtjfa>.8+;']/)Rq*W7[kF\L-!;&,l#cWpW?[T.^^hOnJ5CdUO-9J1h>t8o_#0/n$A6;,-lUK@E=T/g8)K>k@]$"9_pYLgVJQl62&"k/qU@OAdYV+#pi_=TQ&:u%FBI=L6H/+JZ;eXS*/RE*gJIT-j#,'[l1j,X8bqWc(hL\n2,4hmc:uGkGk2i&KuI+=Uud8A:)#"m%>1/0qguWmn@Ksi.!]5$^VS+FO?<_"JW&pDpKUf]#sU#@l,?kr1l[[Iq)kEu6Q[@?(p@/.8bTfA-K+aMLBo,j8X0=t.&!ZDohR89"J&]u'/ZF%`W-BF+hF];r=]Tt(q*i`9[JW-0K(UN-'Xh;^][7DRglT0<]-R^3f5+4#J"Jj_m8HpCm<Mq6msu#S1*'DWJ"^p("_6_O0q\^!NX?4o/8RFRid-!mNS8NF#S9*c#q7*0LeF#0-0eQ#HN.0`a4lVoC%B1?SD4t_W1*Vb7g%TH6l&::n^#-:hg%FC,&^iJZ-"C9accV1KtOIjsUeEkmWnn';dGc:)"FP%QD^qVYDV'W-6c4OqH3:rE6jgP=I(^f*>-LFHj(B*^JB-C+l7uFjTN1CP6RaILWmE@#Y37M-`V0F4`%Q3ecsHCDEDMOrHu,YV#G^`a)HG"bG@-%<l`;9i04H6;;2:6M\f;gd.#_nXB4@8sS*5Bq'l3fUWF&noYRS%hAZ[/.&IOSa4sP.05bL?*-k'S2YL:=N-uCEh+JhNoKOYGLO)*G*>u^Iq-uR#DGZ`//6AFM[MXrgZUQbbKlJ'pq7;8Ose6%bU'KXimGR4MGZP2`or[6n=.&tH2LXab4EJdMPqJbDu&AG$\fe%Cb"La@jftU&kGZXhFDm_d?al[ZL!&ad$?g0kEfE!?h&@\BIVC,3%kG`$(*)5rYM<!7uie7g$:jt.YOY>G$)$tj)6<gr1i&LThYdWj5L6P)^bp$57X+rq<"CDS^,.&R27F:8a7jT:;/(6JBge)o@0ZojL<>%gMDQ#D&`e2/4PMI@AZo(3Hk[/1X%-7OF;A,O+07s-Vh>oa%[_90i'?shaR?ik[p5PS'7Fi,[R^hqK5&A;R+LG.1+bM&"V7\i_'(EA.'Nf(6HcSdYYV^cAG#ZW4g!UY8?61*0jo*PnPuGpGL&7+q0_L\G1<ZJ9R>%57FRPJ=qsuGq?KNiH\&T:XI(XjE@ag7YUVglHk=:0rTrniF<YH88jHMr^:<3!KGGpp?2)^GK6X!5At`SDiC[L=PSZZ_J+`;6-iuEA[sJBEDAU]s$$m@:^',j&J%oe:dDnf^^,Qf7D-OqY=HN?VPYljrqu]fM!/ebeTpS+eH5:)_dt_olN=Na26BTS:$EfHl9t:gI&r(l\NY\]eW?L`L@DGdU.ns9-_4i"8+<Jt0X^`W5*Z4E!,>t%V61-\PdrDe;rU\_79=QZ'iJ*D4+pRJj9@!OX+t`n;dTQ'7n+EGqeN4CAeDYBctgXHWD`*\X@-4B/8$V`*ogSA@LNik*[0Hh"ZN.DL\E1N#U1X=qb)r2&JVR7Z0f$o$Mo*L;MFK8;Dof[d*l`^jBn0@pm@u63(VbAe0DF"S*-Mp^[bk+AaL,3]8_4u3J1\a_B_9u7d9mg&/BUjd#V+lAkln_C9>UF$\o"Z/`*+dYg%PC^cW,4$YdQY:5cW7^oK0!n_uVRD+dR[92Zg]7GDW::9lgfLc=;Ms+OA/p1l8$QM`(gH$b])1k+HZr\:(u&.-i@[VW2f^gJ,2P1n_2.*tO'1ad-2>;RVn9/PDeZT-a%_tM+Dm#A^3\$n<Q""Fr>Z)H%4)l.=?Td]!"HkE7'\a\BUZbfGgaIk'X_dJK#GC9nLP."j*r-'7C$uj*!IpO)qV6)#)L2FBd_l^rFI`&3[C0!%B>O:H]i0HArmG4gGMpI;u\nT):q8D=%4<?!M6"V=`I@\Q0NJdIYNj-U;L\m:F8^a&^HUl(Ld/DV(s1V&\P\S(Rl_LlS'#`?jN$SVS9L?Aels1j@[__s$0DE\soA4J5<Hol61\q4oh,*R2pm.hpW:.0Dl:'!e",:6uO64Z);@&f]i-W:WB$IOM9("FHp!R@F8!7\6EXW?%72#Ac?@=qjchoCh3B41"qrATO@Msa?NJ!^qg-'<jhKjS,h)OhFI_R3V[^!_KD9o!M5pu&gb54-Jctbn,gqO`Lkgbc,*HL8;O'ZB\p%CqS;f?(C5Yj*UpeRf7Ja/Ju+&/X0!=c8=#Htm*Hs*86;q%Mb'T[3WIW9NcNfk+L7Xij/dt:Ik(L>#s@`#'</o4g"cJMnKR(5/5K6sTpB"MlL.VAG6K@<SQQ$#gin2s9oNbg?)H\MQa7/f1aQ,SL8EVKu*`>U4l:X7;0bI2d)Is-iY!/7)klR2T@c.-IGED]s_67S(D;C7AE]9`BRP>iT/c0J-"CLkfJf*:`Db#@t&SuNluN`M[]ZdE6l2]5U)L7kdM-6lN'6tIShdkVe@>05u`&6<$m\mX1(k".%3A)'QcLLDYEm&:n8b*LSM.B=Xe/LF."p55dP2IWN^Zl)_1lu#9W,MFYlf\aGjr;LV$A;ops%-R/Bs0fnb@Pq!6WtrNf<^UYs.aN1&M<SQ`8kuE@mfU<0:]+LVpr%Ajp/"5.cN0kaDg*o\-4<ZC5Y4Lafu27fr^JfCS(31KL6/SAn]X7Q]R;;m_GaBid`qFI)atpZK[_KP5rI$s(9o6-!@J/*a1H;[5Rs52I6<:-*,["8RP,aY;@cK$aG$WiSMagKMch8'*HM_g+i<onW1@+?>."]fXV+rEI*lWXj1a_""\bA[cjL&N.0FuSkGH?Yg9Jq`ZrT7nB*6jYW,I`@n<rtNFEMX]L$6f;rp6dF7HQeI&]h`Mkp@B@4n)RX:o/r/IU/=60C`lY:u`\/70TPQ-IVB;UUG=OiJVOmKh;.aPL"([3r/2Nga5U+?om8O]BNb#8F]WI=^fZ!!E;[r#D;mNOD,=+4V)s](Kgl+=#8ec7?bRa5@1ahg$#!7-.>3-J8sdbZ;T"jZ?t:S%N[Y'8F^K8qfuI\>X?h1T6j-j^[_4YX6!up&7Ig9(r!U%</<9>_c(Hjk_%,aV4G`,j;JQclHl$BksoJgLZrG4kqA04QS2;?p!n0WfM(`.P1.Hjl"#r@6p+H5K1e6^WHB5YOm/Z1?+AC>=:O^`K-cFCdp:ODc\S)Xd$Ch?-[#?+4`Q*JYO+l]j++EI7b5\)/IiQW0XNng(NuTRn\fG[.Un+rKI$&N>9>'jMUUJW\-%10l/,A'+@OR^EF=T,Fq)>!-cIoTc(E_B_9?M(Kdk^-;,-Ckm&1L/GtFc"A(O^h2nCL*>uua5kc-=\>nqZQ?JR`V^85MR=_79.nmNn)@s2_s@_@$>NN8M6lSC&APn2u$D["?ALhc1?g>@q,FqZ38TjP+X'qM0'U.Je>1l/-iFu#`h\I7,t"<84^7-ul2\nVks_UOh76rt'QP@^W/*39>d3;O`^a&JT~>endstream
endobj
84 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2971
>>
stream
Gb!;fD0+IA&cV3*Z(pGrja&*W^+2.6X-<=!cK#TcekJ5)FYp<.8[Kq0+XfG?2?1>tP+j@nPX*3*YN&2B&;ttQZWQPq,bX*<ao7nb!FCdOrL!Z5@5J'q.OL,2_:e&9o+<E"9hV`s9/FDhLnYbS'?;,AGEK+4PUpO;1@KfAoLR0HPPGf2,c)'9-l.c-.)Q0l4O1_W')F7W0@*B/Bc?RZW_2<=.l6S9(F;]9U8?;b9-W8_;P$YC,e@U:<1PA#0,T0KUMC]p&,j]#?SC9,SZjbh)$c,`rKDoR;3J4Qjk8rkrq;f;;WX?;@6+25q<O7$P(kJ*%%`IU*_dOMjZ>YThCD1#5JpkoP;so&#JFb0U'J_2/ms:7:>d#`*+N'Q8e:n1j)I(!@(Jr3)":08r#ICR>`OnDfSp[Cl7*8fl7)6ImVNI9)#OHUYG*^^@6,7]a6WufPQ^uMVLB5Z_MVi&$oOo7.mKiO4oBH,Aq86VC]r(+'uqJX!3_g+E#$&/pq.'1Smt;JnbXs1(KV`iL)g&.roM1^>6K<kh4VoY63;=#OS7F*\t[Xm(4%I&-@VJ*2._U=*8+&D$0$jpe!bDLa)05[/Tc2Xc#jlc?F\D]jXRb@(&33E/m.C7_<63REO-Z`26ECs/ZH7Ip.sA/3"C=l"f*u*R,2J>2tL21nHZD`LNAt%Kh&1Sb)3obA,h<"ib@>G"/2>ZdO2*b+Yepuh#Ye<I(2._5<6D:=-fG`Ir=VHer5F_gq8Q>\?>+/dF@j%o@!lud_od)I8II^lXNnaDR;Q`'0f/N?p'&M"Q=u<`^jb;XU[%ZF'-d7A=Q#Ud+Jj+YGQd5R!&(?I1"FOjAE\m<H#<,V/tKI?W,J.b0Xf4(q+.]qeKu-&7N/QYEtbm="PNi\E6_H'kSDR@Q'*g0YMd\HN2!f?IWWST`%@Yl.0Kk-`OK$ACrXjqgIH;]&/[jka<Mg+f5*krs3gGE\e)t3tP6*\6m-6fB\!+n-?"!7(#)/P,39u>f%A[U"*W%rW)hP"h;*hJ71X%`(Fe[B=jO=&.>fKI3VJ6>huUm:lM*M3A)_?V%69E;N4M3E\YbAL5J`J)[=62KYd#%A1@N/1q(k$ULXd-W;j"j=_;4Z\oSNt6Z8^Pa-gUf3P4\[N,<np?aJ.Y4acol.ndTZ&uk&S7e?p'Uk&LSF"j)i6p4<X$P('*62["EMo][V'g`nZ7;"W6oi^70XitoT=)?,F8FP#-g7GPdVPBLsVU,Q%^/u\$`*&(DFhCi/4#!mT$'Ah"jI<K<"9@9RNciSr_lH=_Mr7cV<4bGY&kK#(06)L72p)(0>e9NUkOTD]m1-)&Blomm;)1\d^L?P>S8ZDf!+<(MBN^4g9G.jbb7;Ic47?6a"4hM'7I"L>COno%:BV%X_T.7>'mg2$,%]GYY]T(,>F^u2H%D`J>\43j6^d._!%:5%d4hP'd$I*fb,W>Zl-<I3*`JNU+IYY3mfLCHSd#VXID!')/XIb#=S5;S,Z9pK#"WshYL!K^.m#Z)ZCV7,F6BFP0iS<RM+"1>hhcuM?&.CcSb6]cdcj(`;4M=e!6"*6Vb<jcqW$u,'WihSaN]lQ*)a3c#"j*j=cu3HA9K;'SMtXN9V)k0aW:<d2tYCs?Uo<KG$;=?V*W=0r-*Rb\@Q0R"R<aohAds[gm*$[E`6P,AcS0#f2frcCTTp*+_b@1c2jqNfIXY=fWTI,Zg>OI^Y4CdZAWPB+raZe^K5`c[I1gK^!_J6FbdN(J[nWChib1H`=l_CXsnH@)]O-HI@0nkkV!mEI`"!`n3qi[=SI;]3sma"VV(UhBK[1h>e;9FHrs?Yn)A0T\+BR];MJ[0Ue-mM&aXddg^iD+Y<7"^:)!Nnfc;mjS/#lgDm)UfP.0dpd^#p&*`o>N0VcDF:G&:-bZsk/:`M\l*#'="h@+jg1\&,Dc4C!k(=A:&!n2PfH,.(4\n#c+ES`Yubu2-sLuCP?El]jHa*jP7FI5PFNR,VjpFDoK:8u#NiSO:ql),1P>pAf\OB\ES?dd2Z=C.FkU%\tPHSDrZT8JQVJHs4GcB8a44/(NZ&-!VJcL7LGbF?Q<]2l"Or"'*&TR,s*%9GjB+R5X#M*'@lCKmL[n%I4H"4hhH'Ab";Oa97aXqIAOnC9(HQ5PM<?0'i%.sqt@AFIK%Idd(R^;uiS?O-4\"k=DjF):fs2Jd_0H=).MkbFN!($_N]e*?eZZ<6S]5JPc+X^"1W#SFa%GA;4H$hjs:[mkl'`FWrMa.(<VQ<"W?]Jt5$d!-^R"f!$FU,@l(Dd4:,1Gr/=4a!fB.e^p*,.A5Z..O2T4BuH!&PYB-8L2lA\C;!hF8UjsRYk)UI#9Pna3T5<0;7u'_Jm12+hHl:>W&ctSDFe-&LNI`4W)s+R!>dS`QZCpV*_1UQhWC'+u8F%Bf#c<DO$#\'t<@0a_JICqVU2+ln6i'jW^N_BDHn=m_%Ya;7cAtem"A'=N+X#)A10a7hN[h.ad\5H[\<*s0H27F?WLQ4BpY-i:cm8_tus+q;i++%P7JBW(aW1OsH*H&#dV'/OjQAb<hu5m_Qg6VW2J_h=Ku;U#s%].^g=cg&(cV^e\eJ;>uNig+(u38+)&'Uh`.:W3CQ;$G9p%>_&0sc1Q;.h-,7@"18sUp"'%ukcWnZ"Pl<'b<-RnI^stS>%%UCklMsh$Ri=U3qVt-$F=3l%mBW_WQ'>T]h88]c$Y_sD2>%&6m8#PB&<N_iFdJS@%H22/-Y^aWW5tnQY/(MPYEpdUe<.J(bMQuc5+KM(--"N9/%PbAn]"kCV=:&^K-7$]IX\'m+4(1`@NIpS7'o&5[a0bXQ0q=eSeqR/mYj-LJQ?3XkDk[;lWD[r>Snb(I3W*&)#lu_=<[854u(ORTC<.GJ(+;_=_N!7'CH=R);#u4ChlVK'kA-CsDm,JieV7LTRGUO<Hfj9i;rEpEgjE^RNFn;]?rUOh+MnZj]GJ/nV\hkTIgg/FM9VqsKaoE:b6IIMPf~>endstream
endobj
85 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2836
>>
stream
Gb!#^lYkfA'*"Q<JmT!YMhD_BGCX(`lt.>VY+*E`M?<ns[*@7WaHB0CH/.BXpDZ`1/Ba2Ng"l?5,S!O`AiMICAgi7)p`]IjaTA1%+Yl4o6mrs;,%>%$%<'Y=nDoWD;QdAIm.u`V,L>tcBa$CW#Li/bWFulqL'pDKHJ&!`oC6<SCEbK#VtYS$8<2>5_R&S62#N)_5:S;#_G;*uQXZk`'20fT`)N?41OkV?msKMFZV^PAk>'E0au$^a%$mb.IPbD=E?]"0A?^;.P&NHjR2i%Iq8Of1QjB#&H"O^9%f+;EaCQG.ZD33(qs1<W(T?BpZK<,b(6-gb%1sY1d+GcoCC4D8W-/+TiKYT^^SY6iR0YW@i[fr]"aZSlP"/q-d?HkN+P7Q(;BDUj6btu=R@#1#I6SQr7MuIP_IH\87d>1XJR=kc?Pt1e?Ym;>`$Cs!*`(61N+KIK\;CZ6OR(KN@FM-?@j,XlY3G`fK>mt^-mck%R,`af!N(O]kaYaGE:ioMOAnI+'&0Q@!Il\ei1-<sR\/\/Ycd)]MJaJ%Zu?.7\)PFp[_("_Kfr'16#OnrE]HpmS_>7*_`m;I!6R6sl8r]YMdk:[&!?^'.Hd7D/_e1O$'spRpMMG.,i]?^p#f=7FR.hi1cX2.*5;u<qmB4D7V\&!)h]<3ku@J4V4gaZ*%QcA=bbCNqMn8q"QcJ+AA>OZp.4JC%#U_8D_Tn9nUi%8b:Tk!]h1Ff(+dnp=YjurKJ^hdP18'c,[7IDK&4KRA?IMi4-a>*Bto]6*:ElKc@d0Y-?33L^c^FkE31^/)#T^GDT5MB[J(Q.1l_GW5@)Y7'hXZ<W]'Bdg9C6rVt)G$Q\%)rfQosb"M`hhYYRF:+fP3^s60[3R$UhH?``iUN$:+"-d;G]k/Q$8H<kAV3uL"=C(i:)9u)T^Rt+?j5laX@:8/"pK8LeJ6"*;A>n*fJbI.e*W9J%n:B0$j3kMPI4caj1L@#?g#Ld_05%I*NaJq)hA!FW2+953J]sD<Af,VBoiu/IZa'Jk\4Aa)S>ZsiNbYeG1-00mt\iGF?b[4p61*#4m.H2r$JT_IsY:4P8hP,Zt28G>ifj3;833lc!K15@L[rCI+ql@QrS&+=bC2e6>&;mULOh\1j)F;rr-Ur]cM3(sZ@lAT65\=O?&Z.<>,R5N_GS]iacFT)1p&:pj\R0:D\eE1":$-ioU^iD::$@K7bXM=%f%9udA?*0B'*hQ^r&DF*RdXG^6.pdIZ34'C/4C3=(Wc+hoNN44%@%Lg)@@TF?%fIX4l\M6L[<on<,bN\c#$7Q?j1m-"dS,WQgC[c@,3HHHRf9bJ$2J<5@sdcTg*D-8teK*@k._%URjI8e'67d_i"D,D\icmJCUX1)]e2t400Fc:\l+Bm-G-4pgVH92@i_'7*4L==mcQ2CH&aec5+)bDj^[BLrf4)Tu664b,d8Xh`tq@kO51=2PeY;ie<L1e?7B16gYd0(tB5+>>7@TX\HTE(Y#Sn[R9Fs\fGOPe"'=i0jRK._!6R[Fo_Q-$[RH!Fu7h^_SN_8aNY2Cp8t&He%WUTWs(YKcdgjtBY4bK.2NnSfIjVdq>:tX-^W</&CYZ7lKAMhY#aopaF+VTn%W*M.DjaHrm1C,>0Nf#C]W4/#(s+s.g37ZprFcparo4DdO7Fu6Fn`@4^aUf=uCJME#17"]tc.k#66Dq5G3)`J53THgYOU?"H#]mL\LH<O2-/A.I1KXrj;>P?[oZ-@QqPND\-m-Ic^;ORq%C$!L8Y\8C$lNL).,50LgQ?7=$aFoc[2;N?'_!eNs$0p"uBX6iTSIf$hALZbuFmTCfN(*6lAp-K8ltignp0M&s1`I4BDa`>bg!Q"OUW^sY#meufK=`;ub\SDV<E^;CN\n#*N:i6^ehVB#Yqe5_"p/t?8IXVXn68`(jN,[&dUDu7;],&/$i\.$T-#"/D`,5jDbDpn)W4Q-l-!$R3\E<W;XOnD$PL0>neH=;.0=sk##>jDO"Rd`58?Z05Y\f54]li,"-7r.);$ek9$HUYQ8mjr0)P@+Vff$5J$"pCFWK)R(`S-c,F+Ie$=H3r[QQ2ME(F]/R"CJj&&X4N'j0@F5bi#H&&p>u"ckek[$mFQjHL!K&oomI72d9X"Ua/p-LXDpIY'".gj3Rd5O;k%0uS^UqCjj$2l;<(Q4FK&cb[6NLji:\(@H"F:(70q<k@>15=(s3<(Y[Aoq'd`O,AX]LDggHs`N$+0,EB%A=Jpj<OU1^N,!`QmCXbf@P,Gg,!BcYNnB$FRDX8QB<FB*8baYSeA52W%Z7M5\>8f8b!%K>WH$,#]o%.Tm'5u5g,9nm4?KrSM?`B<,lW9daaB_a6KbZPqW8CN'\9d>eE-m(3"ai4q5hm+9cdoo`$YgO5nl_Zc(;MO^XbIKkd4D#HQ/Oe1E#pd!_Y$FUO>OUL[S+2fClE.s1EBl(a9;hYk9=O7>=a#!)ekE$=m:4n+%%Iaad;U4E)6KTgrtLn]K+Br'AnMHnrV+XDb_!gm,DTYkhPqEG:7l,mTo?F&j(1=Vj8M,V^3?8ZgE=SFIb9RLGKXt?Aol&AX1'snhKPf3QN+H.r%Sck-7,;@0u:F4Za\)`:`:-ZjC4\>Wr"s>Z''[1K1=.Y9al'AK<RVji.C2kW]Q^u6h#n!'WZaE0E9)^4aM@O?oDcG9F*.8b+DMp5LgG*I3g?\%Bo2n:s35(6Yl4h4H5N5>e'@XAr")p<@0%L#\`sj#lk$.$[P=foaP(MbBWo\MnBa<6P)ld<GOWo3G.TiVUTBZ9*J)l".kP]e)W&]Hf*qcfX%9AE`)FLh;-8H":^U_^"W0#bJV9mHiSBC+`L1+<Le@H5Q1j/FRhZ($P8@~>endstream
endobj
86 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3359
>>
stream
Gb"/*D0)1;')q<+dH.C?31G_jiC-:AW@ce=a1IZS7oF6nKBcDAN?f.T&/a*jVR!u8H9bkk5_,A@D:NLFYlce(:\W(T5>Mef6,AU#s)urnk@9UW<)<m[(SL&V%c^W03Bm7\U2G>CL1FJBU-lD*8W)*JnMtF*#LuM6WkiohWZi>?EVYKB-0-NF-X=OALtd:j!E"[+;9Y'#oUj"q6``?:Gm7?:Ye>aZi`kuU+u=,[`LbiMDK;9t4e!##h!LOf_>,DL/Mrjj$[9,fl24%j<jqHq%i2<<;j#gCTD=G`4lm7&n<V@XqBoo:H:%n_p?+9&4G=(b>mN>Ec](t5LYQ1f%ZfNcgsXPTg^ENKde,iFK#U%99_=]^F-l^lh`mdN>Ub(.-fl@t8ghW?Ln]+4`0>Jm[B)`8k#='VKV\2dY4E<N:!oUO[5j[=Vmifr-Vk\?LfdQa>Tj]#EcA/Y7V@(K_e20P&_KA\:C7R6R.&ii)N/?1).,Uo97J!:fB7J_.]h0i\"b[Z3"Mat/E8-'Bq]qR/?s.CY%1cd+`lh,*V!hTZ4GIDZ4ks>MFQ7db,a%8;QpKHR&"gC]2pSQo]t`.)jmo+4l!Sq<AYs?8^Up(';OujqkH]`fEc\CoGg3/At4$\a2.Wa0[IXN.`g]F!UW6f(IV#i4pT6$"q04n[*7BVgk9dc_R7WKS_r(nI?L%"=P2HJ'4MfUq!UPJ`F.V?64Z-)#Wi!:GhP41nDo2sSGKlSNe`Kjk./UZPWqR[Ifbg*3m'7/c5`F'3R'[/gAc1C9K_^7#-P^'I=@W$Pc6ab>F\0qPMA.rqR%I1H`WT4s/D0a<Q>=X,J0od]t/i6AfY%ZOMM,;ffoKR#i#+uUn[lpIU>,"VFWJB!J[T:<(`$:1d_@:l^:As!i]ssT!!rRp[KuNUDl@QW5O?!-DQ[>iWg/H52.]e;:\0n`T^4s]7%aC[;r\3&TY-pSQrgSW(WYi8[?03ZBqpUSC>Dtjh$-j>@T1V(N56OHV#`cKkLUe_`UEVqr+T-f_i'"*`Q?PkRFnuH#9`%VV6>Pg'aJ``Q5K\G>JZBS_@-BO=o@Fe$+;bm:G_p4fhSX!O:?n(uMTY5WpY4^rl8Ihde=Hf<\rnc]fKT"[bjS*J6\W_Lsgr42(a\LR?p.5`X'kp,[Eag;_91D6-,9[T.F[[U!eZ9H-Z%"7^]6*Jp'l'e4^mlm)11Pc4Kps*Zkh/CN&X'oIKr02F9Ihka2!r=B\5b(ERHT]GPl41CK1I^pN]@PC73)Xo4n^bh-g^oOgCK7C$)YL3Wfau/*Qg45;Jf76po"!P@rj'liX`HH(dWc4)/&kUPoZ^A5.*3,E0HYj8k'67!GIBett?;nRIo?)ce)Q'<PQ/3+9;e07K\Wi\]l>$&!ff,BS?r8WY2U?]O\"1=>ohKhgDAK2"7PHbq'?EJBP'O6RKLukcR.0+ObqG+b)3t*g@*$FcQ%t=pmAq40ic=QoG*+qc.;%QZd@=KYS#^bFVFue\p*rqN5r?^9G%aSXitSsS=@>pJ#0?HE4H=m!f7A]M+^Pek%K[F*3fn!_K<]hW-]b*DIi9sUc?R]pe/G?QR9-q*;GL;pn6C8*%d)""a!E&9j'.:D%?f5i=gOO^+\0NAF;EM+>$"4Ygi*r6o:T.KD&l2Hg7]f?6:;708iY-]JAWEbR7MhN2'#am8SR>ikCa.-?sb=7%H_HXhg9Sq./\2Qd^p=#/Q:!g5=PpEL?F2I4ud@!f`"%<41%knKr>+#.Ett`A`QP`S+V2Zf(UiLDie=e@?Z(=T,lY/ID\%(r^8qq9l9?L-(0N,8`%Rl0/%=P,-0S#U7?9q9BIn&X991En"k$;>>jl>"S*tD`qP%4bVj[nn/Qm@#>rG9VUTdRKXuIO2A0<fTc=m=;Fa26\h['i2rgF^+UoSA1:T&'D;:4RDk1CjmCQd/&D'<bjZ<8Qb$Q?2Zhu9VLF,"`DcYWSG4XkXIKA)BB:hNU4)@YRS1uZH/3?+mGCFf[4WHhgLNJOijAZ6ZG3!)hV26Fdo7opcl:!(8$7U9L47q6XkID80gjNS(]6*unMq_Q>Q(hB)!VCG0[uafq:dhaIpLV_MRo5D4o^NscaD9jmE_(+gf>B/"!7>lWOJ+psGL@-:JU:#@nD=t@8kP>-Xdg$S'gOTKPB:l\!:nL19+ZcQ'p+`W@MDWa'G:>)A>6#[@]J]mRr1Q2R\=rd&d`^s_6"4s'uE/*XH-TsnMT.F`qbTh\/*Jj"R)0S%]"9"b@(r'$nmAh`$U-._<CGY#u`621$*k*\n4kq!%E5UIPDh$XtN;o*KdJL]KhXLZ;5Ju2U03o.9`5\9[t#K-B>T^#M?G]CQ`6A;VaW=ZOSPni>^p'Y/a)K[ti_gJLi*>6mk!+2+4F6"mlk^Em@TNBZaK)Nne[#;^;%A/>s-rhdI7p`:)Rhk3n*I`(/k4Tm_"(mislK=g<qCS.%9,^cNHa6_s3l@ttL1@s]aKg<r_ikj*u#/+R</TZVN'H(0%u!OaX6GkMQs(r7:%kBFQr*0%*U>XkHNq)s9,^;G%ek"_,7Chmc@Upl/--jZ#Q03HnMmV6)d^HbT2X21:fJA!rpH2mJq4MJ<S,3$>>@bf``_/hPU(ts=Dg0akL7g?RFfa0+Ub-`1C/4<>!ZT:QTQ=obP+@RBbIQ&=cg[UrX!@DG1&51M:FLHHW@UFWE*7OkD7D(9OG5@f"!#a\Upjh,%O+EG"^i^d(mlb:/bMmG]=C)<'&&Rn=?TB\;$_Zs)#j(8sgK]TLM2k-;V]1nWLhL'^,!E!<K48@3>!f*9gR^K&%Z.X8Y8/osHE=4$.n-JZ.Ws9F;4MQaDL-'"i:>$6NSOOmPc$!dBjDV#McWN'(HC-,IdEJ@:MUnODj)2,V_^A.Gsd_XPZl[0Q+CbdbemhW:mA@9KhTeeb)O?%gOp+N60-c$OtM2;AVjKmgY!F-\`N9t0\ljUN]48IOd[<f/d/#(6j3]7-4kD+6L=e`)BE+J(_bW>Wg&_hs17$H/MCT;&D-m(O3_%XUjWW6=+7%REc,\aqidB*!:El?VfB!/=o..J@o"FDm$ZO%@l',f)Wua2RYb\grKDe&dAl`PO+@-0lO/qa1]$h,o6Bo_?8c.Ra-?VaMABs+F+3GbS%RU^]+'@R2%*0]!UU=g#2BU3ME2iu??d0K'sK"q&Fm%<R!n1#Nb7m7">%\SiFU_rfI,:&=(t$5jng_*;I4*P,qQK\V"][KrT6XPQ$R/"f'hj.D8/aIS?=SFESC7HSbR2M6'DYWpeFe@Dd]LS2ROUsO=it](rn,?jV?G'=mZYZXkop<3t'c!#MP%3QYe=RX5dHP;#L3@[c2;bZu+c&DV,.K'@js27L[C8<@]udbQ8Z`*BeB45F-f93<~>endstream
endobj
xref
0 81
0 87
0000000000 65535 f
0000000061 00000 n
0000000160 00000 n
@@ -483,62 +534,68 @@ xref
0000004531 00000 n
0000004679 00000 n
0000004795 00000 n
0000005216 00000 n
0000005322 00000 n
0000005442 00000 n
0000005526 00000 n
0000005604 00000 n
0000004901 00000 n
0000005021 00000 n
0000005105 00000 n
0000005183 00000 n
0000005389 00000 n
0000005810 00000 n
0000006016 00000 n
0000006222 00000 n
0000006428 00000 n
0000006515 00000 n
0000006832 00000 n
0000006907 00000 n
0000007008 00000 n
0000007114 00000 n
0000007221 00000 n
0000007379 00000 n
0000007478 00000 n
0000007588 00000 n
0000007693 00000 n
0000007834 00000 n
0000007933 00000 n
0000008041 00000 n
0000008157 00000 n
0000008297 00000 n
0000008396 00000 n
0000008508 00000 n
0000008655 00000 n
0000008741 00000 n
0000008896 00000 n
0000008982 00000 n
0000009127 00000 n
0000009213 00000 n
0000009321 00000 n
0000009466 00000 n
0000009554 00000 n
0000009656 00000 n
0000009771 00000 n
0000009889 00000 n
0000009997 00000 n
0000010109 00000 n
0000010209 00000 n
0000010298 00000 n
0000011435 00000 n
0000014998 00000 n
0000017990 00000 n
0000020869 00000 n
0000006634 00000 n
0000006840 00000 n
0000007046 00000 n
0000007133 00000 n
0000007450 00000 n
0000007525 00000 n
0000007626 00000 n
0000007732 00000 n
0000007839 00000 n
0000007997 00000 n
0000008096 00000 n
0000008206 00000 n
0000008311 00000 n
0000008452 00000 n
0000008551 00000 n
0000008659 00000 n
0000008775 00000 n
0000008915 00000 n
0000009014 00000 n
0000009126 00000 n
0000009273 00000 n
0000009359 00000 n
0000009514 00000 n
0000009600 00000 n
0000009745 00000 n
0000009831 00000 n
0000009939 00000 n
0000010084 00000 n
0000010172 00000 n
0000010274 00000 n
0000010389 00000 n
0000010507 00000 n
0000010615 00000 n
0000010727 00000 n
0000010827 00000 n
0000010937 00000 n
0000011890 00000 n
0000012947 00000 n
0000013177 00000 n
0000013405 00000 n
0000016973 00000 n
0000020036 00000 n
0000022964 00000 n
trailer
<<
/ID
[<c28c36aeaaa65554ca8ff15fe717eeb8><c28c36aeaaa65554ca8ff15fe717eeb8>]
[<31f0eae15bf1213465266b8d555540ce><31f0eae15bf1213465266b8d555540ce>]
% ReportLab generated PDF document -- digest (opensource)
/Info 44 0 R
/Root 43 0 R
/Size 81
/Info 47 0 R
/Root 46 0 R
/Size 87
>>
startxref
24270
26415
%%EOF

View File

@@ -1,5 +1,24 @@
# Android Cast — alpha release & QA
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-24 |
| Last modification date | 2026-05-24 |
| Co-authored | |
| Severity | medium |
| State | scheduled |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
Last updated: 2026-06-04. Use this document for **feature freeze**, **alpha builds**, and **sign-off** before widening testing.
**Related:** [ROADMAP.md](ROADMAP.md) · [README.md](../README.md)
@@ -14,6 +33,17 @@ Last updated: 2026-06-04. Use this document for **feature freeze**, **alpha buil
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 18 0 R /F4 20 0 R /F5 21 0 R /F6 22 0 R
/F1 2 0 R /F2 3 0 R /F3 18 0 R /F4 19 0 R /F5 20 0 R /F6 21 0 R
>>
endobj
2 0 obj
@@ -17,72 +17,72 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 716.2874 143.501 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 762.0394 143.501 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 705.2874 182.629 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 751.0394 182.629 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 694.2874 179.957 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 740.0394 179.957 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 683.2874 157.733 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 729.0394 157.733 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 59.68504 672.8499 182.22 682.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 718.6019 182.22 728.6019 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 662.8499 138.0375 672.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 708.6019 138.0375 718.6019 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 652.8499 243.495 662.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 698.6019 243.495 708.6019 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 642.8499 156.795 652.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 688.6019 156.795 698.6019 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 632.8499 195.15 642.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 678.6019 195.15 688.6019 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 622.2874 170.181 633.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 668.0394 170.181 679.0394 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 611.2874 202.645 622.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 657.0394 202.645 668.0394 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 59.68504 600.8499 256.83 610.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 646.6019 256.83 656.6019 ] /Subtype /Link /Type /Annot
>>
endobj
16 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 59.68504 590.8499 258.3 600.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 636.6019 258.3 646.6019 ] /Subtype /Link /Type /Annot
>>
endobj
17 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 580.2874 122.173 591.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 626.0394 122.173 637.0394 ] /Subtype /Link /Type /Annot
>>
endobj
18 0 obj
@@ -92,33 +92,22 @@ endobj
endobj
19 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R ] /Contents 44 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
20 0 obj
<<
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
21 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
22 0 obj
<<
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
23 0 obj
<<
/Contents 45 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Contents 47 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -126,9 +115,20 @@ endobj
/Type /Page
>>
endobj
23 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R ] /Contents 48 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
24 0 obj
<<
/Contents 46 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Contents 49 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -138,7 +138,7 @@ endobj
endobj
25 0 obj
<<
/Contents 47 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Contents 50 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -148,127 +148,178 @@ endobj
endobj
26 0 obj
<<
/Outlines 28 0 R /PageMode /UseNone /Pages 43 0 R /Type /Catalog
/Contents 51 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
27 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190925+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190925+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 alpha release & QA) /Trapped /False
/Contents 52 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
28 0 obj
<<
/Count 16 /First 29 0 R /Last 42 0 R /Type /Outlines
/Contents 53 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
29 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 30 0 R /Parent 28 0 R /Title (Alpha scope \(what we ship\))
/Outlines 31 0 R /PageMode /UseNone /Pages 46 0 R /Type /Catalog
>>
endobj
30 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 31 0 R /Parent 28 0 R /Prev 29 0 R /Title (Recommended defaults \(both devices\))
/Author (Android Cast project) /CreationDate (D:20260616121122+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121122+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 alpha release & QA) /Trapped /False
>>
endobj
31 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 32 0 R /Parent 28 0 R /Prev 30 0 R /Title (Feature freeze checklist \(engineering\))
/Count 16 /First 32 0 R /Last 45 0 R /Type /Outlines
>>
endobj
32 0 obj
<<
/Count 5 /Dest [ 23 0 R /Fit ] /First 33 0 R /Last 37 0 R /Next 38 0 R /Parent 28 0 R
/Prev 31 0 R /Title (Alpha app sign-off \(manual QA\))
/Dest [ 22 0 R /Fit ] /Next 33 0 R /Parent 31 0 R /Title (Alpha scope \(what we ship\))
>>
endobj
33 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 34 0 R /Parent 32 0 R /Title (A. Smoke \(required \204 all must pass\))
/Dest [ 22 0 R /Fit ] /Next 34 0 R /Parent 31 0 R /Prev 32 0 R /Title (Recommended defaults \(both devices\))
>>
endobj
34 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 35 0 R /Parent 32 0 R /Prev 33 0 R /Title (B. Resilience \(required\))
/Dest [ 22 0 R /Fit ] /Next 35 0 R /Parent 31 0 R /Prev 33 0 R /Title (Feature freeze checklist \(engineering\))
>>
endobj
35 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 36 0 R /Parent 32 0 R /Prev 34 0 R /Title (C. Settings matrix \(pick one row for official alpha demo\))
/Count 5 /Dest [ 22 0 R /Fit ] /First 36 0 R /Last 40 0 R /Next 41 0 R /Parent 31 0 R
/Prev 34 0 R /Title (Alpha app sign-off \(manual QA\))
>>
endobj
36 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 37 0 R /Parent 32 0 R /Prev 35 0 R /Title (D. Regression guards \(quick\))
/Dest [ 22 0 R /Fit ] /Next 37 0 R /Parent 35 0 R /Title (A. Smoke \(required \204 all must pass\))
>>
endobj
37 0 obj
<<
/Dest [ 24 0 R /Fit ] /Parent 32 0 R /Prev 36 0 R /Title (E. Known limitations \(not alpha blockers\))
/Dest [ 22 0 R /Fit ] /Next 38 0 R /Parent 35 0 R /Prev 36 0 R /Title (B. Resilience \(required\))
>>
endobj
38 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 39 0 R /Parent 28 0 R /Prev 32 0 R /Title (Log capture \(when something fails\))
/Dest [ 22 0 R /Fit ] /Next 39 0 R /Parent 35 0 R /Prev 37 0 R /Title (C. Settings matrix \(pick one row for official alpha demo\))
>>
endobj
39 0 obj
<<
/Count 2 /Dest [ 24 0 R /Fit ] /First 40 0 R /Last 41 0 R /Next 42 0 R /Parent 28 0 R
/Prev 38 0 R /Title (Alpha backend \(optional for LAN-only alpha\))
/Dest [ 22 0 R /Fit ] /Next 40 0 R /Parent 35 0 R /Prev 38 0 R /Title (D. Regression guards \(quick\))
>>
endobj
40 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 41 0 R /Parent 39 0 R /Title (F. Remote access \204 RSSH \(required for full alpha sign-off\))
/Dest [ 22 0 R /Fit ] /Parent 35 0 R /Prev 39 0 R /Title (E. Known limitations \(not alpha blockers\))
>>
endobj
41 0 obj
<<
/Dest [ 25 0 R /Fit ] /Parent 39 0 R /Prev 40 0 R /Title (G. Email + registration / 2FA \(required for full alpha sign-off\))
/Dest [ 22 0 R /Fit ] /Next 42 0 R /Parent 31 0 R /Prev 35 0 R /Title (Log capture \(when something fails\))
>>
endobj
42 0 obj
<<
/Dest [ 25 0 R /Fit ] /Parent 28 0 R /Prev 39 0 R /Title (Ending feature freeze)
/Count 2 /Dest [ 22 0 R /Fit ] /First 43 0 R /Last 44 0 R /Next 45 0 R /Parent 31 0 R
/Prev 41 0 R /Title (Alpha backend \(optional for LAN-only alpha\))
>>
endobj
43 0 obj
<<
/Count 4 /Kids [ 19 0 R 23 0 R 24 0 R 25 0 R ] /Type /Pages
/Dest [ 22 0 R /Fit ] /Next 44 0 R /Parent 42 0 R /Title (F. Remote access \204 RSSH \(required for full alpha sign-off\))
>>
endobj
44 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 952
/Dest [ 22 0 R /Fit ] /Parent 42 0 R /Prev 43 0 R /Title (G. Email + registration / 2FA \(required for full alpha sign-off\))
>>
stream
Gatn%:N+uI&B4,6'Q[Hf?%`g_a-(djgUIE%'Q'RS/dsV#=\GP_;YBI,qAm^RO9BEn"G-UmZ7,:a2fG;0+ejmUT<\QD?c'd:"-9.WJYt&QEXS5qg!;I')OY2R=_(A:H(M>j=f(a34f0%krEM@I*R0_P,0:J/0.Vk=0[muf#+gOZ=]E>u+\PkZ-ng,4=hI?efEN+,?!3pPp`Q)^RlJ\Z[/EaM`>4.pp^=g>ha$u>b-u?hGSrjH:=nrRQ^hX]\1ER5C<>H![r!2T,[jj.9@+q+-&KJL>?G^Cl!V4'p3Fool42sEe[(db76[mRqZ.#<+$b(#<9GtWO,e>PWFAA_(T"WY&PNY^BTLlZ$%Q"AQ`m%:M,TAmn8\-o==bgoO)VEbm"C,rK%m:(k04$j.%(J($DluJe.l"\@4d5b4!M6nIRj.IPXIHaBXs#`,2/^ZK12^jidV5SLN;:Pi:7':7VP8kF>F6'G`?(%WL)gqE2q=KVQL6''7(3A2;0=Cr8fUpL%mrTZ0^+L7j8/hS_48F=St0-9*IH>5RZC5HM,-LX5.f&ZM+d1d&C'>Q4NL4Z"3I3Hm"^$HSUP4:3`i=+eW/`4W'/dblMQh.0XH4'p\?WTbV`_&o9T^m)L5RA'm;J1c0ih<TlkL:[TV#]HSGij1/^i7@Spa<cuOm:K2m8)h/Lc[P`)dG+-V6BWbt&RKfSOa-6kgM&MoKd-mpW:^bfK",^.NVSfMY0f4%3_Xp,Enl%6oG5_*hkk<o/AlHdVe]Z(+X5bQ%W\Y\^8BQ!tb_`Cdld$*Z,I#`dHe/CE3B%8SQl#N2K?K;?#_1<KVP3@cU\WgLilud%k.I(^r0Ou5SbM?/CC3AOQFu.*4RZh(R.8XU<uf8D-c`K-1K]M&mS@@`)`X(W[]Ru)#7"c5TJV&n\:Iuo&(KCm_s,)KI;c3bB-(oo[a9&-XCG'"$"s8?3'OF>~>endstream
endobj
45 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3674
/Dest [ 22 0 R /Fit ] /Parent 31 0 R /Prev 42 0 R /Title (Ending feature freeze)
>>
stream
Gb"/*>BAO[%Xua-^s'NgM509`aj*)[DUN,m0!=SXB6H%O7^;0EN@mDhPaqBt0.9u/,[6Sup,q^[[rj,t+:*QA4oeVK`fH;]3tD<TcJ\Um!C_^q!Yeqg@<Ma>Z_KaFPk@T'OA+DjFg,[d1,MMApTPTD<(^>oAAB_r7HWJd)+C#.Pd=0`%*(:Z9-@McDF1uD:hA0>POX\d_#kpD/1CZSR\p/m'3IXWI"9moUnd'oNYfW.d[7fo-KGD7GHN;R*]-C!rbC]7;bDJ!D2i[*Y;r3%kO:$+//i$WM'+;OhP`q2)EpMT=G#F.2K!]Tjn'9P]4>L+P2&u:C/\.Hib)_8Z89$5I_$P[V8.^Re[/_)M=!rPp>O&R<*?[i5:lt:8[Ds(I=US?mMl"o!N'DLZFsn$-J>9,D[HZ%VAS\&$sQULdqKnsRcT'SfG0*5>u_9#o6+-t_b=^q4B`>A4FUMG$+pjX9=fHIcmiDOc5ANVXYR(*gT"k!+DHib>;f$<TfTc:di=)>29eFI*D'71'@%:$\6bdM:&ZT]@+UDn;FXK<k'->2%d]uBb6LkPX\Qa!IK3YPl(kB7#LM"[::dA2Rj$Et%*8pQ$<CaTeLdi#iBo]amQu[Ia.0278\s?gNj$?*_-6M'ePsYTc%Ci0V[5bL;M,d*oRhg$\m)#O:!9.$jTi&C"f9AYc0u3*MB'9ldXpf8!KX6hQ<(-Y*6-TS@P>t$I3S:f9;5Ds_2GMn3_W'aOp!Y`GM`Z#C^LdBF:o6GBUoa5P1<ji"/!CYXHZ^D;@fD>osGf-orcL\bskoiP1U5s.Z+m=N$(R2"`?)&E\<uYA-j<&V/sNI(qP]S$E!^DkNg%YBE6r2dq"3j&(?SP#t^G]+WIRt#S5O66tJHSPCAWn;hn9g%S+%k@HbZBooT&LE)VfeI?l?Hl.BPu=iO>8]S'@.)PR8fY>TO->nQWT\EMq6Kq%q\Ss<KVW(p%6,Ol'ihjdM*GKm6sTqJa0_?aX.$G4pGab%rO6+OLX!7sZc$8,0;BF*B@T6Pa)f1[&tVFJYQ-jgd_\\[[)D:&>d'BEqt*C3fH;*sCO0"uU1m\5e""brQ1]@9>@$D.+[aOTD9r,+Lj%9V]*i3*$@dMR\VIGWarXZ</g-"4lhZVK]I3/=F<X3?RClQPqL3/<`\ph[['nG%'?0H=GPVP!Qbq#NU>GnbRBr-jC#YsMAlYVUf6)S;E#ddYId[@:k>1eVrEOW0D7c-HAn!aMGaS.<oTB?;#oT\Om2[.q9mGRj5iKcZh?JAs<]nCs,c8`cK#RGG2?<>V3B;Ofg$f-beAJu12['"X`W2cKX'\"EH6A%n#QKYsU,(j`[='0gA@RN8kc95Jaug[*^DGik-=UUQTnGbEHO5,HT8V3C09b5djXo1FM1HCS!ciYNU),Ami+8\"7-S/0<hJ%Y..(5N=[)]n=kW>g1s;<Yb24M,[IB,SGko#'l-T5PZ-PWP9-2u`c),h]2o)[\F:-_HG26GA_P,1u[s]]m<jl]S:hEp^,:)-@d)6AW+O?21nq65R8fL!?nrXqR$Y/0LmioO+``5U]Lo^fJj6E1t^2XeGn`6DXcg70`mF8dDe^%eTNH*SALr<7T*7S9%so$8HpF_q0Vp99/;E@p?j6-%.pA3-[3949EiH68$u1;JCA3r\FEMl>ek2QsBW>27^Btmj7l>SZK190B$Pt0Hbl)JY5-biqaU$N+E#&1s7%033d/Rl\tW7<SAZ'@[NHl3-mZX2`.9L+:-THi'frIXfGNJ<=E_1:Nq!"JZ;93D@X7eAP/,CF&N4*VJ?Rg'`-iEh>hfXne`-Hien6,m[)-^I^nSM1[),NiO18\TQF[e76Uj]45HRc3WugZh4WS#%g`G^a'0#]\*T0aF@QmQ;\\;rQ)dn`'Z6/G96Lf?c$blN4'QkR77X18JFoWE:(@S"35U.<X>">DZKalk[[mPUn!2?T-4@8la5+Zuh6Q6%8WDsI6gYW.YGM])YXACIFa]^kGKW7AoI]TH\gQ'-8E&0!#3,]b^`l#1V[h_9LE;%.%XkY[m`Qu^<-\Xh!N:Z3'VPrfdX?Du#PJOVM9jNHrB9/gKcU!hn3@K-d06"`b=eB'0MS9Z3W*X'cmuic+R%3rMPUHo$/^N:/#XS+B\l62`$`ZG.Ljd>jGCN##'^1Cq[fcP+F(8RXot[R4`4qAqH#dk_t$>nG.J_3&+4;/2arsPDZj]oNsdbjEOLNF_rL'p*XX25olC45L:59=?5#=JWhp.l+%sil^4VQ;T7cip<QEZk:M=)FCk;9p66$6[5l(\*4#P+HC`p2eKA>#^Egnr-D/LK*;1mYY\cM''i'esQ:ldS8!tP!K6P434$nYO!^='<l=fEa;q)7gCZ;L8'U3g0HE+dDge@(,$^DP<#Z<C><^UP)*5^4gBO2d<o!/US\i#Johlj#sYOlK^k4\P;7`ft'1n\Y>i4gH27`=qU/,p_,J^j\+iJc!(A<*gJagUNn29@i($Q-7fE+^(PUM91YES2eJT`<d5>]p\$^lDdE2M;T,>/me4e_f\fpc3]Qhc*NK8g<(I6"O44ta&1SY.iSDj(a'Ya\>kgZTID2Y(S>;j@M1lRO:X%-*X)PDW`OH?)k$a++nKJ3@XZ\&iijCuD9@;G3Odk;7e?W7'hI*t<CaQF4r]J)$ZOS!N3.;^5oe1"g5cHWZ12ZoY$#?eb=#Tr"L7Hl*NKa,LKWcY".isdcSOpQXSU^rK,+*S'umA-bjrC5`F>=4VD&r0lOl^-l_GOoi[e7(Ge>5?5dLSO]J<#FpXQ*(hm$Lu9&]S-(8UDXj6q%]o3/i?mXh\"$$!WLG7<:70s:fuZ/feZLuZSeM23C^+sqO80B@NnF/PRT5(VnL76#?lnJBbJe<hrdUIX^93%KAnW+3mW?+e)/(#)rN+HE#40mTVV%:,uunXN&9Cot%l/?e$R4M>_SIF"[2^$9Tj)<ojG@<t@[2+r$t^t%O[!-ui8VUfA[1r'dLG[LfJ<4jZ+.&emNT6]++#5MTKb@mdbs$g@F"o;uUST^\W<E1><e_;U4<Q1):gM)FMMJ\U\%P%?u=0&XpL6oul@I!^YFkA'qW*#Lam@LsPKfDXkLpg3;a]enKjZB5Yf.XFt>BT:k>Kh#-rS5Vh(K2?0p$q/8.gdhU$:uEB:SGd7?7(.&6aX;Dp3#uL%rE$;'iBns\6HmK!5n>F"*g^,Cd^QSP6#X(f)sPP]$hu`HS%+efJA:IW,7t+di`tq2S1N5auiRn:sJ8E3H4@a\#j]uMLr;If]MNg3-B1?`A;("E<fT#XBdL0kgmnEqpPFG&7kP*&Sb/(+$K0f_F1:.fi&G_k*Lbcnm]jr;3`RO5$*&@>P;*fk,)sqpc'oOaK.[.&To-.T=BjLURCp5\bEJ1GD^Sl@s=cM6s%Lt:kcHam\"/&>9)olYdc;][9K4kd9_0bfs[MZHDQU!d<.t.jVB=37jsG&N!Ga@h\-=/bVu\*d!'M/O?#V-I52tKpO:O8OX)F?K==gmQ>ieqc^G,UBjTDq[A!Ng:[Mci98>9Y+SH1t.)m(Hnq:N3T0T'u''&mY'lB#eL$4O:^A#KKYQ"c_TKI:R@No^6\1&sfMFXr9<])l%eeY'A(>u(3o%,7DKOrm[ZT'g<hbb?>UjTBcR5DqP5WDdR0N]:0@+;EDYsC@O<L?*uS<C57Bq0<iN\fVWIgdWT^A~>endstream
endobj
46 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3361
/Count 7 /Kids [ 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R ] /Type /Pages
>>
stream
Gb!l"D/\/g')nJ06/\ttRl7Q?]k9Pi0>?SO9s\h_q^'%/Z"QY>P,M9!dbM%@Td7gE<jG8o?#4LOl\$H>,\P2dB3oBs*I`t,Eu?3EG))r9!uVs3XcQt*(:sBn0(4h7*#[9ta4#.ZY`[t(5C<iF.sf/F?QUS'ODZ2ap,-Yo#G#7]3(9n.,L(FSf<\<JGP.9fpV#'#CqBr!2=48PL=mCFNH0h]lkkIV9Q:H3i'25"7(uuJU%sF?Eu*VgG6E<`ra]WU6$L)=]44.l(\l[G1MfS1?/8#B;,V6C1CQRO+B"EY:((Sk6-'Ugc\I=Nqan:a1a2@4J4L<Gg!(8KrnI</kW-j/_dpB6ko?%S-<Ndki6"aLf*oiAeb;.r43cTJ'=Wbh:'dalRBt0uB5N,?eWRllZ4!*(PbWoni@8)q4Cec@*nbUhNmC:_LWTD&@-Vq+$)\Z!2IbH$5F$G<0L%-ZR@in,5>?@gUuLf6?0!PRYBke$SAcoB@<=BRC9HkDgJ6)'-Rd.u,r(qe+FD_%`fc'P5aTrI_ikMj%#$u8a(;$iZ%HV?/S3U[j0A\crQSkOF7C!n.E.dm'Xa['/0dcMk[e!9at,SY(s9/Ra(:r<F?u6%o_&nS9VGbE-3k]I8X>Pg!rY=#.a4NqLoa18gqT!0o_2ti^Yo.\8",3=b;N2kp[(2+1`JRoelbL_"Y(_'J1%b((*.O-f<;YFo_Pg01@PKuO%'Ye[N,?.)BI2YFo\UWF?lmu`GA7X<ZQp3QA7^VY&<UW@-UM/H-otX[f*s_jCHr4j4V!I0[/*Qf-h>PrrCZL#B[>'#:p'F)W"L*pu4S<':`e#Q=aP>dUXfr"K,Tb+fE/J'=>`6[UhD[eT;=k[YZiI!,"iDD<tIg!/>h4=<"%RHJb)%o]Ps8`YN!l(Eeab[EVR[AeP>8UGJ]2Q$<h>1^odFLn!#a*tn94Sa%Dsl+"_mJFF#i\nG"CFRKBQIG4>;(h\mjeI!0XZC%Y[_Et;U(($1K?r5g,4><(r.@OQ"8jI@GFWP?*4_;]ZL<',V]#kT^G)JOTRL8ud5aHo$3ST(8`.En^gb45Oau][(4G<eNU09<S8;7sO"a6$HP00jggi$*1P%UYFhddf]1sU-);oF>4;%cjMEkk!!A8S:'Gn\_pE[]aHYa.'$X"nT'pU6:ehjGeLD4/OdJP&F418rd=p%\d_atA8-,I[LPICek+IjL3l9!+BlJCOlR:[>W&c5PIga(rsGi\e59/25PR`)93;54=BhI_nu+/eXjlc00[AKhH`TV0"0!Zhl[r;?Il&;BD$T-9:jJPl@$K/3H(Q_H#X=#qI=\5CE2:Oh:c>ct*lR@rojmW*G@/i.0"u+=,<JZcgu5o33i#^N1RRQ4)[>>R7sL?@+VhflCIoA%uqZ05nY8W;6aI$emEo>;uLHhnh;LH@W;>ENYu=bsg\E6SZ].p_?PH)T$c4$&(J2N)j=mfa:Jp#fiH'kp&IpNL>Ik@C^8c@3a'Ql&YZ^d%g#ToLG2.nNW=r$F]I]B<-!4W\k2do70+3OM9a#a\p-6Y<FkLk31*Ald"a8J#q.?2,!\G"/u6gFZCZ7A/KY*:Z#uplC>#u-5pJs/IAB_>'g%sMjn](W0=oL>;siUFh0LoN!Xu"=h%4%i&2+lTcP8EP:.&MJAd"?-%0ti_.@2XE_KL\HaQ1Z.aU3`oAu`ta9d0$)ieNYH]Y_+Ah,9AqJoWC*nP<e)e>Vlk^\.m+Z.(dV-01rD5/G6Z!WAWFOuM`gU+&F]nI'R2QH12)ecdjL.qnsD.%3p9W.=Y5I**YJL5N6EcIrYbfae=9^3Pb>U%C6OP33CO\d0u_TrteNf9*/e[LI[WD<-<j\3rG!_(7"mjF_Wf*E?=:ud=Nm;J6hptMe,?>j>OB7$2/;*A]`T[Z)Nd+887>n9d*2(h9<A'J_RM%I^R6[4]D\++#3mY6BV@:HPtpP>",``!cC+dn;gig4i.iK-aQCQ4,H4gGde7-0A_3o*jTO8XbZIG4!R_K`"XrQJEM7Q4E#MA_;-&rnC'N#*q#,q%C+30TWZpD9.%>Y(5%;a!)01!F)N^it>"XeuR7VQ+eN<bPZ<:XlX+0^5Sl\ePOH$pL_<!#1&X,O6GaN9*AMoroOWoZH6b`0:oLZ_/e%gLMLLI9K$!_o`[DY]A8>:m&9*bo$0c=g;ujO_[dKF<h28GaV1F.Ia<E^X<uq8Y/kP#VWW5AUXotk-\T\-Q-aop;`U@ADC4@]-Hs=CK8%GiFHjPRVZG#F*6:X7!R@.lN,-6mnuOQ:=sW>U+d)#<0fdo$-TBjnUjB/:nI'*Hb5PfQA4^joURG8p:+@k3&=kA!-I`r*,NN8_<$3^(I+Z*Zg6%uk4EGl8PJN?%43&O[I=l?nq$qg;RGGV"Z*M7m*HAA!8L0(NQb!7o,BA,K'S=m:7jlL/8fQ@&YC/_L_^^:@Bu2%N/_2fQA$a6+DI:<%-@br?h,J%aGYit_ICr@"5l+L;7M"9=d+PHbFnTo4MC*%YC\uJQ(KZnAq^MA4],0XZt?Q/QRo$hqE2N[If9UcqcNoZJ?8i>ggf]FJ1W^bfN=OH"M_Fe*bHV,.'jr(T=FptJRT2"Y?JNIIpW$GM,R_e1LMnL:B6$=+),b!CK7Q3>DfH"3mCekRru``lOGm1@!>A2(iPEJ(%%Qs<Tp86@g__=Ne_YdU:_mcX,c/n>tJg(6EYIqbr8LbH2>ubJflV>$kWcL/;q]/OqaSEaN14jHg+c!]\(cimaAe@gb'B2n))1lbj[I<EK!2;C3WK:TXS/+j/kF4]-U:^XtKpJ1lu9g1.@JI\ce]^HIQmCc)VX7@%2p(aLnT6:)VgtQCgdn"q#--gJ9aNCW9ib-%[)QaUiFHc>Fl)1b"-8R:t&cahos]VM4Y<^6"P7Xd:<bZ:D:3]Y:ngrQjKop1j:%h-Q[[?N!p6>O1W]--YV#f!*Y?6dr(:b"V]N6#S"fE@PNZB%loWZ5iH@3(AK)FHTY:5p`jp#>7g+,/,;,TNp]Wdpoa:$>Mer-"+!p5Wj^#=W:5PI8ej\e)U:6<O6Ofhj@2kp8Ed@XEg[,>Z5EG?h=4Z2\1uYo]sd'2m:FI<f3\Uk97.iTP%&&!ZIsrPqlFf`PX4jBQ^(GWu&L1aL["L!<q*&@S'Q,dSO>:/ju?"B%%r1Yhb4lk-0IJJ^pEFKq1FUU=aAn-U=',l<?npP6PFAZ?Kk:!h']G6*E-G9,)3"Zne^4AiX_ljbM*l1ZRtQWH13tPF!M&_#?`^`7N9K$A=\.doQMl^/=I27J@^fH[(dV[r?(hh:-e;eP<_^Psj$',YfSQ9`[p^TChCC2@oR@7WGN;39VM<miN%ZgIk&@IaINhG/j9)c(X$olVERBj@ZTb*W6M+]cR^~>endstream
endobj
47 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2831
/Filter [ /ASCII85Decode /FlateDecode ] /Length 844
>>
stream
Gb!#^D,91_')p1[.-\I]%P_k9-A,()^c35*(kr?*=#qKJ-gi8:EOri##DW-K=7*IV-B@K[kd3Yfln2@`<HVA+:H8PWr#s2>q&81+$5Xog7"a_*LnPY>]`i%po&g>$,d"eTlGNgp&H$0Ki+'m-r"7*cL-ki&)!4*2Lh8r6kTD9)IQ:70Q>6.'W.&=hg#g#(G4\sA8]4H[l.*oeiC3U)RTP1dRDF&UYP-7F*GdgFYl"VQ]S94`[gE?1q9r+r%/:dcKc@.5\r_i;MDLY!!RkDOp2B`4SO(^^`DWgJ-@2=!Xs_,Bcd*9frp++[9U)qd4-:#=d<11Zc5-D"K0FXPgd]OHj>4GMSEMK1k:;Y>HD(?MWITfEZ-S^JDun'S(F(`$4q7;B%?s[[\_*hQ$dld9/SrqZ2GP;75%Bu24Jq&^k;6p^Vmb4&6-2s*C?R>W="^.hb$s6;5%Z-R%QT6.ms1/6RX5a?:)SiEmdFQ/R?W1^]*+2/pi?cc%tY(iSF_,jVs"hL:><]C^0r'dnj5c56!>"ER(6)\F*7l<GA`AR7@fC_is8t=(DXdH9qgipji94IUDQ1&32-[#<8_t-d.,*j*kW'R,7*(-O0daR(9#GOXGZp%lg_q\!Siil[YaV;ldU2$?=,c)&'m1AmV`VS:XV7FcJ%pn>cTb$K"Hk@/HWC/DE.)lLg+GkqJ="J<KXhjaLL*\B2p,>c<'7A%,+h;FU=NCO+j6"$jck(Tl;PWbf2@6M`8"lqK7+6M=I=5W>\s>g-'OK09PP%q90@_:O8qJ#l*`b&H%F#J".p8br5%k<Bhkk'?,XV,b:s>:,@7t%sXj?Xn$p\;%0M;pXS7]9'hnb1/Jn)X*ao2Iq\ndnc<T?5g'BhD30KWY+W;GB)5Q]+,6asI8`#=<r7bkP9^n3'sRO(+]-i^I<6*>,gt"_dQlY;n"l-JPB*CK-V^oj8O-(LK)W<sUZNlcC9\(sb2IY-X52WX9f@tsBlT$af5spr78GBW.(6)aN1uaR?#-OOKFIQSc\@TEYkL;fUNi]jl_L(X_e@Q3^Y0JJ8[[.[<-t?^:."uZ%1=mB7CC[^0j5Z.)V4(DFeB9Jj*ZO>HhUfsCCc/Ug@#@l7\n^%K0`F>DM&n6KPH`aJ'q#+2pnMsF5b>##mdIVA6FWHD>DqX^UA2k&K`c(E8O<G3A,LB-Ueb4X<`2H,/0WHI5/%MCLDK)[_M\4Xj3'ZRNlV:99bEu/H["%6`#1MD^#&b_QCaLJtsCI]LOeU%\Q!N$CESr"$T0VJbk=8LmnLpfh4iUUH;R"l-8`P%^06qUNVe$b'8QK&W>("p0VJ>:C?C4=#BYiiH^L02G9^e$b=Sm5Yl#h'E]8U.$cdu+.%T%MMDb>GVF7"eU^n*KVGf*NXgcGG7K>S*"))kqU77kNprllQMq/<nHKes7j<-m?u2bl0EV0;ARW0gP>c]?e!Ro>BoDB7g!ZXDg'[38qUB??e'9SZj"`8X&n9lRQ"g(VI01Q_&n(,mf;?crZE95nV<=L?$L__CB:$%3mh52VYd1oX_!*<'h[8elqdi2/17!^b1*8hf=;o#V7aR3PY;Cc2%A9>\HFa^Lnqr@mnoWDSUE[a:MgW1''ps`XR&W?KAHerK.r$D-m0[C*5a@rj0BcJ>_%u@K@4:mYB#N:9AQu1f:BAT)n?-.$gTm423uqA?c_2P%7?DCh=%8D/25s,/SQ/*`k#E3VF6DF8gB6$]24fgGRaL,oMSpoG@Wp2c`L7O$'1HE3.Ma6)Q*j00"Vm7F*h_l=(S%Vtpa`bMGoLFkf*/aRrf%Z63u09G`r[a>q*i`IpaHVJ\'3:sRM_^FgiM:_M/=+Q+_i6%gZ]?[<GYftHM=baUUnAaGba+"NHF<Bh6j]PNSP?L2;ZuCVsY8]E=:Vo87OmQ*PJskBqI4BLb[fA^V_lJ.1>gh%u#r'DZ*9pJ1CcRI`ui;m&$X#E\Hh6iA&UrH#56OGJ>+,\8mVc+Ta7jh*C@d\<,--==BoNJa(M0*(VmK4a`[S9-tJMm!Hn)[Z,1X*LGSUQjNa1*I+J[pp[TW8%Z8-gRE0j\n2tYs8)gKIGJ`[GAN56;8LMJ7\nM>PR5IcMhoL#1rf1BUs3'+m(oH,AX]0"eUl*fVUg*(Fj$,c`$.e+NtQF&b(WphoE.;Wc8RJfMp`P4KF&fE@gNf&5aZg,]FN,5gY(Td,?GqqiH<tentS;LF-k#J+M)fXGSDS_:#E#tDdY1#kHP^M4?F(87ji5<En@eimGF<fB)q]SF66&[=Y>;:s$#:I0o_A<;"Dn9IW?4o;GSZHdC"A(l.fQ<*maF7*k6.Pi`:3mmmNn0*O[FNgQC\dY_GQ4'HJ=]&mFbnlP;/(&2fg3SQS1H?Pb5riRcb-/\fjg9sO4a/\fkV,m0E7o`CRf#jd7tR[2DXH!LW-%eG(VKE^L;q*g'mT_-"lI@]baa97K3`gVmT;Sn$8k"UA)U;/WnLB3D!QI3`E.kb>VQb_Zd_R--X@6GIaru5Ph5<s\bad2VJO&:?4CDoY0P."c$\uO;+kZs*u<*L'*!`PU`:eZr_Pm"Z"S(DPBQ`)[o`Y:PLR6H[L^](C;]b[ZuqP6$0HG^qL>U7?Ip*`Qr8Uo[r^*NCYj`dO_&N[L>^A=3rKo->kBLDWM(M.i<s*=B%Ee`&`M=Wiu36m!npa6j4+JMj\h;h3F;9T3GCAdXI42#p237lI#DpIFs\Jnl23hP7XfE*BhWCL1gaX5's^3^p?]sP0Y$D.]5I])<Q#Tb?q]GID+Og;Oq15bG=T4\rAimhX(@hKZ"QJd!;cLDP]^?:B_T'&TeVKJu?@<.g.:'J[Il\=onl)\V9SGWoY/cma~>endstream
Gat=*997d\&AI`dk#B`n0HS8qj@HbV<Q1X_;,=kn`%5'QYmk+lrdF1<ON0[Y:^!(Irk=fr4FSDLo3qI0:&r$'0V'F2"+LEo#mYq\hu(mZ&\cTPJk/s>%SA0:*KM/00cM7,\J4gqiS_XsKOak-#`Mo`l'qb]b>"qYXH>K6Urik8"S4T>rX@gi)Wk0:_IKf#i"'<)K(sI-5d"T;lnj*Ajm4eu0Ao(1V!5mP\hr<@E$Z-:%[RHYSj[8$q/\>*LBsB-eO5[c:ckn3nN>,1Qn<dcR#rXV"k2F9.)K4hHEU,+Y0kTE+rNJs9lsIU)5S,2#fH!@L.iKdKFnDH%u/P^V`B]BRR9\6%ditCU:6Q(H\g3h??m&7^Wl*",t'\1\P3pNAP'+eHc-=Ra/,Tn:qNg]Z)H<[W4ZV/768.h8LT[>MXhhNha+p,/`o+J<d.%`eEu3+lOIS)@[lIBEk-f`/[?(&Rii/`#JImdo>'[e;hOs=^I>a_95b&a#<-gZWWpZ9R-UD!TgBS1mA7K-mr/Mj1-)%;_K\T+Ej,r[H_`#l(i?#?O9C;blBM>k/poP`b3IP@p8UsVo:CRj30TVVds4n4DYkBuS`hc]-QNQQ@"hWMY8&'Q]N];s\;r_)2sLl!rL0k_M,"F,%^/$i*mA!Toen\8*adk)Bmq][i\JK,H%NEWVsic5!rpP)IT"um[N!,a1srmc2MPp_@Vs7&,5YiJRoi*kT*9?NX\`=+jAd&IJ>`eu)[KRiGQYc4K[W1G[CDZ6SIilmEO@@cgc=K-]_4gY.#C>.:OABUNi451gX`4c&c$lkequaQMP+aF>pb@mFN[bH(h!cO;$\lP&")3qc2~>endstream
endobj
48 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 885
>>
stream
Gatn%>>s91&;B$;(&J:(+=uF![noV`.F[7=7p^kS:=RpZO^uo6f6?<ZL>+D:nTZBU@O:p9m+GliM!3dqX)%crkAW9<^gia5^f-Q9r#AJpHZsga[kc31?=m%A78^9;RABI:]$-m(:9k")1<H;c"BK(',irF#Hh<s.Ymc\$hGB2V=!N_mL&JQlXV"51dV+]q]*"H#LA@04qiZuKlK?PBl6k?W*6N_c]WXN$gQ_ad9oEts^KCjR)[*WJmENHIOE<5na;%=r1oM5#J-AuJX1]aP>N8fWq-HX7K8>\2/>=!hhcYWT,5srk/!T@'3DWVQQV&K+V3ch-im7D]SUQF("fI[_cr:b=1dZD\L<Jg()#eLlSjLZ,#G*-PXa32:+pQYY=U4h+]^(fY#2[:<!MZ`jkt&!Y\7*(/`[*]YE.q';$FP8=2hWKLN6Cd_<'p&q0Ff#[XnkCMXcdHR)SqjO<5qfC<(\WTV<H[H^r?e7/]WQ.$,S8G3i@pkALHggbTa#6f7S<3OcSu$S20l=bsk(&)WcZ#WkbBhh[+F0)nAF"aCTXgO#;mZAdMABI7f1^6k.EukZ?8GW._1+!G0rol#8.D$r'[1Dq^j!q'h]sI/<0UkkaaKZU&-da3!3(j"0u*0ciVOb&b&:M6#t.Z_uao=KATR(kRO5)[)[i$iGXnBg[<%Y@)?Afl)6/_%FVlkuc/L3`c,RoqHZeZQ%Kr!a`1.Lj1%eHN=:k\Q_=T=i;[JLR71*L_$L4:i%uu?P)A-l)_gA0Km01S$HXM]5T0FD/6!"%Q;>06#!hgRDHSR%1P8kn9![$[PcXb230Xt>A1Q&f!/<RA4=XdOi,B6QLdtc$-RNgH;Eb2UgUh\rSriJS<s1Lp1%ibnZ35er<HG4GUi~>endstream
endobj
49 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9$AT&MD_`PtL;ZBnUJQ&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:ps&&=X(PCH'Wj;^H^&o:u0B4;^:%sp:ZE&Wa6R#'r_sXjY5-C*Ut>641HTb(JK2s*r~>endstream
endobj
50 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`Sh(bM!;,fa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#A2MA-a(rHVR:D)FhU3a#MVn+@6p(6,SFQ!,JH2MH_7OtUjbJt$1U9TU8;~>endstream
endobj
51 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3696
>>
stream
Gb"/*>>s9K&q9"FFOe)b@"dqa[e@N\E5FU<N,:IQ>?%.+eefq$ib0SsjO\=2A6j%X`lUF3.7.:fN-fl^H[>PSDBoe`7nWegq>_TRE-<OY,f='pOt*E7\:MiBdJ"l"4&aZ4h:+h-$qhCI;)Rii8,%?XR$qE!-[\-Fb#5L3/829W5n_l69tI.B<YX#TkSZiK2N8m53-IucF-&gn58E^\._l-4&?f@H::NuF'#_!],PV7sDb*CDk_rQ\Ng#:7.O*pYfa_m9)3(,lD/Zbhi@/b0L[NBo"/e/O]$J3,\6:cP_@o49#e[\X$/FGV@R=T&'[h8b@j]:o(0MMY+j<,Qa\>p_LmO!uaj06jo'+>..ejK9b.7V[974Ila!(B%JmsO6]5i$eckK4AR%U5J7C-KU,+,su[=ff]MPRXUcqHa2FK8o'-7HGVG>(9db(eb:6+$jOOunt+FhuR$V.5*,LpGI6KHq?I)QK,LVKq6PX*=8B<W",M>Ik5%"<L'OCHI80!d*gI*^@$s=>r%8C8esh>sU;Y78lHJ/6t)+&5Y3L.cE-Q!W/<p+iflk9<o&*Oojud*@";PPL%(=4`c:@TF/rir*).cQa/"\5hRu?#oi.1FEORLY%f"C=4)?YU+)=*n=_Q_p"hG@WUlF">do;<btQs(%5hB"1Uhsf`<_F*K?V,7m7C>h5o93HLu0L5KWDtA=&JaF"?X%rV8q@qa8Ri4dDLQ8A`76A$]^,b]TV7i;6(?OAPFg?CZR]QYAa6NY[hqrf/I@_D?^B<J(N:<9VR'UBL/6g5/qef#Z9&j6u9V\79iHLpK^X4"Y9=F7bpX!I%&X\2M14BS\833lqE9]4.r&sMU=-U"=<6cnT)maHj\mk398Uq'&)=.9)7OA&!tW@_tCtc^65DI!^@dh+&?AZYL,[/Y1s!uXuf$_>.fcB(1^^)':;HGE6j``M*ff[mSCVn*&ekC<W5Fb2Poq)$BsX1]OKe3No=l>d'NP&OMATN0T3%!`/?^#C@&RE3c/>d;3=Aqpm/k;F4XCi"pLP=(.out_k;M:]du]K(8UP+n8Vh'C!Hn)*$'V/j:R.rGKZ5ZAa0?m\HmhQqqU,<6S/Z/$85cXoE`;\$=gB#EV%GMEZ54Y.59gFe'\dHaa"eB,?L3JB=F(_5CeL^$Yo'Ui^P=A(3aDbF"JNk0*tA6?$3m"i&s=mfVG3'?4VnU_&4M_7&S4NLrZ-5K?<a('_Q"Xc4Aia/Ao9.U\@\DN=EJAS=MB^E?dP&;E$SC2skKd!QEu&p;6MpA7oNT4TXtI[SFhu05,`*<[d].MWS:?#1!;k]"l/2i4Dj>$@Z3kGZ#D,G\0#q.BC+>c15qrjSEC??dSHL@I1/PV4AP(YhP4gi@3794D%FW$ms8dn;//E-V9A'f+qRXoJSpX(S!P)B*^7:4s"BZVGG;iWcU.kIicM]FdsZ4W?,\T2V81']TBZj8n',p$7@iTUQ:a/_?+&[I)TUo>@L+JBc)*`3R@C3modf9K']^'`+*OlNcGXD^Z4dl,JfTR<Kj*O3W&1L@I.3L.JtrmAWInVdiktW+P'kWQ&1bT/VMbtFU3JT+UkWV6hjalM04DZaT@'Oap:2m!sg2&"8J)k+C(iRi);gi+JCQ@:\atlJ][sVjT?@i<sJ.C)j"V]dl?C!Gf[jChhLYYL<qf[*SY=t0$)cRg^0L/clqmpa5jo3-5@jde'F4BY:_2\LY:d]=0p)ns'3FU0ZZkT3?*-B#R0c8*XJ*DI;H*G`Ft^96+7h1KG1EK]hXEN?)7W90q+sFW[tR<GtjT^$(PrT*F@t,be#o]<(51N$k-cA%RaU,p2eTaQ8sdP_+gNJRVt>_;s98e]E.N9AU-,D`\15S]2p]dpu/kEc(LG)L"j<uK@Gt8-1MPnDY8X*it0S?pOdW`4sV#mT5Q_@h9qj2l-CK.3\SS3)HWu98EaYR6aR>uc!lt34'T&p8O]C8JFooM:(Bib=PRoi,'R`!Z5Q-D[\"OpGKT.dP6I.7ibmbJIT[(_UrIM-TfRntX6G5]*K]/+[cb[!rA*:YrIm4KdZNk;V=<e"K6@5qTV7\\1C&Bo'*gfDK0JOJp\>I>ZFBpZ"_`Q,'QGSK[Jf[Q"nm"gnZU9ur=3hHgk#C<=X"*:(kO@:ji(#EP/LeD*.BbN(mJBF&9Q]NMM23.$/Yo".qg&0BKj?cp_QMAWZ,?maGPgg%e(J+\e$?@,5>W:?1H<C#2IS\oWMBBL1ZjDoQ35mQJ=!s2gL^q1P8W_j4k(8S1X0QnFZR#J3e0frG8)?WU1n!f0iAsXJd,la27DWmpP5=kFfM!e?QD9&D@p6>G-Cu&AnN+OBt7kWs6,:&onpKaDI0'>H^>1]nG0E%<?6)$.<V2Mb;-cSoL\U*:!?S4P_,'i_5>dmBh*dGH)e@9@_,'Mhc\m(#:C;+m>BC?9M@$roXr`5Z[.836:PWQ4Vp;4$_uM63+t'05q+sGkV(uX2sc_&Y91$Gb^1kq"S9VOWIYfSH]T#:1N:M(U+].?f:@\\Wi:GbVu][LrS3AeAeBXT+J3RiC%3D=A@Si6cB>l2I.qVGBMF])2I^=5o8iL@Hk?W$'p8+n!7\1!e'0\/:t`b)^MaQ[A#'I0nD-=E)g[j6!$[E0:nX[MFm=(#)"[m$toX&;8FOhIj=Rb5@f5&7r1`lPTQ4OWD2SP,NmYT;et6^q\"a4Zg%ftcP@<q8/'cr:up4)`P<#I5BW_eIVeqYT%>NnPslj65_5;Ld@OY5_o&kPiW(L6T4Jc28l^<(g&;1Gd0l_L+SGYUHc'#ieDt5:B4(QbDHjKCEKh5S*_..^q/0BOL0"^R@)(Eua##]Q<lr%(c\?I"2EWD4q?=4>$UP(7`:;.11Nb(a]UbSUP5?QBO!f9"_N2e/SDZE?OS;bnJp,c9#WtU8_O6T[]W`u^7YJ?;#4t[\ZblEj2MTGcX*<3N@\(1<r7G^%O]Rm^@7ZY[<jTl!X_h(,Aj%,JUc4:MDcsMd:d5FK,CPI1VO,n8dmE4X>[:Zp+m\qQH[WolqKS_`9+56jMDrKS,NWP!2qGR06GD(21>47s^X:[5!e%K+:A`D'/=M0f8aW(fZD\(aUpn5pa\[j$#IXNaRn_:S_cl-f+L+)>T+!.l8uWg(0&Br%S0\2h4!hi?/VMCFS[qJKbH%$m^%@P7bcgI.]q2p`QPp&#q8N4](MN@ROB;K`6B.M:<W=$ck\]A9lfOHQg+^%]ZPXEr[u*Ko-IY3!nEaVg&c03\O+C`Q!N8akZo4nO>H+%$c7J[`VDJ>9Ie^d-G0rR?7\m,YReAZqi&[ZP>=k5Z#Ji<n+0=[+YYt*-pOEuYh=maQg8h;rG8(!d5ad:pkWC14]j4'hKUXU[]0$oQC"tZ26lJl-keqb7=5)m`c8l$TK:OnZSOLIA2C7^SV-uq2#aMMbdJg`B^-W1q/t#A30Gi5Kc1GR?LE8C_S&b];^hR5ofP\c9"IP1Ocg<tRHKOK>7oYKSMrfi%5>U;61/hG[2t-Mg-Zb4Vpio8EkP_ntV;-Yd=JbrOD\M6:`.#0bZOV[0IBqHhV9Iq;(5d26hqoW2&Upuu1`1640a!.P&[%c#_[\*Nn1')qotr"bUD?$3<[//6\f2';hF9rI(5;$b'WT`YB!i&9>?^pt(C(9Op=BM-HK1W*W#3kGd/5FJRP["@d!'ic<"u)VL*2m$=3-i'8WoK23?nuoI(cH_8,ia*B39T~>endstream
endobj
52 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3406
>>
stream
Gb!l">Ar7U(4OT5+L"t`9cI62m[5Hcign<%BdV,!?NMbqMfpp%M^g##PPt0$.*8cr8f$Zu`>"6;Fsp7DjEJ[d%n7oDi8Sgl6KmbGNMdV%K'jB[gP1^UhP89+UX)H?)X7*QBjh7\*V^qbiO,C]reTZ5+pVNqfhPod9O)[k/L20:*$6&LCO3^Sg>AC/9\alNOQrqgb$NFPA:UoE%FVYS"6dVA3d,3Q35L[`9!:LCI"A$r)n&B.R]kY<+n3Wh9-KB"7MGY.]))Tc*D9SN_U"MhG$MrWb[=*;954WmRcJ'a2#9?B)+QMX)&4%K$#F1uU*h;7F-JmY#qBO-:J(BA#hYbLO"+<X`#"64o>f_\=_;&L)g_g+HTZG?+=+Qt(CrT?7"M<HYVQ]lO#ujMGTX_bFVk.pnG*VOF?bWuLa<aa%hVN&1qC.`,^=\9VS[\dL+VE'X:X7sXnI2S7b77?O`cGAFb5$@98He_B.OAJS0g@Z(=AZ7&Y._EO[!LBpmbrAPUqk':cFT!"Nu&&QK*_ieDB<'GhT;YT&)/mQ8`n`8c,=/Eh9_Cp-S6`auY'U#27=Eh%Rirf_,S^\R9L_k<@,H27QKi)Su!P82?EN'SS7\k)D9.#P3]&g:Zqj`3f./GZ1C4$LX/Fc!ZE4d#@*AUIkA=bRA?E%VLMS07mV=BG6rA3=!)X#74="(V\1G#uQlI1lal9:P]MU'+`J:NKX/t$:oY^TRVOmIiK=inSAH*p@mshNXQ.U(\WoH<i@kK@Pi]b[4rpglGg9ih!Hf]a)X_s)q$-NG!U2u"h%g6#?mT,YkK%Vd+WSlQ.P5M<]uAK1Po+S@)jbCLKo&ZfIkK*h3'4m^M[laIr2I;FptUC9cLGH0g#s_ZFP=4j4=B:!l>37J]HF#Lkn;[BF9SP"5U76MBeG2V5YWjkB/%P\E@gJ9R=`'NHku^-^J6c_^`l:A9\Rjm&cCG3mHQJ,@DSN#R&'=\p&tDmT@AU5gomf7VbP'dZ])+4]]+cUj43bTqEn-WQoOM.[]5lKPtPT2FQ(YSm\aMf-P+Vn1[!$<%Fa6Oft.DQ7N/&8<G<G#J(\2`rkKb)PbFIXb(\u]?Z%oUp"W0SrmHO4\sfn^YK_Ri*/h&mX`[`>RJ1Lh+8lLHK^\RU<YjKLj:J?>;21!/-NUiJI8_QdEL*pno0pfgWVdd'O3-NE2Er5e!qR6'o<^$9$"h:!rm&\,j%gR^Z7`s=hmXiXYr(m4(?pPi0co*`p*oQljjt5190>".f^g1/%_UN+7o<#ki6g?2:,f8+k16ZJK=W\jFhr&F0rCQ[6lre$DAHf'e(qGa-Ml-dqP9lpEQ8%G0q.dCS4&g'[><&QEn&Ch!X(`E=I"db/B/a/BP^CAF.(t-g:ah'J15):223]fA`8iO48RcBjEVkEafJ<&X>:Q&+&gU)MFo/]&RsMM$5sn7'LeW]H%g*gU[sAc?c&K/Cog`A)[C#7D6>ThkKE)odq0,1`XsOH@6/+88SQEq\J?!R^$*%eM=M+\VU6:;k6BshKcur:->9TW)p]`P8qCnVfDQ(;92dC_>1<@]<SR@kJIW2I1PO%+:#1/V\ulAM+YR&f:Eb*&a^1<(jguJ!$+?$:=(7Z\`gg)"<9VWF:VW#cK>#AW4$?kAmc]GrO8kfLq8e$pKB[bZV@H@\tJB!+0:nE8e^R4l/++2L3]Ffp)7i)0`(WfDa^t,iWWo@1-'p?gcpRCjD7HK=F'uT#@<bhh73U0g/QTfeg>aO5]A4"161r$,:epp075@uUh^M+HILRSMHPM!euZo7/'S89BJhj/hbXRfgEecd27I;L":5B,[`ImJ;0Q6Q?,Beo_+g]imaZls9+5:?Uoa`79gc"ns8PX=-j6"2M5nO_%T"g^#rCg=]Q8c\dm7Fb]gYhLS4Z"I`]GqNqaKC#/uLe]pIhES.g1a:M;F:W<j!#o5Tn&W6g\fV)Yr-EiD+<$.q^r7NBoQt9FtsQe*Ce"7'-]-q\g8+O0KBMb@HE=\Y^Rp^t\Xs#'WGNSZo?OR!V*>qnoBAmuU5_pT6PU=!$5-aAV48<Dst8FC1k,p=GsZ8ZrL*je5KCPMjOqh-=6$Agh+X"_'f;;5>W&Jn>?Y=k`3=Ng245$7a*EcV8eCZ5&YEGDPgLV[NX(.YNmeBNu?Se?Li,l+/U\"c_LM5-%Q^ZiZ@ZQTo_KbCr:J@D<Q+acgeW@Y1<h&$%1jFXAorVaZh+W`0!Q/([Js'o>$#N,elZ`@Mf4\H[JGNlKJ!-rUF4".T_n[Ea"ho:1Z5=ZZCHfk^SIg#OXfS,N;jjou]AVo.7%qSoomrr-lB57gPt9],>5e*j^6Li:lIZn8p`"8t=?cO#K(<E,j$UkP0)]S[[naA`K[fcG3Q]+PVnUg?XER0%5$au.9sithoM.3HW`NBIeW%etJG'7)mR0%FX\rlP\(WElh2_Eh*n:N8g1:agRG('::>L=V&"RY)=TG7q,W=c$X;"V>.Q^*j`_.:UWo7TUMuq([b0;#q7T99mIu_/!JIaT;p?VA[NaDNO]@->?.\A.0%cPNHX7IT%:Xo,!ZLOl3VIrQOKSb;T)EnWBmMGkiL5=:"E7EDc(k_6RFRS?:/9l,EGH#<:JadbkE,&o<AN69GtQq0F>G<osG!mk(i#R7o65C^9AUl+VTh)!((bQ7hWu^O,k=.5.kB!%dmYQpK&Z/30i/WaDVTAO0gsjt*-!>%?Es#Fo5TSQdD[S)\%aHY[F4H>1TjK)&`n6Np[J;3\@da7/K)g,5^h0\Z/rlaY)"IBetiN63P9$k+]1ij,:("Xl;bZ>%Ni\lLjDFu=ErFRM`/Ze<\!Dj2+$(maLI?@dtsWufVj/jRL4T<c/J:qj"a"Iq=,AT9J:Q,U$c6<3(pG'q32(XSqHq_#ss/4NApg^g!KWm#)+Zi0J"Gg43"RM+Qg'su;+gs#1/[o=f1MA[;lCbDG=cc-._:Hm6kQnRVZ2mPq1]=bkf]`$1Co(Hhh*o1.o?XE\;[s-EV[7VC&=lA'5>dJgqX9N?jp/-@q8Cm?2WZXc%4d@L+5n@E]HpB&^KafNJ.NZe;@u:-TM&?t)/tF&Y9i9:*dn'TZ.gkB*BU,t;jkD_jr]!'D030sb#5cDf$FC%@KEK-$bl4&7N*RY6p=qd7A>%h%&%Hmrrid"\brQB'%0nn?_@r"j`MlhIJmd@+Y,!AoEL0WXHl\Vt#PA-"XsM&MWYD6P^a`KC52K#R7D*$7(B[B?#;$"8?3(EqInjOZh\&\7<,:#+1nf%1JjRZ;Q-fkN`ghdSg&Ns,\1Z4PYc8Ga=[Of+XI$%,qsV_:Wh>41:eC7oF#(=XW[fb5^.ugkL[6nVel>\I;1@!]A8E5-4A]QEi'2?srU?sG@X'fNSr;=[gDF7:#2nU#'+J%`b;6@5$mq"n@-e]hDrdWIgARcqFS%fjZVoW~>endstream
endobj
53 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2946
>>
stream
Gb!#^D/\/g')nJ00u/3W[]qCKeS9'=\Z+V$025?bf``,l!nj;bD.QQpaa(F(^I.;*Z6EG7>9"DElS':f3A]a?o8H@.`ZHE(?Yf^+c!YK^J1**U!mr8&B%J`.Sc!Us;Ft@HaXY]SYkTl;L6%0orY)G0HnHZXcu_oYLgiWAW";j/rc02cL27>W."A*i%>Rpom3ssd,P2mHi?:pud]4'NE0,ms_I=3NSRMqu..99mJgDdN5XCPp'EpF'EU!D[9I'2DYUG6)R/Ml*H8=0KYP'=4BJa,%4a<7t@X@_U?gJa2lkWQ"75AC`[r-2`V%)L$Mk0M..>?O08D6&2g/TiOY%g2M^gh;e#jl;bh@!F&e$+,th&#)J^R1&L^H>62GIQ&SG^A!V6gM>#"nS)KC5YU?@<rqOgQ8Pa55(W51\Fj86\oCq]Da8](7#J``tl*2"X04j?!=uT'm.m@7\seYo`"gtL2"P7$MIppUDA#&Q$-=76^=sN,;30RJD-tE]=.Gg2)05E&([oD:`hU>U%$_+)>nZ%!t474q8^s*E9OX?TF`g'Mr<(Z/DF\GS`6En[dfl)I0V?LVI;lD>88r]gJR;mruAQ;lkk//3dnSq,C"BK<!3_5\Z2"()cP)%g\:fe&OlJf"M_PlSS[]?JS,%%"J.dF1Z*P3,q?6T<KXoaqeWg-!0:ZnD*%ZB3u^DD/hY0<pJ4jtn#d0C:XV7Fj,NGP\6%d4"SO`[[g65-gi2'kLg0,B])IlkV^+&Hak4nYouf\WSM/dA(pjUYlQ!>F?AjoJ0Hg/6LYT.6R#PNtQZ$R9lumPrNq&j:a9l*"RsfBL?V'iKD!lVVcb7e7HL.Ih"M`s25>S)K@VU.=b+I/)M58%IW"(S!d\>m?4oQ`\'mq2Im,mF.#s&#A(TDZ]MdKls8(e$2]YXf3Z3`'tKaA`1'?]0bP"d?^Q(/)n\U9M+iEPR=BY%^_F]lU;Y=k`a7&$h"0M*ln3b:[#+W`Epbg)Wqs%kglQP)uMBa>ap`<;<p*d](/CPs"V&[uYgot8`'HT\Dnr#&&Q<MQcY8KK@]Y(EGVKE.17/!dVr/ZR6T5R=WpTL&_`Z-95'lCj20g?I.p7_R@!-5R9@7QCHcLse:PrMqh-6oQCEPc\H&hT%IOc_Rim&ImcJK]5)j?288sr.mK%$8=)(Z[XO,.;?7W'kt80MQ8rk]!7l^PJ:bIWG;W).&UieUZ5X"gtf`RCLDu@q+f"98!J>Tm)Bbd(EBM4Ct0`DSc(^]1l?YL.lLF6RtjJra=>Gs26.@$@q:KO#fBIgY45^]5=0%Mil*'?#(bXkSLB+l+!?,5.Ja&]UOb+Jc7m2]!U8sIUZ9`Bb$V0nn^%d7?`m3e:#T]s79#+4Bb@u'["(&%C+n-po5F&BLX*@ZTY;'nf8fqqSH;e"BXFX=hDi#MKp5Y$">KY(JK:p)e@IaVSK2fo-rdTq.(&,5-jTL=glZf&0KHK32/pGl(gnDAm(%nVTlu5(?nZsIVK9C1\OSB6\P&9t38U2X4kcg9W5-,CobKaYm*Zimo5_bM31a$>VSCS=E03HfjplKM_Ac.g)G*hI%pGduY(h+CBmXO>+^YhDX%F%[:WYjS=@39"ME#,t:>mmr6<mW[_,2HB8&SJr^ek4!-b>`d"MVQsYhPa!)bF$(Hp5X6CKZ4kC6C3M<\5iK'hsiiJTB'ZAHajh9R+CX`!UZih[Y7"4_$s/=]9f?7#)'k\K9SfCg^<[;gl>V8c/uh!hTbH%HEZ',^2OH&s&r%&_hNPS"&/jn!NJClg4mp`uN?;nPi*>;J\)$l1JN1MC([;`$gNILjjV$$L*_.e42VdrF\'"rW]R@<-t*YJX5E/5W@0,M$-sG,N8Q&5^>C4M"\ha@=YA\'_^.s!4BrRo0*7U.iD=h;^4\JUhY5cn@"2`UJYqe95MuP_n8i`K17on`pR#7o#C*TIuH=pii.9YH.%:''%5G"HUf`lr1o6#/n3$S]6fp",AAUA^.Kq]mFP\G!phVZg5fAhk.T?AJ*nRF4hSdKS$*9UmI$=9!E[:G4%,_F^H;?cV@mklV2MQS6qMaS>pMFlVTugR3kOEGc?&sQ#ufTd_0PL>pGu_(ZBsdj)jf?pSW,he^"qT59Noe#iun<(#.4#6^TH:r0p4p.%sJYK:<ug&jK(M*)"1[=9YX<VgkF#p4??NShDnUgptT:m>oB\Y[W4AD&S40>i8fTG:>YO8f]#!I`aCG-mhZQ_"OrGl9Y^X:juMq:/G!^kMuSiCH.%H!Fm$mXr!k8oTD&T<`='VZ8==2_hF5)L)2*sf>U9(1_F#@rhD8`GDrKH#11s>_n5&2jdknB>4E5flY-=;5U'Dt#M"=F)8$((dM:Zje?[@`N#1J@6/<,#M)nNOZSbsjtBPig4nmOTmSI=#1k^oN27%H^24antA^K!YN>^Ug/r+phQn%=B^Vt7=o>1G1G<"5[i?`TV==Y__s"c/HP<5Lpia_2P6(BNLIG?fV$9?aC5CCn[Ndf7klF`o8Z'@cRfCCXrC$$6*62$&"kJd]T5r=[R"UQ7ho:GCsQnG-;*Unnu<4W*#R(ZnrR6[nFlQM&C[;18Zf)Fa@W[U?8\d&Q]a]+tQ![jVpsB"2#80gS9n'Bg'FhUk\+U5Eb+;t/j_p2kS.qn'4Tg?]H/CgA%2L/"\X8VVTY;dXd4^>euA-h`/_gYA>**Gp;2r[=d5abC21+o+0X1qLEu14$MOO(JpOn^HTA4T8h!s2KZV7C6m,/\[A[`@RfrNF*d1B3.mXn\t:g\+0*)Ho(V@4oY@S_%&0pPWH1:TCh+4VsfX7EBe.h"JO"*Q[e&X,D7T`=M,_%-^"65r`']iO$?8B+iN^6B's_NaF&R!Bm>B)R.)+XI-Wk3'OY+bWZ$]Jo[jNh(0`kNc]>!mm?1/&&CZ1#kDiJuSQh8>P0/B-\nXiJBF`E+P"s(p(u$iT!9W-!E:Pq+iDT=~>endstream
endobj
xref
0 48
0 54
0000000000 65535 f
0000000061 00000 n
0000000146 00000 n
@@ -289,44 +340,50 @@ xref
0000002279 00000 n
0000002427 00000 n
0000002543 00000 n
0000002856 00000 n
0000002934 00000 n
0000003040 00000 n
0000003124 00000 n
0000002621 00000 n
0000002727 00000 n
0000002811 00000 n
0000003017 00000 n
0000003330 00000 n
0000003536 00000 n
0000003742 00000 n
0000003829 00000 n
0000004140 00000 n
0000004215 00000 n
0000004325 00000 n
0000004457 00000 n
0000004592 00000 n
0000003948 00000 n
0000004154 00000 n
0000004360 00000 n
0000004447 00000 n
0000004758 00000 n
0000004880 00000 n
0000005001 00000 n
0000005155 00000 n
0000005280 00000 n
0000005405 00000 n
0000005536 00000 n
0000005715 00000 n
0000005860 00000 n
0000006008 00000 n
0000006111 00000 n
0000006193 00000 n
0000007236 00000 n
0000011002 00000 n
0000014455 00000 n
0000004833 00000 n
0000004943 00000 n
0000005075 00000 n
0000005210 00000 n
0000005376 00000 n
0000005498 00000 n
0000005619 00000 n
0000005773 00000 n
0000005898 00000 n
0000006023 00000 n
0000006154 00000 n
0000006333 00000 n
0000006478 00000 n
0000006626 00000 n
0000006729 00000 n
0000006832 00000 n
0000007767 00000 n
0000008743 00000 n
0000008973 00000 n
0000009201 00000 n
0000012989 00000 n
0000016487 00000 n
trailer
<<
/ID
[<ddd886f869ceb4f407d340fda95ecc82><ddd886f869ceb4f407d340fda95ecc82>]
[<0fe2b532305c2f37dd6c62ca6bdde964><0fe2b532305c2f37dd6c62ca6bdde964>]
% ReportLab generated PDF document -- digest (opensource)
/Info 27 0 R
/Root 26 0 R
/Size 48
/Info 30 0 R
/Root 29 0 R
/Size 54
>>
startxref
17378
19525
%%EOF

View File

@@ -1,5 +1,24 @@
# Alpha soak checklist (LAN demo)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-23 |
| Last modification date | 2026-05-23 |
| Co-authored | |
| Severity | medium |
| State | scheduled |
| Document type | draft |
<!-- doc-meta:end -->
\newpage
\newpage
---
Manual QA on **two devices** on the same WiFi. Goal: stable show path without experimental transports or stream protection.
---
@@ -10,6 +29,17 @@ Manual QA on **two devices** on the same WiFi. Goal: stable show path without
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 10 0 R /F4 12 0 R /F5 13 0 R /F6 14 0 R
/F1 2 0 R /F2 3 0 R /F3 10 0 R /F4 11 0 R /F5 12 0 R /F6 13 0 R
>>
endobj
2 0 obj
@@ -17,32 +17,32 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 716.2874 102.157 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 762.0394 102.157 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 705.2874 122.829 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 751.0394 122.829 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 694.2874 137.053 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 740.0394 137.053 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 683.2874 89.69304 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 729.0394 89.69304 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 672.2874 105.709 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 718.0394 105.709 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 661.2874 131.061 672.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 707.0394 131.061 718.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
@@ -52,32 +52,22 @@ endobj
endobj
11 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R ] /Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 25 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /ZapfDingbats /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
12 0 obj
<<
/BaseFont /ZapfDingbats /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
13 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
14 0 obj
<<
/BaseFont /Symbol /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
15 0 obj
<<
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 25 0 R /Resources <<
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 28 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -85,73 +75,134 @@ endobj
/Type /Page
>>
endobj
15 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R ] /Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 28 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
16 0 obj
<<
/Outlines 18 0 R /PageMode /UseNone /Pages 25 0 R /Type /Catalog
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 28 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
17 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190926+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190926+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Alpha soak checklist \(LAN demo\)) /Trapped /False
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 28 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
18 0 obj
<<
/Count 6 /First 19 0 R /Last 24 0 R /Type /Outlines
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 28 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
19 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 20 0 R /Parent 18 0 R /Title (Before you start)
/Outlines 21 0 R /PageMode /UseNone /Pages 28 0 R /Type /Catalog
>>
endobj
20 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 21 0 R /Parent 18 0 R /Prev 19 0 R /Title (Happy path \(~15 min\))
/Author (Android Cast project) /CreationDate (D:20260616121122+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121122+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Alpha soak checklist \(LAN demo\)) /Trapped /False
>>
endobj
21 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 22 0 R /Parent 18 0 R /Prev 20 0 R /Title (Stress \(optional, ~10 min\))
/Count 6 /First 22 0 R /Last 27 0 R /Type /Outlines
>>
endobj
22 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 23 0 R /Parent 18 0 R /Prev 21 0 R /Title (Pass criteria)
/Dest [ 14 0 R /Fit ] /Next 23 0 R /Parent 21 0 R /Title (Before you start)
>>
endobj
23 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 24 0 R /Parent 18 0 R /Prev 22 0 R /Title (If something fails)
/Dest [ 14 0 R /Fit ] /Next 24 0 R /Parent 21 0 R /Prev 22 0 R /Title (Happy path \(~15 min\))
>>
endobj
24 0 obj
<<
/Dest [ 15 0 R /Fit ] /Parent 18 0 R /Prev 23 0 R /Title (Not in alpha soak scope)
/Dest [ 14 0 R /Fit ] /Next 25 0 R /Parent 21 0 R /Prev 23 0 R /Title (Stress \(optional, ~10 min\))
>>
endobj
25 0 obj
<<
/Count 2 /Kids [ 11 0 R 15 0 R ] /Type /Pages
/Dest [ 14 0 R /Fit ] /Next 26 0 R /Parent 21 0 R /Prev 24 0 R /Title (Pass criteria)
>>
endobj
26 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 592
/Dest [ 14 0 R /Fit ] /Next 27 0 R /Parent 21 0 R /Prev 25 0 R /Title (If something fails)
>>
stream
Gatn#?Z2Df'ZJu$.F)EaD4^b-L:sG;U/$WX9]7_Sj:\Ap!+r[GW\=>;1Kg3G;**)SZ31fqlgqa?a-V@3`HKS%!A8G@S2)dYHjpjR#l+m9o$Qn<H]3nmP,'gl+Jg>_A5UDU^BmWFL]rUU&h6fk)=oCgYd^C3-elg8j@t`o?u[j9GqZsd+A@N+ML:-JV!^hYB@I,SWJaJV3KN9H2S$h"2eI>TJc$>TGPLYi0l[*tlP+-O8:4g).E`?Yj7b:/+Rq["emjJad/Lokj/FmF-F<NujQGP"j;Vf6:IP4KLaD#Zg``0t&8WFB]Ut/N)p/[#*Tu^behCkRVY.OnD?+'(mapc_V[fQ8%^DT$V-Y+AEGr:)?<KKXS;MBE?`C3?8#L_P4S',#el;%Q1+sjt)*\qS_HZD4O>i`69WRIQGR+O3'I8*b&Pdr%<PU#!jgD5?!+eaJV>PHV/o[S6=gb_@X/[6!^a.4N-%BboWYXkR8R,[b4bQ+_KVe%SCRRY"j?*XZ@?cSC;6hl[>Nel/V[8ZZ9/p5LmQk-d)i$Lb2gn9hcVsb@oUWE#^/Q.kgNCO0jb?\D?A!!NdTB#"MT+d4#fg0M~>endstream
endobj
27 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2557
/Dest [ 14 0 R /Fit ] /Parent 21 0 R /Prev 26 0 R /Title (Not in alpha soak scope)
>>
endobj
28 0 obj
<<
/Count 5 /Kids [ 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R ] /Type /Pages
>>
endobj
29 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 840
>>
stream
Gau0Fb?s#6(>eXaS7Ti[>t]VmYY)ITJLRF[K\K3Z_GQ*na7?Y";E"L.kK'hd&'']=IVB+sj<NnNYO<Gu^r-c*IekRF:K.&`R/ip7>l_,=)lD6Va7SHm-`!,D4,,h=9H1Y'cu?(KNR-Q;5"I/+e8Sg,!b1H`lV-;7$T,1cr!7qY/501Hho?j,GR)^4E>$MD%Fh_;3WCOUSeNEgir_GI/NG(m`SlS#7dYT1>\t$i5#pG=/.D;PZJZ-(`?#'pZ]rcI0su[ITp@H6^jed8(+UFUgmj7)Qp`]1$-3sUM)ed+'MHDn-"L\"b=k\h4Q#\8(F$oh9\\#-2,'[_cnidp$)V-7Nnlh6o*fB&_ZLQg_fFQ896^U48=\fKeu5%AV.`3&Sghpl9XF&rRQp=rN&ePl<+?uM7`a@.*YXlZ*Nuo;@1K9u=C>5UfCXf*GRbbI"@\r9p__kmSWQ2EFl<G-!*<?oU.G53VRXpc.7PZ0L@+Hh+c!MK[73=?inQH&Gk]RLbWRD"R9e8^hmC2lEo]h-D#'pY<[D.<H,YFe-,R\lbn.oQ9[=^O&fo8CgaLi27g?5Tf0f*LpUU(0,J,QnqgUCsNnn,8;I=HJ7Y>l[3XO\'ci&?3gL5-rL0?0G<;N5rl$fJ]l6lb%%9@2;@)\AFS@r]E'Pqe@6BgdBfoB%075g7=OWeXulE0.L*?L-Ys2:F#nE$2;m5T2#^TlZhK=WsUF*p4NG"@Z?,6-L,:e'd=f\H!b#,sKmPb2J`ikPm98paL`5mQnX)/X^#k44CKjL<..P2!;sDo"cYkUI0;P'256#@U*$GKAd(Q1m-FPkYgYO,WsPmT;0X'cp7?WE]lF*h^jNGm?]a,FnbMs*pXX6gE>7JaMp<5>RC64dS!6[Ebds'u2(60^JJXNSETA?>[]20uu(a"*dfU+HNH1i)Mdfm%H=f=60EgeHYMM3Ik)%2Lnm)!-,)FR<if%7C>(tFE>h%E-5"dIrAeuY2c2@>KrD\[;Ef3-61;.Dm+&?h(KUKlWNJ.:16qO>4sl9T+1]E$QhBb&?RMD.LCn7KUgBaI.j]F%<i+qg2@p]]jt"4P1KuG_/FGdPm@nRWbP+<1orBI2"hoih*Qf4E"sR(%YAi21Zo;5j2W"mN$TI`[pO5/oH8-\7B+c;#A<8nf,HTUla2h.SSbFo.hbo[kAHi-7NJt35&67p/cG?o-b:"C5U;5B-2$)u\54Z[&3e8mPcbW435$rBT6@M#8(V=#Z*nh[cDgHNKs[0F"u+)F&b?,W;C&tE_g(Dj,SL+*3j8/eJAjT6W5D;iLXFpfgc?^0b]sIXMc:Vd0)BbIRVs52n?r?61.8^YJt*99h#bp\oR\AMnA.o:!(f>t.+V'VIU/Ogfbl.7hNmB,GP3g;Zn.^L9BSY,pf"/+;(#A3LjcM>f&iJ[lrdRfeP=#[bOP)2hS?`-ge#I!06*>Pcd.`](WsfL)EalTkFrD2,7MIm2ZnGd`aSAbAXA_3?O<;)\%#tS)olKrmC#&`m@)Dt>#d:IM[gCsW68g#1:'S0"C4c2>"to.9;K-Y`"U?!1=@+N_0brObc^3[*Y)D=N)b>%Q=n/-i"P^S*b1V4r>#C,Y@iT*RE>=-(=6Tu<'+7aU6G.AmgCIo,jQ+U>)tJ`dNhI$OGEn3%VVH^.66$e)`q^rcF*;:5,Ma2ld8U70?hmIldWt:d:Fi2pKD)TkT5P[?4`f)&tLl&L2+q$_.9ds6Z_W.PB1)@O%e;#QQoX.?b1H>[3#+J^^MDhLQs95XWDC+Y/`51,%qr^6S7GRY12L;@\@"eNl(N3ID([DE@0F:hRC9hdE$B](HWX`@d\F%(M0o%IY/]manSR$[J8u'LadhFT]sE5&^F9R4np<<<DN%"?&5fJ%f=8VWs'bh`AMCkH-g6lH.,V2KsmS^h;7`M[4/W7:;,oj%IFV8qqK^SEaRYL[Z9c:^T8V*=,jF_M]/b_p(;_XjSi*XT!N]YlN;c,`k'mMEk((r)f8M@4)Y>T-pgoOjW1RHO:e[Y^&+imd9uAn2`=4TGerkj;i:Co2f5@N;tO>^8I)h"'b89Ba$Sa4kCmA^I/Pt.G4W%"f@]S*S_5^.>`Wg[ZpB"!fr.,Cc4iXKKXhi`cZU$!FC`QW4hgl8%c_LL9//s*rD+<V6"!t52S]4SdBU>d8tF]^;J6O!TpHm;"h/S*a`c;,N[lYK1ZGjnp75OV]H,Zr'M)@BLr]Z28&3P@m3Sc&Zm"grrh8/Q%;?o%6a"C9fWVb-akM"Y.37MBcs*G$MCgZn'C!k"7\^&=TW-sN'9:;F2cABVYTR+)be*3J$[3"[m2;ML`3?:"HSLTMpK&1#&Us5)];bekIe)`UiYdAQs5cM$SQKLkoY#G=q%(1<c1p;AmU%DbfDmd9$O&Q&J^qd+#P9#f:3=IqImnqXKgHm5:*aq<e6u;<BYR8`-aMX,@mhUjf4bpi2TJO+B1B>.2<7!HhW=DOs5iiCmBdr_P=nSq.mt#;O2Q(.o=g"CV=9foFpdh0MLdTC8ph&BVI75XQSIG2MfnL)f<djl?#@dFleBUfZ,4a`)caKP(7b:)DC/oA~>endstream
Gat=*?#Q2d'Re<2\;t@#\A%rq8+t>)>I:LAg/FgS"_XM<Td-@3s8<?TiF</pKG"[IkM5+XCO?_mIB`KR`W5IT\@G$n#6"s+&-;bM55LI-'7?8u,Z0St!jpO3E`ZA5*@B9E>]LtB<E)%FZt-=)8:ODd-Q^0=n7*Dh!QmM-@sJ(8S=m<($@W7ZDtCUO@$_!lY[![ZdjEd[n1^D[h]Oaqno/^TrZh3i0P^`lc9(ond]/DM8uncO.YN!"f#ih3W5W#Mon2BIF-tg]8IXJRa(Okmik+rM`*oXD6\<g@3P(;KT:d1iU,>:mFr]tXF.:(W[*1.2aHUg56>BnND)q3cSAXQi3M[c3cu)Jj^!,i'+kE!*eJMV4R?rsiU78VO-k)Ui0A-<&`-1^h<mm_CSQi0X#=W78LU;r_k'SML6m=%Z1!Dk7c/,gplf^IM4-i4(*W`Med+`4!,jhk&&_,Pdfn-[?[__C^m*D:dE;TF[i4_-'d4S&"Q\CLY`X\toYRU&"'4b,nKL+2Gg(Sdf#@Ndq)3m"t4*7O>2Tu:#0oqMP>"-UX$Q'qaf)im0j-*VBA@LfC<i'\`mfi3s.p85UP=F6kj`n\R@hV?/\AKI0m*HsB[A1WrGIAIspR;ZQXh-ql5:"F#Cpk3lYKo@2&*=DO@$R;@rF18;'B1\tUocpdmJSD:VSM*LD')ig;?".X7573r"16HMCD1J^c4K*f6@FYiA9gaC+/0LmD1LCKUDjbM+]JQ;.YMIX7"sP."L%')asmuOoO4Y<h!q4GleT,J9VEX;*A#Med/m/qBXb)Odj=;H`iLJ<jI2`O5IjH#M<GXbj:pPWA0V[ondg\fFB/~>endstream
endobj
30 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 535
>>
stream
Gatn#d;%Di'Sc)J'`V`*L8lJ&QFshoX`UX\)>.QKW1MF^8M!Y8<dN5-TBq6:[=ObZ";]Y1qS(kM?ij,^L24I+/h3Au&kJ[!Jo[0P]#LX_np<]Yb$;5=9:eL"`HYGGl+Q_VE@ir6JRrE/Pm1/bPW?S;:"#I%KHZ@jRi(/#&>COG.s&>-E(e]`NOFi*%+R"1ms=^%[#XYarW[h[`tS*,O9YQ8>rlooi-#CRpc&>HQ`#FBRBCm%BAs8Vkp&c9Rs&d066XgU;RhS?L61o-MiDMsjujbaUW/1I[g^,NOh"%%[;Vf4N>Y$Zi`,!b9*D`3ERhF?=INhXAcfM*(&k7lBNgct[k^OnX:]4!g".7%Z=KB_e2nX'd$j2d6'@J&b(B,1Ij)qp?8I3P1jOSG*u29V[JbX/p&&Ruj6#+_$et[!63r9Ql[F/aC"d^F^%:PRder,Or\X?*qLH(2&Rj:6cM)<WQd`%P[.VT;^g;\*.OS*tT'q$ZVb^F#ip`<2-\BPV,G!O2,a1WBLbfc*L]!3ca^8-/-@Z~>endstream
endobj
31 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9"kTAhM``PkDdF-fp`Q&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:emFgZ@onCPq82Ws8G-_Tt6^R9oWtig34W3;D"0MP=sG_Q,?.RGJoD!mbh^0(JJ'S*<~>endstream
endobj
32 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`SgmmFhnNfa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#B](9((,pZH62[FH7Fl==&J^W3%Z>&B5W+giG*2MH_7OtUjbJt$1U9Q2!n~>endstream
endobj
33 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2647
>>
stream
Gau0F8UK2M&A@sBbY`?nKE*sQ4t1AJ]5\fDEc]V3VB?7(7Bg%VplaOk!B3j`7>c7Q`K<`B"5qGtAnVMUIVAGi[flI_JWHEP:^3+D:lAF0\V*0o8,jXX@]!]MB4r5"\0Hb__fG:XURRefL,O%0$3)'?A6LS)L^fOo:d]_>AkNX,MFR;r*b"Q'#:]E+Adg/>G;/gt-aA'I+F.!A'0i9?iaS^.I%Vi7$NVth$MZ63;(E_?<uV;.:K@-R9*0Smm[lb7n-:&S/CZJ/4B]J+9GT*P5l;$Z,aT]GE-"UhK/ch-&qc)2R7QfnKTSl[QUhjQCmiDM`p]c2,"@<i62+c#&AtlWjpA2K=tk\X-<S3.S39NTPh7=jRjU0_if'DTSd@:m3fNHo?kS+&cCP=HTd.!Y$/6c'4Z&WU0Y<dX@;M0C>Joi>QH$5r\uC)jEto"+;5r,nPVfBLEA04GNb-em,0#_4[L'kl3JKTuinA3Z;&"Emi+%#PZ:BRFk.h4:!j4@E7ZmOG9QBE);b/7\K$EcD+e,m^2+KgjinQH&G^&&0/;>it1Z)YG!Q5,=#RR=72I_<i<[D.<H01Yg&fEeiC51FP0jJ5<96;j$;57[N(_LL[[tj$Ki<f<i96OTkN^:oLj_it],cr^[.3h_P;OrKES`g"HlZSXfZ.m\rV>n*lmT5:JN\Z.L@%#"@/:$5,VXKri"cFFZd+r;uDF^_U,&9_TWBdgXp""/7%1bnfD`JI<4>ddY3t@h"YO2(S0ZQLsNpe@Qp?AhMjSrEbo)*Y:2Ral2I]?*Fji:MgfX!nu;RoVJ#B6(CDL)<RM2Lrd\&N-V2J6ITK"6ie<C.bImJ%_4_NZd!T>_g#mq_29njBcG1@DHY6c&\$GXr:?E]&Z,O$54/*=VItE;Brlr])/ik#sZsc0sCOO-"WNQS`-]b,T^J_d,0.eF+>l[uJqNg5OisOCQcEn>[Hn*`3llX)\3n6Yuh,aoT/T%H,!A!3&5#!3bqoC7Dahp"l^,C2^!.jIkhtlCo-0Bk#AJ7>W`SROP(C,-<LF**dns?X.#n1$<5P-`&'AKfr:F>+9*DFPn`qn0gO+BOr&_M*]E1&7Qtudrug)!IHY>g2@p]4m-8KP1M/3_(Tp$V%!'NWn!8"X2;*gfQ4.&M^;!R,!`m/ql>Ti-6CUUNtJr@Ns1KG^Z^"16/fP8Eif]ZY1[0#N,7(&,mcZd<7t>*X2<<<389\N:.(#n+Fd>dlNQ21;?V@b-R't<n!_3!.Znf:nLR&l8i;@`bB!H!2k/9==^S8T/Za"CrI5umV8!&TOdJW_7Z3M9VpI,(q?RD(pU&'n4TpQ`_$>+Ml1$I=H\>UYfSbCg^uJjd7\YgTD-$81"!-5BE2E]4)b\9*&C`<$"HLfQX90RBO;sA3_j"TSo_mtKEL35!XM6(8X.B41#V?R!^se]N3rW)nRb(,2-=ReXNk%>d"a_"ddq#NDeE(p%m16isi)V-d&LHipnAHc]p-KXB7>&Y1k$59f</=sBlXk[&d5^W&]'PU-r^q,9>iV";FrXH>VVCBd[;A7..of">/NS\26!ZZqR@.'V+m<kPCH-&i79^td`?Cg\3`)O,&GP)"05>T'Vj;,+-lK)`7P.E8lbY%;4Zu7a7JeY:6=8%If/2L]"Y?=gAuTs\!^nCNRGR+3qJk)ebd8F&R&+eg/0L6B7NKi<V,ME=S2PQ;HCRXi4ag!+?e(pJ[U,>tOk-Le+f!4]D"G'UhP#9=Wd6sa2NDq./=X55O9Lia64_>K:JB&^NB_H#.p\1RBOA>pNO9gPOi.YPH&%XnpU,=[;RddgUkt`N":_c+'=q)&Mi*(/34_+jFru.?O$.J0gJHb9^dZYlF+]f`D[EAIrH;RT-;3_bk[@bUcQ#!L`D=N>9_l"39eXYFE0d6`_(VsiEf=Ys6Bk4!l5Sn=jq+Sid&9+i6)1jNc.k>eD*;g<^#r+*;fJY*HIKJFg1t_Q\$'#s^:L"T*o(me=b_c:2T!a57NB>1,Pl4"]Vk`lBB.@i#6osBFg[iQJ&='$g89UJh@-PaKW6fM4(+tZ6;\tSpD8+L_;&12C_3MlSDuc(,huV:Bd7bjU??8eg='?-E&_)b((-sD0/[P*X#HKTS"JfA`^W)Vb_FO,Ed[PW%FX:K[JBu;4Q4AH0XkNifoACkNbk,]a4FZn@3!K8-"lGT^Qmat,h>s]o@o<I*QtdCd^`'qL"7C7HO6uUE(efGDK[UM7=p5,7bfoU^6>n*[j,[F!\);4&U?Y$#[!N@4,N5'D+JHEIqWt@6X'BAO=N%&p?QQdqY&`7`^[KOoG4Hb@LJ1_7-9pD#A\dJc7E-n3&')n.;bEerG]S-n+%hWgbDp=B6^6J`+8b>74[u>\\C+VO76F;geRJppNN5n,U-`;X1r!)YS6<O:>]h7TE!:(?]ECGD#^>"LCG*GCS@CK=0PqVrIDV7`JLbm`6ZesSkRMO[1c,;,.2?HNpPR[d@J@-Ru@rES6VtcYP8MbV4ALWU=PG#1jt_BHfCqN_IT_GG^"@l8T0GV!r%dYDK=V.n@Xk>!p!Bj5#3npk!k2g@FUOshsN8>,34mS4a<DrkbP7rH$jmc4siqX/@/0\42<&C7B,Ugk4aacA4rSB(*o[[T5D/m%ZsdIS(Nr81F*2`!bJR;"%W@l&4;k2~>endstream
endobj
xref
0 28
0 34
0000000000 65535 f
0000000061 00000 n
0000000146 00000 n
@@ -164,32 +215,38 @@ xref
0000001101 00000 n
0000001248 00000 n
0000001364 00000 n
0000001618 00000 n
0000001702 00000 n
0000001808 00000 n
0000001886 00000 n
0000001448 00000 n
0000001554 00000 n
0000001632 00000 n
0000001838 00000 n
0000002092 00000 n
0000002179 00000 n
0000002487 00000 n
0000002561 00000 n
0000002659 00000 n
0000002776 00000 n
0000002899 00000 n
0000003007 00000 n
0000003120 00000 n
0000003225 00000 n
0000003293 00000 n
0000003976 00000 n
0000002298 00000 n
0000002504 00000 n
0000002710 00000 n
0000002797 00000 n
0000003105 00000 n
0000003179 00000 n
0000003277 00000 n
0000003394 00000 n
0000003517 00000 n
0000003625 00000 n
0000003738 00000 n
0000003843 00000 n
0000003932 00000 n
0000004863 00000 n
0000005489 00000 n
0000005719 00000 n
0000005947 00000 n
trailer
<<
/ID
[<0031c88799808434ed1ff089b107fa6c><0031c88799808434ed1ff089b107fa6c>]
[<53b93f56e4ba8440cb5af34509f955e7><53b93f56e4ba8440cb5af34509f955e7>]
% ReportLab generated PDF document -- digest (opensource)
/Info 17 0 R
/Root 16 0 R
/Size 28
/Info 20 0 R
/Root 19 0 R
/Size 34
>>
startxref
6625
8686
%%EOF

View File

@@ -1,5 +1,24 @@
# AV quality enhancement — Q&A session notes
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-21 |
| Last modification date | 2026-05-21 |
| Co-authored | |
| Severity | medium |
| State | pending review |
| Document type | internal |
<!-- doc-meta:end -->
\newpage
\newpage
---
Research and recommendations for **movie cast** vs **video cast** quality enhancement in the Android Cast project. Combines user requirements, comparison tables, algorithm choices, placement (sender vs receiver), and fit with the current codebase.
**Status:** Receiver experimental presets in **Developer settings** — audio PCM chain + video GLES post-decode (immersive / HDR shaders).
@@ -15,6 +34,17 @@ Research and recommendations for **movie cast** vs **video cast** quality enhanc
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 26 0 R /F4 28 0 R /F5 29 0 R /F6 31 0 R
/F1 2 0 R /F2 3 0 R /F3 26 0 R /F4 27 0 R /F5 28 0 R /F6 29 0 R
>>
endobj
2 0 obj
@@ -17,112 +17,112 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 716.2874 203.525 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 762.0394 203.525 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 705.2874 205.277 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 751.0394 205.277 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 694.2874 108.373 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 740.0394 108.373 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 683.2874 157.733 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 729.0394 157.733 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 32 0 R /Fit ] /Rect [ 45.68504 672.2874 157.733 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 718.0394 157.733 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 32 0 R /Fit ] /Rect [ 45.68504 661.2874 219.509 672.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 707.0394 219.509 718.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 33 0 R /Fit ] /Rect [ 45.68504 650.2874 150.157 661.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 696.0394 150.157 707.0394 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 33 0 R /Fit ] /Rect [ 45.68504 639.2874 229.309 650.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 685.0394 229.309 696.0394 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 33 0 R /Fit ] /Rect [ 59.68504 628.8499 105.9525 638.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 59.68504 674.6019 105.9525 684.6019 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 33 0 R /Fit ] /Rect [ 59.68504 618.8499 100.53 628.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 59.68504 664.6019 100.53 674.6019 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 33 0 R /Fit ] /Rect [ 59.68504 608.8499 183.8925 618.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 59.68504 654.6019 183.8925 664.6019 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 33 0 R /Fit ] /Rect [ 45.68504 598.2874 206.181 609.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 644.0394 206.181 655.0394 ] /Subtype /Link /Type /Annot
>>
endobj
16 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 33 0 R /Fit ] /Rect [ 59.68504 587.8499 186.81 597.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 59.68504 633.6019 186.81 643.6019 ] /Subtype /Link /Type /Annot
>>
endobj
17 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 33 0 R /Fit ] /Rect [ 59.68504 577.8499 202.8525 587.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 59.68504 623.6019 202.8525 633.6019 ] /Subtype /Link /Type /Annot
>>
endobj
18 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 34 0 R /Fit ] /Rect [ 59.68504 567.8499 208.9125 577.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 59.68504 613.6019 208.9125 623.6019 ] /Subtype /Link /Type /Annot
>>
endobj
19 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 34 0 R /Fit ] /Rect [ 59.68504 557.8499 173.8875 567.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 59.68504 603.6019 173.8875 613.6019 ] /Subtype /Link /Type /Annot
>>
endobj
20 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 34 0 R /Fit ] /Rect [ 45.68504 547.2874 304.461 558.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 593.0394 304.461 604.0394 ] /Subtype /Link /Type /Annot
>>
endobj
21 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 34 0 R /Fit ] /Rect [ 45.68504 536.2874 211.085 547.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 582.0394 211.085 593.0394 ] /Subtype /Link /Type /Annot
>>
endobj
22 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 34 0 R /Fit ] /Rect [ 45.68504 525.2874 195.533 536.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 571.0394 195.533 582.0394 ] /Subtype /Link /Type /Annot
>>
endobj
23 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 35 0 R /Fit ] /Rect [ 45.68504 514.2874 99.04504 525.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 560.0394 99.04504 571.0394 ] /Subtype /Link /Type /Annot
>>
endobj
24 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 35 0 R /Fit ] /Rect [ 45.68504 503.2874 234.197 514.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 549.0394 234.197 560.0394 ] /Subtype /Link /Type /Annot
>>
endobj
25 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 35 0 R /Fit ] /Rect [ 45.68504 492.2874 213.757 503.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /Fit ] /Rect [ 45.68504 538.0394 213.757 549.0394 ] /Subtype /Link /Type /Annot
>>
endobj
26 0 obj
@@ -132,29 +132,22 @@ endobj
endobj
27 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R
24 0 R 25 0 R ] /Contents 62 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 61 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
28 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
29 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
30 0 obj
<<
/Contents 63 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 61 0 R /Resources <<
/Contents 65 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 64 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -164,12 +157,19 @@ endobj
endobj
31 0 obj
<<
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R
24 0 R 25 0 R ] /Contents 66 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 64 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
32 0 obj
<<
/Contents 64 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 61 0 R /Resources <<
/Contents 67 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 64 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -179,7 +179,7 @@ endobj
endobj
33 0 obj
<<
/Contents 65 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 61 0 R /Resources <<
/Contents 68 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 64 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -189,7 +189,7 @@ endobj
endobj
34 0 obj
<<
/Contents 66 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 61 0 R /Resources <<
/Contents 69 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 64 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -199,7 +199,7 @@ endobj
endobj
35 0 obj
<<
/Contents 67 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 61 0 R /Resources <<
/Contents 70 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 64 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -209,181 +209,232 @@ endobj
endobj
36 0 obj
<<
/Outlines 38 0 R /PageMode /UseNone /Pages 61 0 R /Type /Catalog
/Contents 71 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 64 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
37 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190926+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190926+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (AV quality enhancement \204 Q&A session notes) /Trapped /False
/Contents 72 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 64 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
38 0 obj
<<
/Count 24 /First 39 0 R /Last 60 0 R /Type /Outlines
/Contents 73 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 64 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
39 0 obj
<<
/Dest [ 30 0 R /Fit ] /Next 40 0 R /Parent 38 0 R /Title (0. Receiver A/V presets \(product, May 2026\))
/Outlines 41 0 R /PageMode /UseNone /Pages 64 0 R /Type /Catalog
>>
endobj
40 0 obj
<<
/Dest [ 30 0 R /Fit ] /Next 41 0 R /Parent 38 0 R /Prev 39 0 R /Title (1. User requirements \(preliminary conditions\))
/Author (Android Cast project) /CreationDate (D:20260616121122+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121122+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (AV quality enhancement \204 Q&A session notes) /Trapped /False
>>
endobj
41 0 obj
<<
/Dest [ 30 0 R /Fit ] /Next 42 0 R /Parent 38 0 R /Prev 40 0 R /Title (2. Mode overview)
/Count 24 /First 42 0 R /Last 63 0 R /Type /Outlines
>>
endobj
42 0 obj
<<
/Dest [ 30 0 R /Fit ] /Next 43 0 R /Parent 38 0 R /Prev 41 0 R /Title (3. Video \204 method comparison)
/Dest [ 30 0 R /Fit ] /Next 43 0 R /Parent 41 0 R /Title (0. Receiver A/V presets \(product, May 2026\))
>>
endobj
43 0 obj
<<
/Dest [ 32 0 R /Fit ] /Next 44 0 R /Parent 38 0 R /Prev 42 0 R /Title (4. Audio \204 method comparison)
/Dest [ 30 0 R /Fit ] /Next 44 0 R /Parent 41 0 R /Prev 42 0 R /Title (1. User requirements \(preliminary conditions\))
>>
endobj
44 0 obj
<<
/Dest [ 32 0 R /Fit ] /Next 45 0 R /Parent 38 0 R /Prev 43 0 R /Title (5. Single vs 2-frame vs stream \204 decision matrix)
/Dest [ 30 0 R /Fit ] /Next 45 0 R /Parent 41 0 R /Prev 43 0 R /Title (2. Mode overview)
>>
endobj
45 0 obj
<<
/Dest [ 33 0 R /Fit ] /Next 46 0 R /Parent 38 0 R /Prev 44 0 R /Title (6. PTS/DTS reassembly \(2.3\))
/Dest [ 30 0 R /Fit ] /Next 46 0 R /Parent 41 0 R /Prev 44 0 R /Title (3. Video \204 method comparison)
>>
endobj
46 0 obj
<<
/Count 3 /Dest [ 33 0 R /Fit ] /First 47 0 R /Last 49 0 R /Next 50 0 R /Parent 38 0 R
/Prev 45 0 R /Title (7. Pipeline placement: sender \(2.1\) vs receiver \(2.2\))
/Dest [ 30 0 R /Fit ] /Next 47 0 R /Parent 41 0 R /Prev 45 0 R /Title (4. Audio \204 method comparison)
>>
endobj
47 0 obj
<<
/Dest [ 33 0 R /Fit ] /Next 48 0 R /Parent 46 0 R /Title (User question)
/Dest [ 30 0 R /Fit ] /Next 48 0 R /Parent 41 0 R /Prev 46 0 R /Title (5. Single vs 2-frame vs stream \204 decision matrix)
>>
endobj
48 0 obj
<<
/Dest [ 33 0 R /Fit ] /Next 49 0 R /Parent 46 0 R /Prev 47 0 R /Title (Assessment)
/Dest [ 30 0 R /Fit ] /Next 49 0 R /Parent 41 0 R /Prev 47 0 R /Title (6. PTS/DTS reassembly \(2.3\))
>>
endobj
49 0 obj
<<
/Dest [ 33 0 R /Fit ] /Parent 46 0 R /Prev 48 0 R /Title (Preference \(consensus from session\))
/Count 3 /Dest [ 30 0 R /Fit ] /First 50 0 R /Last 52 0 R /Next 53 0 R /Parent 41 0 R
/Prev 48 0 R /Title (7. Pipeline placement: sender \(2.1\) vs receiver \(2.2\))
>>
endobj
50 0 obj
<<
/Count 4 /Dest [ 33 0 R /Fit ] /First 51 0 R /Last 54 0 R /Next 55 0 R /Parent 38 0 R
/Prev 46 0 R /Title (8. Named algorithm pipelines \(best practices\))
/Dest [ 30 0 R /Fit ] /Next 51 0 R /Parent 49 0 R /Title (User question)
>>
endobj
51 0 obj
<<
/Dest [ 33 0 R /Fit ] /Next 52 0 R /Parent 50 0 R /Title (A. Receiver \204 live video cast \(default\))
/Dest [ 30 0 R /Fit ] /Next 52 0 R /Parent 49 0 R /Prev 50 0 R /Title (Assessment)
>>
endobj
52 0 obj
<<
/Dest [ 33 0 R /Fit ] /Next 53 0 R /Parent 50 0 R /Prev 51 0 R /Title (B. Receiver \204 movie cast \(+1 frame delay\))
/Dest [ 30 0 R /Fit ] /Parent 49 0 R /Prev 51 0 R /Title (Preference \(consensus from session\))
>>
endobj
53 0 obj
<<
/Dest [ 34 0 R /Fit ] /Next 54 0 R /Parent 50 0 R /Prev 52 0 R /Title (C. Sender \204 optional compression prep only)
/Count 4 /Dest [ 30 0 R /Fit ] /First 54 0 R /Last 57 0 R /Next 58 0 R /Parent 41 0 R
/Prev 49 0 R /Title (8. Named algorithm pipelines \(best practices\))
>>
endobj
54 0 obj
<<
/Dest [ 34 0 R /Fit ] /Parent 50 0 R /Prev 53 0 R /Title (D. Avoid for realtime in this project)
/Dest [ 30 0 R /Fit ] /Next 55 0 R /Parent 53 0 R /Title (A. Receiver \204 live video cast \(default\))
>>
endobj
55 0 obj
<<
/Dest [ 34 0 R /Fit ] /Next 56 0 R /Parent 38 0 R /Prev 50 0 R /Title (9. Ranked preferences \(quality benefit vs implementation in android cast\))
/Dest [ 30 0 R /Fit ] /Next 56 0 R /Parent 53 0 R /Prev 54 0 R /Title (B. Receiver \204 movie cast \(+1 frame delay\))
>>
endobj
56 0 obj
<<
/Dest [ 34 0 R /Fit ] /Next 57 0 R /Parent 38 0 R /Prev 55 0 R /Title (10. Multithreading pipeline \(target architecture\))
/Dest [ 30 0 R /Fit ] /Next 57 0 R /Parent 53 0 R /Prev 55 0 R /Title (C. Sender \204 optional compression prep only)
>>
endobj
57 0 obj
<<
/Dest [ 34 0 R /Fit ] /Next 58 0 R /Parent 38 0 R /Prev 56 0 R /Title (11. Short answers to numbered conditions)
/Dest [ 30 0 R /Fit ] /Parent 53 0 R /Prev 56 0 R /Title (D. Avoid for realtime in this project)
>>
endobj
58 0 obj
<<
/Dest [ 35 0 R /Fit ] /Next 59 0 R /Parent 38 0 R /Prev 57 0 R /Title (12. Bottom line)
/Dest [ 30 0 R /Fit ] /Next 59 0 R /Parent 41 0 R /Prev 53 0 R /Title (9. Ranked preferences \(quality benefit vs implementation in android cast\))
>>
endobj
59 0 obj
<<
/Dest [ 35 0 R /Fit ] /Next 60 0 R /Parent 38 0 R /Prev 58 0 R /Title (13. Other work in same project session \(context only\))
/Dest [ 30 0 R /Fit ] /Next 60 0 R /Parent 41 0 R /Prev 58 0 R /Title (10. Multithreading pipeline \(target architecture\))
>>
endobj
60 0 obj
<<
/Dest [ 35 0 R /Fit ] /Parent 38 0 R /Prev 59 0 R /Title (14. Open decisions when implementation starts)
/Dest [ 30 0 R /Fit ] /Next 61 0 R /Parent 41 0 R /Prev 59 0 R /Title (11. Short answers to numbered conditions)
>>
endobj
61 0 obj
<<
/Count 6 /Kids [ 27 0 R 30 0 R 32 0 R 33 0 R 34 0 R 35 0 R ] /Type /Pages
/Dest [ 30 0 R /Fit ] /Next 62 0 R /Parent 41 0 R /Prev 60 0 R /Title (12. Bottom line)
>>
endobj
62 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1267
/Dest [ 30 0 R /Fit ] /Next 63 0 R /Parent 41 0 R /Prev 61 0 R /Title (13. Other work in same project session \(context only\))
>>
stream
Gatn&gMYb*&;KZF'Q^[$G.3E$*Sieidf9Q7-<[AM$5a%^M2p7[U-_aQrUq8S#:)c:0We`uQ=NSYE=P3G-j9==rHD*@SE=d2:4Y1A(I02X6%/j,ntX5M]"KnW8Wq%Y"DO<f+<3oH*<(p.df$dUaD8ldBc=2YcgqbdF)O*"B0]u$DA$J2N'e`H3!n"A8/egS6p]_JBQ=KA*Nu8EK4pR`.7>a+$T#e#\2f<A4,j0mr(Om3A#*k4;-'(`@fA<6G\J,mDt*AP)A5[%r>J3HcuDD2n5nM^>[Bs1[m9,T[.dMW/mQ3U>cSbi[s'c<-PrEHDg+.(]BQ6Xo^gTL;O9JT?dQ_?@9M=5]RE4=pGX5_RkB)F97m[*gP0haMG_[^PlS4B68]PWCHMSO,Mm?'gc6nNSOInk!J18>+ll7/R%2quX+_/:^hhM8<Ha)p(G>M%(^=u'lp2D?6]k4I?O]nIn^pFhVqqVN<3hf!f5'QS;HcaUj271AfhcLD^niM8C?W*k'MfdiZen?B=,ht<DIk9HV@[NOQ`<GTe1K;#W5aH9%>J>K#Y_g-rW,YS*f;6j0U9mG(=UD+qlnG[mLP<-K%CsY;A?FgWL@$CIsCHOfhd&&Ja7]0EgBKUVn"OVSl]^OBLY=loF99C85^^q/_3cDTWRuYf0?!a2^K60,GMMSk;p;?#'Z&P;6oppdKnJ].4=XTb^7iG!ZjF3>a]r+Vo+sq(q6b1pNY=#L:)H3`Bn6hgFg&ZV%1CQ3Wfc!\S\f[T8:GGA>m/_#^jI_.Y1[q8kZdtU#"jnPNFkp#r`E%=BPn_8WL.OZi)XacZZY/hCC^A<Nh\l8%RBP'FWbter).$QL=C,Y#`&Xm(iUoY`Z"b<.+)PQOM(3*t%44!Z[bG?-Vo>f5nXmn*ltRePp;p]QdPk1YcbH8sZ\XXt/FqQ09gQJ6bd"@-Y?P4N]M#UOh]=Mui%b!u=;:Y>nX0]<6E3)R5CT.B0E'Wg?lVSEd%u;eic[(OiQ$LP%I4fI4W`('.GiqQ[t5F'lsYDn3Ru(:Yu_d\9Ar/\Ll2E315UIab.A#go"eTab*-9ioZg`T=G/cNB%7f(7jii)Ej;lK]GO@65=-jeLK"?.gN)k*+4(/piOUMJ^Z-LTc/rYi:H*/(>q[d<Mlr&8)WcC.5JtYm``Hnamsq%AoK<N"b1:R*^f+3J9h87-O?!hj>;!K:-_Z3aIQ&DiTer9f2'O[gL?0#I=r\p";@80qckB--(OXD<oVO@PkHU:`Q&]T+*e_2]Vc!&S]in~>endstream
endobj
63 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 4795
/Dest [ 30 0 R /Fit ] /Parent 41 0 R /Prev 62 0 R /Title (14. Open decisions when implementation starts)
>>
stream
Gau`W=``=g%Xua-kXT8p;f(;1f5.RQ9TC^Zn^pI6VTLP+fogZu6fB3/o8qkD5k>]/;jja>=(5+a7&'c>n,[3",/Xp+s18:TYEreiNY8@RjdK"?d`D!Jr4[RKm0,(RC:[qX\uZLmZm8e^20]XdiC-qtU+0:Mj?f/CC07c:Q;<1VP)co2\qS(6nIoi^ff_uq'>%K.KH>u<)[-6M4X]>gR#lG)PF#hU(VH^-0:i?pSho@e8QlN:'[OiaC!YUVO%#U\^L`GOdq?P7XV88SQ:qSq8\/Ko.eM_VHfPXK7WreD(NWN3]SV4T%p;6)KZ1ai[uAAe[H(T>?N($'JXrCK#'NbcP6e*I/"\-N`:5c`bgUDoghju8r+P7T`N"u3$1&IA!rK3M`qM$5I!I?_Z0!K\JenStDAL:fJfAuOjWmMLf*)?V!C'j^1/(:.<g&%A#o\[ug5:/HSMWugD+j<2i/t843u2nmKB%TS5`KK012Q45/_`'GJuJl"UcdEXD2OC3@M1'[GXUuVgjk>'T^n!$b'SX:qZGM?8UB>Mgc<H6K8%5Mn3@cM_qTO$C`SUEo([6_6o:Z7,.ZA:#iqTQ:<G\mJ0V<5c`i"GG':KO,Y<nlUC1_LpndZ/H2FF9ZsRe8n,7TA(G$VSm0Z;V<_-kFXruO`(So`QI*Gaih=lJ%.apW=_k$6YY8m<&Q(.>-S?t#j.Pl>uXJG$u8NKlu;q=XlER+bjZ:p\[:JfHLl.WoU>uG4d)OR0gWaQ;eU"Eb/<$.K88;;!6]b:fYX!Y2JRA),\8nlBAgpCTpWfQ]#i_+E?+4%a[H't.nP8i\Q.'d;E^)RqKG^5-hF)p>RNr4C'pkpQmTAa_mX6;B!EY_-Dn<<r7&G5h;Mk)5;Vn_qC_E^hJ)Ka/;lp6dd7FbB^WO<t>(6M9rYr)js^BidU>Ck&RP!Tn9>_(^f)-Qt@,k7e"@bP*d,XG0MmGGlUL=(5PeCQufe%2E8crH;r\g$Jkq*Ch!;9W*u7<>_u>&3@>2-^`tnbq7hoEq/SL*W7oI0*j9m!8u=Z7Sq5RO8Z\j#cBjKI:Kp3R=fBRUje+qF+st?)I\SZcgg2[L^1-ao!'NR#S&3a1PkPDmK8=kf2R3q<&8k]EW%8G#"3rgGm>6gMo+K^R5j0?,dF.-LkAU\`A*6b6KPGLn_'U*R,l:,P(Qe%\d9sUQ#36Lh?9?fffFb/3un+L]j_dhM,;q:C`maO+e0A(jT+:E>ENN6Y$l!=?*J!',Z*+JgRNH9"L:TCmi$b/+C)Fj9O4Ho&9%YZ2q2mZ\ld[AcQcNR&8oDde+1cUMU2I$bd7:\u^NMc6<ct(++jpARO)^npp.-FfoQ`VX.C<4l_VZ`81Zn&"kS=!(`,=[PG!3V%\%OKGh<aA/ZSE=!T_sN?`]=GlZ(-+sL(1]"'/73Y9Od9pGdLI]2[QDfPR\?jCMj@qu::MK]Ah)W83$RF]o=IMB>PE,'[C(>%<^?Tf'.U2[2.M097YNfmqt!6Bfd[S[G]!J(-T82_u4,p5Fn5.8]*&/gI#NRGB2rNHC1JLpG3@6Gl-ZdhX%rZCq0f*f\u9MMF\rVQTm$\2PZ-#<m&+952$Gn:'uo5j`cA%A2_R*eV40Mc0YT#q)L22qW].L,su1^;m;*)I,I<Q[1tY3)U4/6!,p$`\%(g;)\4Tc!d(&&.=p0%l-<O4AA?X![Ji3b26qm)*#I;$L0ojs&W04A3.G&M^K-W!u#Xq@$h#Hqp7mecu3P$HVWI5K^X#_,8,(5a8+,MPm^HJ5h]$pm,j,(J#9ApgKrd`ejg*EsUT@(?\*()1hfT\+8m2-,\n]8-G)hSJ#$AYgGoa[fE[A$.T3T'K?(<+ba%7#MLJDGTc9/BX>G!2giS5M'XXU3#4tkSHOr.M,Om<,u#ZUi&VE:*8cMbi+s7KUusZ0Y>2p.2up;56!`(fX]p/47?ESldRW#Ra`"tp&2IInR>[?##'b^7&F=cKHG'IX0K3sbo,u4FP]!&!8@k[75ZR\>0NteJr\o+M)CnsT)<'-F4pt:1Yb(Z:r`h(%#jMnTAlL79Zc8)LFnMWIO-`99."@+M=WQlV%[b9k/:N3/h.!:tb"F]X=o;'3=!31/**$'0IR7?EB4!WF3mMo(Mankp<U5pjQfMl(_SY^HpmnFH[K+BiM1HU#I5rHDi%TI>7al6@qPbF&[$*faP7@Z@[C-"&M.TuBKUF+u.Zr'Eb-%[u0LSj5'4Y`#oXLhm:FV07Q6s`0]SmXq-l/?#oa!]8E:[m8+oJi`hHpP<"?-k]-uib:_M.<+76'M;=p.l'\o#2#ADl!>n8>\h!K;WG,\kjN#BqRGeS,e.d$Pq+;si&g\?$CDc0Xa+Aoe8d;*>H'+TfH>0#/0=%CMn_*giJ(I=/t5$"@\'I0CEs@CSUQZ"$@TKrSH\;n=Q<.S#'J84nrm1u!%K!%0F&!6TA10SJ3<'XEb8!g:M9&&%2+$^;n;L?ac)"3m`>?o*?(^L\NIJ?jljEuLtO:H324GLK!S%raf_+FrXSP>pl0j=b;I%Z^`.G!p!qJQ2iUd!'Xp,d>G<,,[:(1mN6R+p`JL(;$EEO9].q:l\q3iGQ!kl`jhrLsdpNA,nnL0a\2&rp(bb14Xe>J>-.E]_MfWV?tV>Z99]3HH7fSdZ+g+,,pY8"6a10b!1VO!)7Zf:6RMH:6<)GYDhl&<2(5F@L2+;[sV;j>s97?.+%:KItn+V1:>o^J8YI:#6Ip-6k^+:*LF+Qk+)kaZpEO2,1")-AMS-+#R>p[n9pCRD%iT*,G\r/G<U4rl9E0q$/^E[Rikb^ZA6DV)1k9dfbhgBhUL@K%sr)KBS0bj@ZZb!7j@**0@>Cc8YjC)L\o3(E5LCaB`<AhD`^/B3S\S(==PRtpGX5GpNN7QDWg#JLY6kS#Vh^s%V:1892$:L\>p!"H"O9V9&17(oGii*/K@6E$R'ThZdAX1=WSDVGt9Xi^>K)1o;9J3eM8CK\,4o3.U`0p_T]e+iSt.>MWcbf,s3(1'I\^h=DO^2@&`1W!r7M,^1N@J$5DNR%Kmg7GI1:V.WaqD2^P]pP.@\dQDWlg$$6=\4uD-VarK%K(siT=74'fW>qlA>.].1eq;q2X%\TF9RJu30.8)/a1$:4Z)Vg0?#>T/Ykk<dhlTdG4mn)">MNFGQ*p/$F/97pYWqQ7H:f2trA.g/1fGumN?(P?Dbj0\:NAShGB0X>=WZiPbY/6VWPP&fA3N3EVn*JR7<@b7-;RWTh*Ee)!FSA"L49prR3,PTLDpGg7MWhSV0ESKhm'\YrA["mnl_10=4,:j:cH$$)>/92kepr9@m;(,S%un)M=pka&DI)?ZdlSO6H4B0T.=h"(/"45fRg<HFAR9L1AP0DTmh_ink]!EL@4)R3mSNG@=As$HdNXI;<ma!Rp[R(;;+$^Hr#RHJ'mWoq>DgXthjIJV0OILQ0&.?@ZWH2`VIMd%,=B('Y#1E)ile7/(I%lQ^G2"tNbTZ'Z[XT)kKWZ&cS/ERf+I5c`R<!)EEFrbH>^3jqN,7tDpto^fcj=IZ;KurRA0<+HhasSMea$Z<t?rPJqa0sT5%U3MJdNgi+Z*LWg_Pq\8%*[%gL7H&A[XEJ'+eg;[4<pV=&$E"'0-HL.r&6_j.6WM?Rao_I>o;X8':F<(oGV2NCfKeZ]DVLes@MHBf#[E,X2u0m$!nQ2[YI!\'C?9UOWoq4f@>4eAK1P3o7p$"I=A;;be]k4l,8RiI0&2630Hm:A2VfAKn$(Kk#e-=6:'8\;KLE-01$fZ"%@<OF!rT(>o^%@'t*ln3mC*'>2$jluPG2MqsgC8m=(ocTIbc;7O>KM:rLn!qWmLZ60/f\6Dq05hWM-U)pOXhHnPRrHu5[cppsH)5%h?7\.CH0p(]*?Es@R2uPdfddt5QR(9.m"7+^o?B0>#ibr#(*F;QUJpTWFP`T,bZU$_W_ZYB/]D:d2Y=+hbm^jTh=?pcmM5jBPk+`6,Ugb_-3E=EKfE<6?/?XYAm2S)gq6e(',R)aBONHU4m)8YcXah<0fMNshs=.(\%gVa*VVkt[k(Mhq(;$p'ZfL9E("V(+2ecA]P\_:+9RY00`Xus?"^,BG$el2L3k.,iWg,`@W,eTQ7Q1i5W+gA<]+;t2-#o4mU3srP^oUba<U@Z@R`_O:2sjoR!&pC*A)l3ZnY"5VhHb2q%>g6^+MR`#V#u-.ij.LZD%D02[Ag6Q'I:1dN9DKJuX,OFB_Vn-!<$h'6`oSC-%=N\eB7=9oHU8ALd7GmD&FqaCa9[rTT$7C^mSD>8!bJ4_5r+^c\4M4d^!#U)>a5-D%GP$-i3EAa+$@N3+#(6k*E`_'#0U]hWN?WC/?8PQOjnOA<ej,8XYQY/6@C!\+>%[c7(I0T9_(\h]Y("2sZr@5t<QRc!TU5N:/%3l"pDm:c#9o=m=pj+NU\5C]ZEjL;mR\ud%)Npl"pZc8Pd+j[?RoXE340-&1_qr^3n\N9%(Oi8S'$^iqmhPqeaBn=0b'VFqb#(7%aG#kO`YV(pF%kkG(Q"p1PdHV^tQdRYOHTk8d.aRY,o&o#0jN53Le'SnCQ)&Y'U->/eY-1%e4q)V8ZT.<;j=]cu]Ymbn$_1tJ/Pjf.'A#*nI(SEO:H@P''c&MIV>K-i_1.hgH19s[]tn25E#RFHpLbJZS2>[dE=M?N^51jUE2__qT"k)JR<nl3.H/VJ9#3g(doP5\*>gEFg7sp<_!fOj/?MjQK)rA"JG^QT\k'#NW7IZJP+O=gE0Ut,E;.rlW^<dl>j2rVf^b^Wf(Ig#`GkWL%JP61Tc2M,gcWMoq+qGq[Y0NlS;P)KArW.ipb.j:Xg.~>endstream
endobj
64 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 4104
/Count 9 /Kids [ 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R ] /Type /Pages
>>
stream
Gau0HgN)%.&q0LUi+8sREC9oAF/JZI\_-F!<ZG8alrLZ3Mj>J)'4)B9ZK$AcDdS#/!RMEEJ1F]9`eKps1qNSBdK_T1OT%W?s-G/7D\h9l$ismk`>TlNEl$`KGeZ67EJ/L2qOn'5j8fc[oU!Xq?`U$i?ZC:Sd>.'"!nW>])qdEB\e#PmXFE=;+s.#_$_IB7^ZFn^<`_'sUD`luDajO[,D;k**2KKXs$/Z'pQ#[4hP?5!*$3W/[X[hU6eu31/sa8(GhD?g/5iLbDH'"t_rR7sG7"6h,inC-H3G(6J]2R"dlFq+]YD1,4.@kuLIka:TH`&&s5`Q`G4V_N;.I>eJ&3>S[@lp^2R#??ZjSd8+ka$;fdB\VP8Wb^mGR'LPFo@i4hhbT^WGi2btbGp:<p&Wp=b7oB0eJL[eZ'6[QUKniYC.DrMi$<JcUg"WK*TgEN`sn"r</&DiEh4*8b*\H_H-iLrO--5W/9cG$ni((Bmbm<%4]+)KPK2AqF*.\3-b[cUs=CNXm`&HgW:8($'qa8[!"J+Ua"OW6tMNQP<D=q321VO_g!beQ?M/7q8"^Ef]79-W"<!cEh:!-e%hAoCLGaCB=<&P$Q;>+Di(pp/>5O@3FN3!D7G#at+6g1flf_2=Pim[2b.fC>\qL^!4%>8ct18Hjjo%'e#:D;$2=14_Wko7/E%1/gq(Id'_aJC/[Y:2I[FR*l5ddY)>99Ms7j3CN._q"Dc[n>\*Uf?@M'F>>lo$A+1<O)ueN-JebQNkgQoG1]B2]?(USh<r$6+0&o@0A<LcX)!mPfSY^MX21AK^LLG!TB>)ZD4$kfqP_\3\`ana/hBI?;1N%$`^XlY3&+==pDEZO@Fm0`o)Ba\%5&_VnZu,D7ZpcdsmfJhd[>bh#mE#\_<QnZ,]8s:0s6p/?OeX\P#odqjfpnW((&5D.6#J$mD*dn,i4*E\*:H_iG1#X]br>BKICeT'X>blV]_XQU3B,k^YuM?cG@(jLk,S(S5Jgr*^`V>L!pbmB.8-+'jL(\s)dJM_4GZh3Gt#XbMJ5@lJ0UtG_hQnHTmBai3jZ^$ip?V#Tj%n==ua.hF?(r%39f>Bn@:g1L<cGEZ3hD;4GbR#T3GP`@OsiJ>M25aJPN.+ac'MV3(,!&;XQ[r]uc0I/eX>(d02G`%)[6V?XL-mI)h'lBcn80N<;&"D!nfZs%M!O\Ljje"48@5;g5Ll$]qUA(*D(4]M[U;A(Q*!$bECam_CS11uN/P?4GdHjfYW!EV_c,\<q@#/7rr0]?N`&:#f,fe`5b3Rr2fMp#C<cA\__nEk@OnjEA.Aj'ik@03>nDf;uBi*kWuR,4_R&=!Jnm_m$6%MCeec&ZpqX,bQ8(Z21/m24!Y[C9oI3^qdnGK(6(]Fhi5M?@EM._W`C#kRRK%nkI!aao'n@0jQ+\2dfNu'rfCZG>2S%fA#@fPOo2``a8UuM^P1,P`@1JJOJ51.1001;nmX`^$\Pg=k'RtX)@T8%HqL[IMtVG\bbW>n)jBeoY8/$XO%G^%tWn.kN>@$#9IYi$%`jJ>[%94kpN!4@KPBtEnD+_O4ba@hdDtE/93$Km#%GI0tp?pYpL8aJBB(iCdhV[,U9lYE"b@@Rh;$T2h^i0g'rM!S2V_(k;3aOj_[B+D<Nl;@WL=ejIXsGU6`7t+a9U:j>E.mL*ZMF-8fRagQ:D$_`G3jdI2O&V-fglTkF1p#@6U"h[0G=&'`+c#9577qW2UN>5=5-;la2FP\eo`m58Pj*_]fHS8MCR#B\&p5`2W>Hj,g]\r#\:W&S@sKX)VOU1Xjg[c9B`Eb`H+=Fk*TY$c%?87GSu:&>d`+;hrY,1dp4F:n.8BF_[@PNdVBohnd>]f!WB.gT`$L8N^gb<!03&VZMYOVc@U.&Y%-Z0phi82giMEQ7]THo[YfV[l+F("*4'1QHZi]dCp>;Y<iT..Abprc)F.SR9fa`(<Cn1OpErmiVPX^X,$Mj[4Ms>ZBdo*C1'"3f#Kmq6Gtn;E]R9Yur=)B%tWp4)R<)+EGM]ibEI]nnrI'^ZNtT3(0MCIS"$DWd>YJkLhBO:g_:/Y.EA9"fCu[`k/\m/!M^%K4FEMM^\3mP+'_^59L;DH%C5ILA]]DWtK5:#F"9J2X<T<#]0=N0f>k:'*Y>YodZ#t*'8q`=(''Rn$TH1-u^pcTN;:LE?WkRbEu"qMK<6bSAVq/qAZFhTlZo95+CZ0PUip*0]&=^KE>V;`AON^$)1WJeQGbB`)_n>Y>]XhPWmE*rtKpa:US\Y%AYu?Th@<a/0dX%m\ck+QA^>`b3CUPUe\mddiJaWq/GVG=rL3mf?EQR)+tYQ9UU*EN$,12fIXpp@5K_^2pE'\;3%Rk,it#Z5WLpuO;a0*>NLnI@=Jo[d1`W](+%Xu'spSP]f94)j!cbWBC3dl^k7+=pN_7rT>S^^#@6thCXu['bggG[1o't&I"e4^L:R.j_u`J.pV0)%Di9Xn3nsbMCV&9\#QRquh@=2-V_ko%"^[=&"kH,6Jg;tf.V0.@CjF0=NU(ioYu%?UMbcJ&c*_>`r@"Frdsa[j4u>*?ng&;48R<lEWC;C6+?n3o$!=L(qdB7Bf(&)J\G<,!.E7;1St1=Jj(p$43)7dWOPqU+[d4IHS2#h*\nco(#Fsio*Dd0KJH$uFbdD5;@[,9XTGZYdB:#\k<oG;IGN>'oA,J#9bX^[C7$Z?3l*0"d@&`jc1S+]DF3q.HnY"F-RY"ufY2f,aiai=CU/9_I)LIgG`IdnfRPVni(Lk*ASR6-%-&`)'H^$3bXQG?7q8$1:?(W0C^!hV=pAH\lB8fsC>UEfkF+>0D3%"1RIZ@!#`2`72Lc2fbofFAOj<E4k5p6Rt=[H>p^iO#eD/j11mLW<?b81=Do[\CegCUe<j>MOhq4P/>aTK.@9J(0%6>kOTPNOeFe2ARt(c:J\bM.c540I>6?-NV^%E\>UeToX56-\l#[$M</"5i\JaQ_f5m(fkma7]<OE"RT8O:h%7ckLc@6O@p[m+AL93Mk\k<d72.P%PnsX+L6hA;TMGArW]Y'DXCXKUf_dNp#kXArn?[L,D&3N+Nb4CM#u*Z/u<$.]+gTfB[d9H9HV.?=u6Bp8HWC6T7]+H,dM7gOb^`<Hi<!Ec8+/#I9g*SWa`mF0Q:GGL<.Oomp)-.T+MM+3&2%BWfX7^[r^c)PUo(CC_H>0roTc"TMG<Q:8a9H_^Ie>UnUcjH23!4`oG5#KU.-gGPtSB'!L^^&@hEanCmJSPeg4=Eu&qWj8,g':2,5kN9A1bO/b*2H[]RXK"u6p[X@#6ioT]GcT1eI:R^?8Z&Hf]9TM..P2Z6N,LMddIY-K!7#Z)D$4Q75>!Z$O;>1uc)X(E-I3(H]QYmo2st7pN9R`F#_oL_M\qh*Ui_lXJ[sd`\@<cOi\aLDLR1gI,%[$MY:HciJi2f=83ol3W#h)c,><"GOhJ0!ZNuW[TMB`cZU<bGs6U8Y]9m-9K*S^!\`uVif(\;iM*dkM*TTL?n"<fl_(cdQIB!a/Go+n/F)V2LTn%BemLK#,P&NB10tY2u',C,1#.>h0=;[f9TD10C^C(4*=&22r1[p?=rhi1RehjVr2[HqNbr^.`B.J9jGRa3K>a5!LFjL%$i__DukPRLsX1BN63<<A!H2f`K*Y.dj(@6I-nhhgo*%O&MY&ST$kh;H_-B(q8r<3>?+;h.C,<t]*n-u>m[^rF+)u&q],O<!5Rgq]R,TtuFRr+uQbj-5L]3+L7T=60Xk3CjDRqbTWqmGjU1LHGZ]+;N'$\@[WoUj.r=_9Y;k*FVKkeY1Koh4U5&^2i[]b\uuM(XC%;ln]=+e;PDpPrkb5VQ<[MB.p\/29$^o1++Y,0TH)mY$i'.u%"S0ce%L0Cq$>fh1pm8OT+[:LUZ^)RX/,TNbEEY+?/C_HoTHnG2n?=MAV/JA/;5RV"sHQ0WZf!67(S)n'C:'7ctFf?jaG9]IkNl0@(HPFd!+$s4I`bM)a&XGoH[g.7*'&R6)s&iJ]1?.MIV/Zc`>M]DOUT.US+,T6s"?*;60U8[[(:aFm,$Gm8Z'QSc^@>B5e*U8_OT$7F6a.&+YJ_b<s/U=#T!(Y9Mq#c#+5J[$g",r9/>Fq#*nJs-!lt0`,EWhF%#6l+J`r~>endstream
endobj
65 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3434
/Filter [ /ASCII85Decode /FlateDecode ] /Length 885
>>
stream
GauHN8U&oK'#+6Ei2C`KM?N\Kota:amMRBlgIb5T5U7VKc)h<#NrJtk\;?-R.K/Dn,r1=ZnC:hk"j-72ZMtpeTpmoCI8Z/Yd<^]b:"%Db*dq:#r,\PG1GrGn/7$hgBpt3dg)@&F@9BI-HRT;*qZp]:GkDAUceE887e$s?$jf(uT2p1%-PTLr3V>>f!Bi*?UcuP?LXpsMol&j>^Yj/qfs'Bs77W)hCBmM<KiMDIP%krABd(UJZ)oHoc:&kAab"&-_?r3J;GlC<[/CI-'VAipA_!XXebKn.gJ:3(mp_DfS6FFp=4>II(Zl1oRkY0n1ZK#6E(<@*SE!MAh;et[N2\_>`VRPr'ZD58p:\6l\fo1mCnJ!,*T^&?U4e4dn+Nbt98]U6B5ISoF=D-F>[K'n\K<<MS9s+b_(tS;6W$5]?:\>Z:A-d[SRDtuPq,NsD1:+NnS+sMQcMm2,%/&Mr/F+##($tBe1FI&'GQP%4R(Ek6<LJ`qX:@,?(Wbd*]Y>joHP8n1+41YKUU;(C@'a('N?.`c!MnoBn[;U`W.I&!j6fVFsqZHaW>!u=6(sMR-e!@]F%d!^c89V&86TOQPhZILaQR4r;h"?FY:87J8<5oJ/'@=Y+-%f)@%,Rg[YDRXUT4`;bhrjj5:hNqT]I.Mn:SAo?]ui9OlG<@SEuSqM]Ql\L)YVOK\Gf8[hnBK7iqc>t/]tl(%i>;))VpE"/[LHQE74XogTmfmk[]<9@B;e7ISA*mBr?s&'cCKpVtW4UV%N#"b:-:)JLD"N_X$/5T%K(2;\,@s2sGZ'g8Dj.qHt$=7Yg(jYK@Ph#R?r;6@XZEU=m$>P&TI_LncoN!u%s6*4sUPGGH+h9cZ2dX\8M7"cq)aWsi)hFo-!!7i-!'HMK&/Nb"i2I[rDdOH6VgLbWeQb!8%Fr@Y#$!R%Yf1k[:lbS+@SITP)29`2VNQ4Wdh;j1`IsOF@Xo:tVo[jZO7B<K<'I0#rD6(KQ&FL)Lk7<H\b+t6GZ>P[TmMCUa<<Z3C#Dk6&cESmb[Cfe!N0qC!nE6+'Z.HaN%poCWE0RFG;1@;*OmWNb41n)X9l-_Ml=YtL^HO$i.F2jJA<YGRE<=/o)'!2Ec=&LKtHI8n::Hu&gb^a6s0]m<_8Q.?I[*n%ToES;DA&:^9p!o[g^ABE>6>c*F:75?9]qO;cFM\k;?K`4_5IPUnBF-![k@KaW%&W0K_s*#^)aU%L>Ks<Y.1+HU*So0!'$-k/S/1XII4$aF<(h(d/Y)Rrf>59gGa`\FkgY35]/CrJ(=?nfa2!(*mT0%<QJ1fX*"G[*E:j;#O!K#adO"+Xs<8m`5br5G0])U,7E/_UZL*8)X92"Tn0K+j@QMP8o_4;-k`&Le4N">>n;RH]"b/6NYB?@)?UBW7Ak7,]hK*B]>uEVl#D!GfJs]n9/KfBF^ucN_XIT_YRb=XCB;5NH7#W6"?6AD9bi$dI:Q#F=Mh9=:":M`p*s'4:ZjSM!mnD\]3q!ETMlanO+4Y`59be.God=kL(oINl*Q-W!3[r3#tVaPkjPG-nYTB$ph@VRiEfe4JTNr?)gpUZM[*Q:-7u."D4cLe"o@O3*gDM$oUq`Xa=C@W>BQ]@/tX@=!UPnQ8f1@,XG\2]&NBZ=C9(fo0D$*EDTf5gP>5dA=3F4BLc1>D`i&e/oKRT#rmO4A9eUeOcSmDlk@],<&Q\hLI%hq0e^o()j-nUVhM\3][K_qD&Y0N[/kNP6InVfMiU.V=KQnbX;1mTgGu4lV!=X5WAdf,/5:_8<UC7Q1deDmbk<-(`^,:tKCAuK,9$'9(PsZ@(AQ,\<Ct^rCF"l6(/l:I!P3PGnPIb+Mitj?>BG4pm<^7Vic.tf^\MBlWD$$1/nIIc`c4q0q!(HR8O]9MG_hb`iWG'OS=Se/+A]d`*BH(n@hV24%=#7H92q;;9B7nT/KN[_$FB#5Xe8ZnSh`[sLTbO80pO&Ykm0F0&t^u9dP*lBMAp."_`67EiP-VAY?i$@`J/Zr>%6Kn^>=@5"Pc9DeapCGOcWVbptuZ*pa'VUi"nu@0D_FJ2E,'m?Y+0QS*=gn&k\9$6SQE]Wp#r>p5i:p.,8^@jSG.P1sAka?h-3h_c`At1nR^k47.*(gOK=+4!X@\N:_i\da.MF`C[a,8%!G1P80kEkGY7)fu8VNDWT0A9#o*8D/l&bZ,dhT'VTpl^@2Z.%L*kqmC^iTQTj\Cm!=8Y.MLQCj6\\jS9EWd+Y0j2gTlSh)fY/&c//?D+JHE[V3=F>'Dc4F&%Q3)/TXfC&`$IKGK@u=QUq,s>_Ce9c-tLG2*20[<KnSnfdWt0'09a'U,ab8Q,9^Jn?0'\U0"V@cFqE$13)&-X@b7.e*kuP2>VSk,-pb&^tMGGV`W]Tf(>l=Ac6$/D4ILMQIE/J'th8SFhM$FhpCQ`O&$jT'%FSjrhl6(o+nip7ijZ!->`PFL9;)PXA^lA:s)^_+ma<QZ4hOPio0T(_:c7>AZOB:EF(!a"6\QhVuo#k;(XQ\>iG6E?p`nqRb`8#BbbPXi-)LOUS=^/80USL0n!@B@T12C.?1f(Sb-Dnmpndp87OKM0mZo2_!"*;/m=,=73=bOQS_sA36YTqK@2o^B[bp40&9I:10V%F_3A9Z/\!L.CH)9*!b1i[N0VR;-&YeOpJ#9'bq.M4NTKn,hM_NZ#psL/T@jsQpWA=b&D;`Ogu$VND+T.jIo@HRD]UjC)l4kX=;*G.]iF+F&_.d?;9_/6=Obste41FLqJ]u+%9##]eaAF`Z"?rKg'1Cpl[+4bnU7+e/n1Q]l'FVq&Gc#mVZB`'MjB&B<\CnM/i:4[F/[pa&KsF:O>D&39OUd1@lt@VMPq@3ItEgU[_+.r69cOX,+1XWi.F<mNB5F<(t<FiQO%B,AD/s0kFA8G'5$rX/I?h/'At(omD>5:HbV$2E)AuqU/_3=5@G&`;nBGqAbOM,Tr031A#W%!H!6Ut:up%VJ]N9Q.?LRhMNjO.C*#iTor^s[q;M3kb@1t%p1LJIEt,MfK(3`U,,'dR-d-*Y>Dd]'ob'`AbIjVda'#6cpDCF559pN#QTR9Q'WprK(q;h5FsUZ7H!qO))Z\o.9&'MXAJ98#Zs]3h\Q?^I7se/]/B@!*eN5G[X/`JU$NbHpFIE)".t/4@<L'bh*0g;1_A+qU4r73*I1`-]#Z$)S5)F[(?VYUdBA&>31*.M[(YF9>SYgNZ5+`pcKZ`$.LGm+5iYQ"Q86rW9h5hpAZAeLip[*78pXanB>RCe.E$\aJC,<7V%l]D]ob<Yp$[O^[8k5Hp^O?pWen))f5+<?QaIL1M=[$0u]6\Xmp"hb+nfI2ODSM,9(H2<](*q3:?\p^q6<h`c4.4Dj;3P>.H\s6MH2$sXj4-d5.rq[MFNRp/"7>F#\!Nr]/+e>.c]=%A$]R6PS$iFB3XqqSC'NHlLs^8_1gG;EG@=*F$.-Zk!4UR0'*~>endstream
Gat=*D/\,^&H9tY\5*d=K^3^WP'kK^G3X`=;6ifX-D:\R9gt4'KNA'GZU5lhK92`3/AF<.miJ+ILHs+>`W&%)p_(C8/HR[5Q@PKE#f^fs$sj/5Z'#J=>sUJ!V$M3+DK'4A!:dk$+GdikBV\=jI]rgl/CX8D!u.&j:mX2Z!TJ?e.MmmRbi8u^$ASN^]PPK.PeViG*lDNkA"D]MQSAZ-cO`4TnC+Q1@A>cN-qtgUF1j",K.@ehpGV_@b]h89M*r>2+G-=8&XmRFWk7F*@3)^AWBqtI#KAI1c-dI,LY:at5J@O)bU3=*H8D,KrVB+F`SS*?CP3nU<J<<\"k#7p)qcKHLO!Cs8Hf?UKfR"(H\A)T@:[`QL?4]Z[,6<AUW:rIJri@+h4s1ZB($@AFe2Z@_TU9s3Yr+Mc<K'M#&Y"sm/MuS#+aRIdUK-mAo&8oC_pX=0#AgG4rm3CODp*J''=sg^"!SS.b[@=M_!<EYT[%+oXFX+RW\,]!pV$i.D]AG8[s&tgXA(l]Il7q\F9*+A2DMV__9rf(/n4O)89]Db\_B*KR*0&O4`3:"(kHtLl)d[ZWm-h@2s0*Lsnf"N95O.keC%D#C(aWdns48\*e3:Kkfas%Sgq<VYX;*k/BHt?[qKG0;<==U(I$!BUX-+dJh)13a"kmb2hR68ADRbgfoJNl$Q^b+o2"V#Le%k7nKki,[;FbraC7O"6))TKdfY5mJV6-\\QtYeW7mTa`c8i/Z*3(K%>ZjART/l#pNS2<2WhiAkRdA'J30g%HNck<J.4_+_q?d,'XR598$523#0'jB'g2OeaBXmma0Ya3]U3<8X)W;Mu.io'Lu+8RVh*DoSEEi3@h?W*(A43WL!o8&Da(d*$SX?<so-Jqu[s8JkH~>endstream
endobj
66 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3891
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1194
>>
stream
GauHO>BAQ-&q801fU4O.7VQV+"N=S#B;WD]N]X]88nuX=h$8ah/2e3AOH^dcqm.EaX*=Z0oL+NV$K(utposN/$YZ3m8'?@m)h@M`S6fp&&Ql,"Rjq?=gqq+NS$-b;IEeabR'r\`_6Rpsd%)W"LW0%_<luVD!K.D#.fXpd8[Q#n2>b<f0[USZ$]Dd)Lu_!gbFA>,RsjB)6ufie'obShV!aS%WnZ$IB`P1VH@a+n(VPJ.4u;ZtD,tfL'A)5fr,cX^fnt*W-KIFU]8OYY8`6L_>b@LT)5M)TNFM7da25nn%c7U:8a/!<&@3`K$53Go9WL'.7:/,6.iTs;SEL=([l!c_8+)iB+fs[:"(u;tVk*92mr[e!1hF>?mpP/\*pgaS:#i@;W=>n?lB.[#<mT'7Sf_B*Ln[&HI4rt"eGPF7SM.,]&3[?ZT\C.FH0p0/f7)\n4ptL%.mH:?[;,`sJVHh;[T?VnH^9i'pr>sh`f+g5n4C^L](n]Z]aI_f8OF$DBX<\$P!lQ?-T'9'$%(P947<4OLOW1i`!$4)KcXFeOUs%4i_dco\aKM^!WH_i1F.2cmu-Fdq^^)QaCdnioY*I6/K:5s';K'sY@s*-legUV0tO"'N<p]>_TSC%Yk6B]-(a&mO.Vi,gS#o=N8!aH(_'5(c=baApMc#(,EBVgaCZjD%!KKS2tE=[?ntsA0cl]5S#p0IRr92AFub&n"u;3D*7bV["od!I^j<?aq_!*'A?.+jE-?CJU7aM0*hSc+S39BV#M:0qAr774_Z1]h](Qe:./KFDBl>(eDHb9b_l:s\7C@tikb.."WEM2.Q9h%?`dMBRYF,Ugh,/tt9K:FAC_]u8Th,19=#!6I'dXMPL%b!69=co/(JEiN@_Eqq);?9AAR:rJ:^nG(iJ"".-8GTs^.&6$;=(4H9s<N4:)$VaNtIC..uD-/jSJ0^L],rb3-It@hMtNbb\BJG2O-q*>Pn)gS.>?2o+sX(R>o`XVhskkT$Q9,)n/Vjh*LpOFo*_a#hFqu^V\[j%XnG:W*AmsVP`)4<`a8^5I93iFWe-"I;Z2O[T#__f@'K[k4Yr`knbcE[+YZaE%a:jOJ76a#!%`R>e^>)A051m4o=T!485?J=Xl%>K<=Ehc9]kukBHda(]lnI(8itd0s5EA^::bhX]A]YPLO7Dj8eR,U6jH^lViP;Q6OBO+j'Pr]T)et(&7^b#Rmc8RNJm/1Bq+L':+#2J'[*`%D%AkYP@ST2i:>2WM)WTp[%_c/h/N.CYr+:&t]5mB*E&KHaWCO>1K\(kSAg:6EL6[M?<GK[/t_*$Lk#qJ:EIYFQBh2I*)g&EH6^&/sHnD0)XS8"<3B(=I*Rh60P;@.ZQ\hDV.C'$WEM6#EOsU[d`H@X;hCU2#MsD$JEIW`Q3s>JirqrNaheWMBE8Zb"ptV!IqEbfS5)/jWp'DnjnIE^A,<2lpUWY0u[h;kb_l]G0(@5OcIX-15D#+_<$[^?No=Xf[h-FTKb%Y(l,7u<DQ'i#>qVW$BD"M?j<'*B-k,98.BP6*L3^i@jJ,/W+=*9W\PdN(q53:*$P''=d%p7dS'jbh[:,+WNL,4NtQiFNdS<c<RV@e]9__%,PiRVDDh_'QEDGncIWG-YfH`;(0u%sD2S>XLc0^#3gTb'D"JX3Kc\DYF;VQ@CGg-bXpR:@[IRU^fjE.!EW8kB25/dBN>cdDX'*lH=VJT=fgU%(mJ8fYN4BA]A.6dH1d<5jUe(kJh&e#r%t>!IlO'1LC,SUKdGbG.)TI`i+o(nAf<$#cO"H"*rNb=9/&0s0`sG"5?Hl7_MXq!+C\SY8/L^]CbMu(TOi)9s+!YeOAbHX3KuHBY3'Aje8@&cJ*[hL#:.U]r!2g@]]l5)'_>B3,6ri/`r05Zi8VO]aa(A]t<VVa/.`3([:oX0*LOo+C6%JYQ,!g,\VZN76\jE"Wo5@g1J'3F;+V,rrBH(oH$#Khe$Y]QpCP=ooG\F[Yh;uoZZqU&?4C+@R_=4$D9c!K0>%s/_.g,i$Y;HP1N^CUN^O,ek;np!He:gM?(_(aO8,[GU8l45I]2=0Ilu@.)M+JjJjaEdb3#8&;YaL?!.b.DWFEfEO*,b<Sh(d75D>;8_7bit*9cb2NmL!HHOU\IJ1h.M<L*LR7IG-&==gn-5g7RO7`fVOB8./#f4LNlt5!kMY_/ThTKEX8TH=bSV4qbbL:7qH2T#hg>R_6MHd0k`_-3N$_d,^ld\G.5S9r6ktEu]&74"Na4bLbEn&t\-#0Xk0D9h6"E]H*\>R=doCnXO*ga?J:5>V:t5R*S1qS%Mo6<+0#.%-CAr"iB?Z0]c%%HQX>bFO4G&O?*,=[=L$*<HH:G/enAXOG<>A)rCG["PskXH1MMJ\>E]B!ApeHbl[6*^=D!)\BbOWf$&bXBs7n^ckSj;4@BAS-S*C^a.%0s,0uS!B>FF%UTXTHnLGm,2Npf6#LY-qo*]G$'7mhVGoQ9-1Wn0H_rjN>Ur[0.N.Y(LpUnI2JaZ2HnSS)JD?_2:dR@0TmX.l;&Du'BVg7VYQc/XdlUCSNjb?;^3E.;npqD-h#TnsKX-&%?WZ78Nd*nq>V`-Z7)e6u=bM5l@Y&F,4l)P\J4qDm`q,!?#-b$*r>r?[Oo()@F<c4*@7Tk$,:mC]da)p-61t0j!ZX5ag1L8>YcL)%>>#pa/O(kTqft";.NMt+M:Kr=lZ8qM98SS+@;P:;,`jjeuGOa$8?hT8Be$;4<IY`9@G!j`CGn2a/I5BM(11O6:o4'c5Z(/q.(Ndh>7^@Ytg.N-05m#)Ts'N`#CG]CsZ0[c)ppsrs-NDel+7g3XGj?o0S0X/6s0&PGFa8(kEK%ZT'bCNIoJU?(2E*8^r]fI,:Sp>Qd4TuM9Ii=do&`'h8:D((8(hpl>.'Z^:*^E?2,0tXr?BReg!d6S1sq0;N1GLa5(#5R1[I5ae]\nS*kiPTgO1'BPs,)[[%]RNXR9IPo9;EF:^q]dMp)2.&-7((pJK)eK'R=ckJMtuO>WCqjfri%"YL79njrYNh;fO@Vu!7/jFuG\iCT@7_5TI0hFhdp(7nJb9dehO`^@as"@*k#8kZmWG0>E,jK8lCOfS*2E/`+,dF`f>0fqUAC#+R%,`qZf#DW"6GgL's++Lm=0q*JWA0_giZ>aO"$_NoI-HmF5N;P]C]A%`%:`p2k/R)UTaU:7)?:-ZdBT[-EHtS8gEE\A!)aE!c-#S_R"U/]d/X,XVdgI5:"6J,0!"8L[Hd9r$H\"n8)Fci@_Y(VaES+aj;d$:cI&`%f4jNfJT>Tt)A]h`07k4DqhEXK828sSUdMlh4QDTal"mNW#f2:J2&E7!2%W2\kkdU95rs/^gMHn`tmWY;u+e_&o?6*@Yag^6a@WSo&rBn2/meH@M%dkWb8Brtr?'5Ao,&!iW)HcjM:6h1S3)P!U2,0b)n5cCZA]?`N3n79P&)49%@P:QQ3K'MfP?mic8c0iC89&+e!7k#1Ap1`!/V\j):7jrBRV7G0'R([]eM%=].`_h"RKE)''P"Kg-8-oF+H7N!D3ijIm7*f4Vh6qoMND:>GS^dnZ]iu8V$aQSi^Jn9:<*l?&i*R#SGGlkHiE\jP&d]%(12974FH9e/d9fg:fs=c4eD]R5lOUMI!NSm3M*0?0t=X0c`u/om_$'%Z!6k'4NeGMYHWufht?dop]R-5E::[>gs=Lg[IP&]Bof(m5of+ZLS2Yh.51<:^PE*;-saaD]?^QF7fJY&Hqh0Ca`H7j7GA@MdE>5[$H\3u\ndTgdMi$!iFXd3_HW4"#n8/6.]t<Up`s')bLC9g;Xr$0rqtKd:4)<V&A#KlpNErkQr\X?MUMFN&&140eTJ#$^U)F26V2l2p?cDZ$)B@N+It5.C,X/+=cpO7@nV8SmDtIqi?Vs$,s&ppdAaB=Gk4.88:-9~>endstream
Gatn&gMYb*&;KZF'Q]]/JJ"l&n!m)['PNqGXThnC5X7tabXN3[P&fishk>E_2@Xi_/n)PYA_HZpB)\DI$5(#9oNl_A(DWHiTKjAo/"d2?T_\f[X-9Fp]"^$m8QMWa!dUB$-nZ22*I^_WK#MF4,VHDO07`+4.h`9di<91E*lH>1WX`OCI14,#K[Yf3>6/IB[HamXXZ;%!.oa9nfXLX%.t/947/V9GSjG06OA=1J!e6)2aGnP#426D6$R;a(`Ta$q1Y27Y\Dg_#&^(r&*b7h[MMr2C@ZX3?Vbq3V\^X;TU6V;9\_aoV2:>+I)_\Y0#fXdh>c@q.L2#C5na$jXrCkDI)*B6b-QAae_,q2<Y\Vcs._:1HBiOQ;6F0K>$%^d^aT''hV4h!h!d!$ZTU7VAf^C?8]BRgI/U4`LCd]ia2@O]_CAI83q6Da^`Kq1HWTNB1eJrq))^Dq*]>]eB,kbs0XGB6+j@CI"e57l,BR)atlQ$hi2^gXU6l0JgFo#JTmMb\kb^Z.G-GW/u!6s?aC2us8SLi]5'ZS8M,CC7br!^bZN(]4%lniPF)_G)WMnTsoI^D-eNu8D.[-GG(@7%UVP-@c2;\8__U2#4f%n]L,mU4]AOgF0r<XC\r?<^P?02'UM+(tK&EkU,M-G?m5$Cf-hCQ<LpdmgG6fNKph(7+CJ2-m,!o/M:!8mu@8NG/.=MiWVSqZ@:LDZPkn%8LuWSbua])U?S4"/rriHJh5#nLegbfdPOh9"CpO[oQtHA.Ni8%>(R_U@s[_>1-5n.']GXImcR28$+fq4H7"=FpgsjMj:Zp8S'ifPKe-7<(G417_@3\o(uBJ/V4F['W8Yq'EK[#o@VuuH.4Rs>HT'$"g71![$]9=$ST4FgusO"hgDO_6M0DCBEM:$5B][nEV!Z)o70Gcc$Uot\5:bNqmo1@`(koDHk^5-CV*&I4tHTq]#Qe.f_>;P2qVs\<d_6;6G86l#9*j:OU8/qd3!!P"4(c\po<op[[5;r:)ZVJc6MVqhS+Q,UtFRTk\3H.N5Fo@GN]9UM':c%Mn=N7F#E5d]S"nnrU#s)ViTA8pU@L+q>:!cj7R'52*4SjQu9A?m!qTI/B5rr#B5_);l?cY(1\Bhf=hluTq-o.^;bU[jL]Pu4J=UXi:V*1IEZ\&ZMihIMq+VC:2#3$@OXkt/Z+f(1,t'[+*$6"DdDgtUA~>endstream
endobj
67 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2294
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gat=+gN):5&:Ml+o[=St#%Ph8aLj(1\]n/%@=XboTk[3P!^*_>O(BI#f5Jhk^gM%K-"'A\FgmD-SCTsEO-]ch!eATaBK^+'&K"8.1DBqG0CU[.qL,4%1Te*[lC&#;l/7V_J]lJ=q2)"N+\o=C0[,PD1h&aLdii<W\[bU!Q>3l<W.*of9RC7]+o.ia]=N9=>r8t0Y*qh4;t>J+1g[I$XU\qjMf<`k<b;eB"D\)[\\:?D9d/+BqustWC$cjgeeU-l;H-lf>[k3'M.sbUc<ZL_DP4$N75Hd4ggJ`OC9BC"2unrI"cIdI26#oY@/)\a*eR!m7KY<66Fp[mO^tL2pP_P%StE7^PpQ+[J75"@5YU/,"J0OVJ783]]RW`p/3K8iO@A!^P=84#80b+2nYu7'`h#s\2:QP=kI?W^ImV">QKKsrWppB.03l>d%tEPl;PV+""qUYIGS=J0+pW-]N(\2<!]\LbSEJIkc,99S&UMkXA94+:lRV]4_ef0Ui$AVlK84PlEqJCk3T"Xk3,%+Y#?Z;N&1e[qWtSBPBTijRQ!M+Wc,cdmPF$IPI5&.p17t`-pRKL]-O;_A/RZ:/1(Z6[P&+M8PIY(JI/4*JIU+C>@N20KeaNLdQ"%TcXg0DZ=lK*`J1o'&/)Q[(jfl>pIf8!'Rucp?0n<'=!-5rr!'V,"=R%gLn0o='9KbI,\Pr<#m\HmaQ@Co"530W=.YhT&MUaUb"0\l(fX@)HMOFj_da@C$Xc?G@n#\F"'W"8_Dq5hd..EWP#nK9BD(Vt!g9qQ#j\C]e-G$1/U8OLfMJ\N:Z0(TM5/,jIAEsk#2T\h.HKPp@[uT1][tgiVC4I:#"."@Q`HpOnY<<Vp'?*kO9C.+>+or`2*Y0d`cd4R_=8<ZHPl"'j$_8#uiGS[2;p\*!nB)<#c"c@]%Zfb:P)5ct3=Mrf$mWl&U[&8NU+;CM`JhAZ(5Ltlg#Y<?o^=g5]jq9YH4U?Q9C),8Mp5"X\^5S*iG/8,--`8&\pW2R'\Y:e"k(+5E&nciT-p_a^o.k7Ku\5#%Ye>,H+F%t"P!1H8i$us4J,<qK]jXI/7UUdWM5%(CEKmhQE=k-i9SQ0V-omaRdPcSXsA*rOt&Fje4\^T*TqA4big7i>`O\-rtbH<*Zn32C2-t4FS-ECa<F/W&91[=Gn0h&I6E7:F)+KGlAC+G-cAR$"aiN>H?8)bGnN(/Z!\_]kUIc](.oIsPVTe,!h)BipE%B>EX%qM;hq`@l'>TRZk(?P[2EaQ[9.4p@W&.\PH8n%B1qE0eiLk*dQ(>gJF'^!J5=hu_7i&q.Ht(4OS`(ZE0+]IbNe<!$H?mdjb0XedH11>.V:Vp5^OFOhZ\r.8eV4r.U4#R+60C*Q/i.@!/JTs%hk>'[)ImuR*g2b_I!MMR*dSi-U]\)AemRqTP.u2-ic&8BVUrKpG\aO-m4qOC6fkV<Xg*F94aWEY:8s9!W-h<b-jq0-.kbCY-dl'5M\Q?eB/*\$9haH2fq$6-'-s"$UMkV&B4R69T`^LaK1@>%M'6HOedOK.+W1+FBd/c,>GR._dK%fi_UTO_jF"mi*r#\h&fkA17flO@dbgqN@5PkTD@[cAfZqU*94]bh$NL`eqSMj?D4[(,##$]Co#`B]FDK`@%nsd(jXY.GXBIBd.NgtT,1MSEsk`:`=1^W2)\#TW3Z=RSZnoH1Ws"Np$0rt/Nc7>miVBuK#`G`j["dj>Ne6EEmnO`]Hc&S\nsPs<qXf#NbDi$9&Na@.oKH:r-,n;GlHBGke6YE\Fo:$l5&`=#*I5"/+r+=&T"MRmM,F@7a5-')f8;(0*/e<^lMTRGM2L3`W[o+puk;Q-.&r<+VG\@o`B+"L:+5@aoQqk8t#el)7UuI94#c(j*Do44a0;X=g\D"J7aVHEuqY0*aA%t"r:[g2G7gdY(H41ZZ6RH`3cu)Psb'5nh@Rah-_:"OT0Ob_4&T#5h8L#::::]QI5@3pb5B73@omLap^2?Ot<%.T?>FZP>kd77ok,U16+m/WZ9:5OAokj\@&de+%HGLjF:en/]h##d]QY%GntJ)YnCM+:M,cI@ar1[K$3?#VCW',>BgVkVhC_4HgfPU+RjEnri+ZLE`[Bj?FhNN*=&5f+3;DeK^D#^Na9<sR/?>/gdTK*5R0KhrXgK%/sn5$$kK=P)C'`&Np)48/CemY>`SrG,&nO$U]e*2/p%$qJt8.6^C<>pT::2qbYpQlZB3$SeP0Ko8?sa,UMm,qNBa_PDSa;JfuTG`;'BX7iQ3QYl-BNca53IhFOQBdBfngD'IS?.#og&H#GDeZ8H~>endstream
Gar'`YmS?5&;9"kTAhN!`PtL;EgKhRb!t#B&/9d3qYl2*>SS#d@,P7/>#50G/8u*qX3a*o;=[-1\:f:S99RH9^:u=:W,?5@WKD='qjtjfWhhI]cVi$+69!=K+,Djqgq_aM+&&1F+T~>endstream
endobj
68 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9"kTAhM``Q!aY\P"Hkb!t#B&/9d3qYl1?\4RNK@,P7/>#0K/(:XMG<G3MH.!["Sb[DUbP,'l(hqsbX<&ZW/fZ:Y(IF%*9WhhI]cVi$+_BI;_Fi9b/DW#Eb%ns2J+o~>endstream
endobj
69 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 4721
>>
stream
Gau`W>BAQ/%Xua-i1mnYA<FHL1V7_6mIkQI8^kWFbg,9<Q=ual=`SY)P'uP456,i2/F2ThbaD.oaJ;'4!.bX\9o03A<;u?(#l.t*VXGq,N6IWAlAA@!fAt9Rg%R:kcdWECZjg"_f$%*\Wa"uLg#p?]Q;LEPIKl$N\JWl<Hp]Mc7AZl`)J&h8W2^]E(bTaelDjc=<b-6sA*ubQRQ,jg,4:2T%1bQK&Rc67AJgP2AH"O#aKcU0RrB`7ELf)2#BG\8ZA\$iGJ`BKj4s+&j,;uPn6kVd/r(_d+p*q/3OoL0-km_J"0[i('`QA56m6KcbsDOq->C[Ki:D:F,5GDi/nrX]Jc3AZ-a80('8\[OC<j]ZnMtUe<>^R']clf)'J=jAoppK\a%6^:"e*4jCnHV+NuhZ!95uLO6D!+(ad8Jd&\d1X*a^l]=,M,dK:cA4AEo'&X<`N-fi/['lABjXS0X)DX\8(GkE58s/WU&&_=9fdTZ/6H):ip!QLD=*_GgRM&eV5)3lOV//E3Is#g(nl)j$0a<*kb^H1.s:Hm%/t:+eYh3sU$;Y`L7;*lsRnG^E6G[0,uX+(#J>Lp"-W,W"0bJ_Y>(8[p,_E$UbI)-2jFc?;9L'P1H]FR&4i^XV+#YJ4%mp+,S/]mh^&Jk(6m?(pK=9'PunQ)'o4Ji%8,YJjt[II;?V2#ZGth"f7=_K!=r\V\tT8aBlf1m<^M8m5O@UgmE0/X<dA0$RErc-SO!TQ='!NX8D,9XA482H($D)BBJb`LN@&NX;.`RuDJ`TSglCZ[Dn_'fohF92J"'$sW%b!,dC&m7VtZ0.581'?/u7r9&hAT<"k]<VETVCAP@1+HI3*\R+PJkN'X.+\ZJ0j/[X*S#-M?B]S6qeK)W%deGH3^jgn;^0-,e\["d<-IQ+:d"u2l+^X4lThGEnFV?*j,M7l^l'4C[Wm*@f,DnB8<Qc_HA[%RtJ`3p8?CN\%r(LO`RH+Es=2`5O(EeQ!q%RVq1e!PfFAi.0^LWduQU#s.FEP928e54I3pB7Q_D5ahfb#pcLeT\1'O%R%(c>P2R,Rq1YA4k628ETNF`mgpl#9i5C[+Te3jh^*HmcAX#F%N;cuWN..oaW`agI&L[$sekXu@k+UK'MY9.0E,.*8JWjt,r_6Um?s7qS-DY@O7iUsTh5%G<d^S?/J>?*4"SnGd*(.Wldua;W!@WTAa#:+[QhoH=XX&Tfjr,RDNHLHC=)6&'L8QQpggPALu[`r[YHMF\pAm]H8<oAm]$oQUq)R$6,*'9eFF4[`B!Q3[?q4Ft=55gX$RL2jO4j#-RtA-"mgM>X$$8j</o:0%?SI9uK36l\HMJE*G4<JJn2@^OE'imH@U;O@8gOKg3cKEj6o&1TAL;RJl9RPra*!S=b1m@F\V>9`M;;AdasM#jPF11TV$'%?kl1NIobG!HD<8S1.:8+P`!%58U?Lfc.mk*kXM7l2kV<=!F9Tt8"P`T8b'*O$uR00*Q9hBbR)8/[e4fiK3j@;6hAm,^*.>]2uZnNmY<_QgN`g+9TZN8l4>A-0-I%O44FOBfH>KX[1H%.]#ZB[%P.O\rmC-lm*\%pL_,aFsSUejJFB?(>Hhs+PrPT.)\)FG#bQn,)il!54s2fWs04!I41WK,d^gT;r2=X8@1-)9l[lo2GqPW>GV?;]1+`@K=bKAH8<Z!Hu7./(UAJQC.r_:d1*pBW@J7",G'TI/%b%Ho3G^ps*Qnl@u!u'3a]RWlFDY@D1bNM_._GSoR%jP-p*WbUYA^"jjhELY*0/P:(o=$Ga@gZ?sM#;_R'Je?D+KV?u5-8`UF*'k\l-(9@*3;M>j7bg:QD<J(MoKW[:mF!BY'`;bBmHM4G/ieo*.!cb_D#V6D:BVgepJCq)ZjoSH72uk3IKil+qqB^."7b3OFApn$f`'VO#:RGX3/C)$l0cIY;,m%IH&hE%ZFWcDu^(2U,=`K6h06QVgSq:[*!(Nf\#,J&r=aU+$R#f578(ph^Dnr@e11)ZEMq+U1G_*Z7g%l]\H3s4Pm`'MfRktdUZ?DBnko-i.3c!J8DqtQl?Y/c,YA@*IKNGe_1e>Q>\'-e:k@2h+:j4lUU09mR-&/M%X#E%f]Zc:1fi*"8l=`-(L3j!>i[5#g20O#A4GVs\7fUJO,so[F@f,H7:WP'Lm&T&?a4Y?S!UE+aW4hcsMEJ"dOP:cV^Jbp>V>tlo0lSA70.*JL*(E^lB\G=75BK8FG*6WLcp9?#S^I/"M/MY@KTRPmWfSn,lE[LHE(!WU'4GT!n:[m&%k3D"k"M1#o?pt[TigqVf-Bt,_9MQ``VAK1I=!^J&_oLeUY(Pc&#QK3(?(q4WY&?dah%K:-3^TeJ9TK0(17gZ-<W"r"Lpg%/PjdpK>mmo6(i/D>JI8,;J5]a#%fXt?su8-]`A2ML/,YuDKWRcfbTsFZ$h#<2$IH)LqO66@puT.J$J*TH\H4L0!guuMR'!BE$V8MC0>[>0u1nP^&d=U4rD0(Di?4lY^gup,Q]WHC'#^O#"/(+fn/@M-a4IRq;5*^*'i1^a;Kt9r$S!m:UnM'f*Af.'G/(O`/2\11@gcYW"+jk(3X5%/V$h,Y0_C$>9pFDd3=?'.0)%[Rj&-Kh\M]XbfBmj!@UID5'>IknEj>^#t/JDHnp3pQl']HD#W0G%T@n+Q[kfT<P6uie]&'F*3_SCB"!$,4qlA*%N88&8;I<=nBJg7L.D;=[t%66,i[)rEu3^nhq"c[&V.h#bi`mC0RZ$43-J/lf;3_H""Q18bftZV!I\l3X9=>++V$OcB86pa(CXu2]$Ed9J[*X6g^k#,!`S@\+:h\s5gMqkc(DJZE(/d$^gaQN"l(%@<m0\B.qT&F2-$t16[5s+@!^J_Me+CSK+`s(e2n;J^jX<gTM-OmSiFTJc_V9j/k#;tF*QI0&^TEj2i+:3Eclj6@XWb#V<GEaY=4O:,=%(#XL9MZCnP7k+G0!p^lr=6]=?4)mQo1H=OFuoKO%-:j.EmE+"(3!5ij0.%IaNC^mI&35%k]O4kjfAKkQ#,M[:U15D5(:ltrK7fG3nOX&HeVmG+nqdj_N/r_A#j6:G7jHTMDT4J;jC]D:j]'Nf0fh>O2NQ;'-,l&)T!K:P8/io!2a4g*#^-5t5;e7BuU6_.Ag@UPC=4Sefr((R"0*LZW\PGK`I2I"3Tn-?H:R1>bBkU?#LiG7i`@DBM];*QHqIY)g3"aVrK]RI'<a"Kbj),=8T-JjO6IKM:Rd?VqWhH/B$[>[-A+bqoaq=m`'ehiXC[p@*IBe[f^OKN?[2+G_lFg<0kYjr_;?Tt%`8-GI6<LL>9>7a6qS-Kmf=?C\1)ADFQ'4lKg.Jh=%;2-k^^mjC=\Weroi*Q:![)#*SY+X>cKD/T:ep,66bIE#.)V/\e"6Uh.1k'p5+i9JeXQip/PcVFQ/kh7$A#u4`'Y$NJ@q#tRO[4mFG$8JGi8)FtT6^rT4Rmd*JCijjrba>EK6Cm.R_a5';)NQ1kg*T0l^RV@n;[qEk.!lXG_iPqhHp!:>PlDs1-2F`i6Lbe5b0jc"$FJ']j->c(Df_#ci((W2"f(1;=src/)I./l(^\cUp<kbN"",0kWO;s0'+qtm&L@-1;UhVqbK)P!(Bu#61?_0EE1;"DHp2_=9erZSe/^(C4FC_pSSK^>&<*DU'IdJ@Z;8M/Iki3+%d<IX\"G5D6<a)Ef`S-.@#mfj[2&0R9$17g%6a8o&8/s(Gi"a;7jO+`UG3]5%/QfjE"X0H^l?!P&73E8RnBY;;h1(F8W_m-G*^ASlJK:pG/2fCN-G-Ml\NB'/)cg-V`As3'(SMDIW[1FB4N:bBYS;L9+Dn]*fc*#L<U"H.%2/NEW]p<)86pO@_?CW1%]m-MaulcGlVHH"e8bXTS>72[dV=n%R/W^H=6>E79NLiE99&V.=CK/3C.?mCr`D*Sjs<*X4=Ob8X'?,hsU1K/;qReN+iZirNoW+;?o46ggd-hO`uU=ceEE:KA_mq.5gPoIY"+FKna#nea"I)?T2go(Y9l.*4.e''AJi3,AD^h]CTcRb$ZW]U?Nu(RbPATeDTmk4'Y=AAEP32aL5Hm8"HUd/!C+n3Qu]4CO$Ck4`k9AFre[U,AHbieVV]1QJDq!Cp91J>\U6Z]kT^YI!<-Xc]0C1W;%]qrMs8RYjPYpA=AZe&r%BX/VOS1']&mTkntZ%R%,t>#'#"K&=)D4t(N@h'#7&]NSQoLTs^t(k:K*Sm+-gACo%Vo1ih%'I=5[J#j@]b<eVK`C&0P<8D"2m,Dm85Nm;q-gV!5&,Wr'`RM$@IYX,dQD2ZHj6%5QWnk@O@4RSroTYWFRIW>Zg*u-8H!b,RGWT?U!bLiC,133u,-@95,#?g8K;eM+)K@C+$:<#O%a;X+F?0iq>]eOr,*I2b`6sj'^b;'`FIMW5HmuQ\r$ENjVS,a2]A!32Hk93]TF(&t9u!S)2^bPoDt;MHYPWM;m@U"gbD2qSqtNmhIM]dhf=J0'p0QAm(lfs?=%>up4R"5U`G@=>\CY`Saoah@J]$3))"NXhVN*8d5@B$[!?Brq92!gDVj-9l*\X@8,^,oWY#LqNPN=IYQ,fKuC$#Fs10G'GRGHJWc/)[LqB:/8"q6qB>9#7;8odmBfg1ctX`uP3O^'oj<'<$R=i)U/p;;WIRAClU*mF%fc21qeb3VD((CtjQWOC<Ugii\+H$CW=Ys@iF8a=(bY#go6Ar<#RhMO<1)D#P(3+I\P!8k)60ejfmQlVOp3VsoJ9+@W~>endstream
endobj
70 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 4206
>>
stream
Gau0Hh/h=/&qBX_JX;j'l^0$7mrn-8q/G?E<ZP=Wmq+\'6VEN#L*@@qZK$;A^\n.1"@-#k!E>XaCI:b^!k\=3(;!4,i6m+Zq>Xn5^tUk/4bj"]0OFkE4$K$=Je.IJDb"d@A/ID2#6Wo)m$GYg?YcV,?[7-cdt^$kJKH-IJg^aL*rR(2eW33q'"Us,K9nfHha4RuIEQhYhs,2Nrn_;-34n4@@G#oRdGkZ0YI)>qs0>*2mpE!IfRQ/k1K2e*$2qh4*^C$J%3p?+Eb!R4ce"BbC0;g@_rQR5pDNr:e4#D6kmq2$-^ao>-LWS55(,E48<(6BW3">;T9'laNf1O];&^^E=QHo"Te,p.b8_LSCqEHQa9PVn`I4/Wq'S&AE&B$c\q/o<&H\Qi.cp+4?Td-g'X$tHR!fN,DWE-&m/O2T2KC%_:&Nr-I"U(&0SVK5YOI]kf7U.f2fYK$,@(Q/_]+[WXKo4q[]L<)=00CL>mH+8DmPmX8KLHl%J'39FC9K8_c$F.C*4c/r+4sg6"oFn#&Ye1DQ_kk:DWlG/?LBuPPeRVF?7,65m*d2dVO723^:BTi'3c1&Y4I$o0@ca('S,6l@5#BCH=Vj^,Z(9rFHt]-qk-;XW4i/XOH@Ei>mtHf7NU![dPnp/NA6SS2HrY.\0iG?1)R='>1uueS1#Xf*]"Id'_8a-?O**6a99MPuc5AJ/$+,\5]Sag>!Uqiafskj"k@&4lbBV8[FTk2m\QXdl.@%:F*]BBgEXTlh3(cmkKpnX8o(WGGQ)_8=D?+()hE[/6`TRF1-#e34UQJq/BFZ!,8?@E4;r8Pnd(5pbS80NB[gF,AVUu-ko%DEFYr<\C=q#2P^']R%TWX%3OhCqYoJD`3O8J4&=$>hkc77*,I.*6lL\AV<*G]G*cWkm5Xr!BA-Si3>5KT>h$'(b,[t"$'e1d3"0t#Wm4I'ktcb,il?%T1M+8JJSW)*.oNgDZMG^4&8nBSG'/&V3ctt:ClWBrf"H.h(kMr7U[UIO+Xsd\q'k$kRJV2b/$ds-R<2//iiEnS8=Vo?q*O,]$DFAdNYf1Rn`B$%QnQ9?`=?oM=_p_L5ChdF(cgEGf'f@oN7r4<"oHE5mkAGalZi4IMK1n37n'@!!:RZDi6>Ej!T%;.RXdW41'H/ko37NfRE0#.M)Vpk20fn5?5GI2:FNXTXT_mG$\pUK#P8X!l<RhAES`%BUi#)gipuB1>,U%m,fB?XMr`DW?K6')A?!Y1:%!!!KX!4>1J<_g'su-7N1N9SU)"W9[mdjGAO^^F\d5j9ES+I9qN>LP/'^OT"1kbLnQZMKRk(XuT?.Ek[T-UH+PL9fNJLS3JrJNopo<c2NCL(o@S(VZ<Tj*aOd6pT4`nE]-J_[g3*lOe/hUa@3V2K/_J[!5SZL:4K^.f2Z!D9Z]FEoS+uA.33;NMIE,rEnX`-91i7H.ZR<-q?>S!D@lO`kqW@J@72DD5tZmL^'76.&88Hqd2*,?CK>&3ApU54)W#=^WN%ZH0#Xp=<eG]bGlK\)]fU_3=fjECp&VmG8no92V/nd.u>XX'1BiGPU=n7nHkF\6t:.q>^\Nlu(.GEgf,R6W)&EJanMlf>6U/_5=Z4c?t<H.K+NWr]mCVU)$Y1M;29lj\u)U&Y(:jMWJ;!si64S:*M?!q=\RG$V<VD1t(S2tRbij^eQY&9PBWE;@Q@Ob%GT9"IE"6Vd4L,[Vb+I?H*OX>hhpfT;<ndt#k'qQl81d@UN563)5!"XEVi=;Z-W$Z/Ar",S(D/NOhs2\:)lqCTW&SIZul&@>hZkhSMN4Z@1_T$d@!U'FQ][10eg8>^Rj`p9)Dmsa`(T3lnXi.Q+.qS8-o-]4iBlDOdq+=H[noYBkXhtHHKW+d>]#6GjJ5_fLsnJuSW?'599djtQ9>X&oqYUJ(lPTH?P$Y\-8K)A/1G2*p[JHm0uBlj>M'VNA\m2&><2*B5Gm;(+*,)`lBk_J3C+)Yc.3=86R9G_Nm#_S@hS)+[Okl$$OC`9Q`29$ZFW9a42$mKEfjc6m\XlNs)am^53/-Ou\eR[<\+H2hX3fqTIhNQKI/@J\E]_B;lE%(MKeoE[\U?5"QRRl$456bIZrHJ#Fp5fs!Tp8n_F`WeWNpG+^fIZ+T2U+ek$m%hW8+OoJ\1I#E0`,t0ZrtB@r9!YMr+>^`VL*:kXUKYID,':#C6P"@/+ZU38jQf9G$j[:ld^7[:+@(qMm)%UI/#75^ltiKFUd4K"gWa$4?GpED:<&"2F>2inZ^8n0/Wf8@;+%:V#`&e^<2opa3J,V/$NO/pI:QE'KE?Ok]M_4>Y;!P.V5*IiX4?^kHJ^!qKCDVd-5\?9rA/ojCIV(N&ToFUO\_@dG]1/JM\WM>pBMFOE-n=Q+Ca<qJA:lQdBMhiMH.r5`-?t3ig07@^-j&]!<sZ6KBoQ/0tBJW`6(0#]_&U0;iOCdX[K@B:^<lRA4G'b$;k>FBL@'0b54YOek?]g[65IWFubeAM[2Zg`6Ua*D[qf(/G!?Ih8.!bH@'a-2@kjF]I@3IQejo;duiS7ZhUSi;Ng@'Z5V)%Nf`u]'(m3XEDsYZdh*MXRn4'?-jb4SGb0Q#,JF!^TlV(6cWUMmX`_DNV5=5_"Hg$EUOC%'-92cQXisG<EZChQ<*"06=]7bmdaQI1@@HsgtnR5QJ5V<HJIm>9^o$`J7m2K)*BE!Ke%9o0OMc%1a2r.(:fL;s'ZYg>/\[(*GqBSD"m;iF-l#^l,I`:;$.]-ZKYr(=_=bFfWTs&E;k["@\X$_OTOM!"GJj[/PoPDH5mV7g4.M":%B38)7_,=KO*WYO^YteTW)@6Kh[?Qr^['*s/SdGJC1uBTQ*)-8Q8ch=MT(WEMe!,J_qm*bsAdT*ZZ$?f@&M)QFIY+mFghuj"=cQ&DaC?0k5A%R,9!Eq4d$Fi9T2?N4JD4JUT>1A^0>r$QY7,NS<reG]80.8S5oHmP9V/3QVeY,Wb!3[nh#J.10Sm*Hd%NP6l?L.oWBJQpP)l.,(B(W>B[Z0m<p%(2uu2W#J;"#doJ&khSMN&P?4kDsBXE5bc:rl`L]1)[O%<qlSU1oq61Fl/%,RhmE'Lp@jS.=:[ab[kR=VlTN<Z:@.f8n,q&!%iA?#!XH)(*q39_?2GZ>[8!R+FeU0gOGX`4=Jp:5^5l<OJp'&'?C<4'$T6;c>KlWNIF!k;M*-!P1Q6-02ao\`k6+sBVWo&Z)[7(*"#S0P9.]i^%GU8-SO)M`f=@[M6AKb29@0^XC;n#+c@#qagBl\A'N]*jUmd5*E6)QT<R-GnJelP^!PIf\MuOtijtotPnVi+>?3)d!.aT(4XpTNPjK2,ZO"838R3Ic.b^-@e7\i&(=gRln2/O,1))o0Ta;6BW"RNR:?`(uKF"+[XQ]kH<:ZplQ]8h'=+WDsk197-;@k$kL]+OhH`ENNG-42M=//OfWCV<d@6OOQ@alrj(Xe,O:(\"\+oG%XsgG,QEdX4*frS_Cn.>ebF0@u(.`]YY>PZR<N$]MKhMmTsu*2TAtG1r>P<Ee7C>k'#9a<A;"Dq=VnWefso?q#g`Om?,-[=srO9Y'gbp0*d-!Gj?\EHY>O?!UF`_mo"7\PGdl"[%qo/lZbPnJo$C,a$ANSUht,D(K)hf0t_9f_\N.>APiWl6Q\5TNqmq(M[q40MWV&YY*'Ln8ta@/nlRViT@B(XC&[sB>65+:7'::eRRMV-YCZHR]NGreZT77jL2=D[qWRP=+`H)Gf41d^u"5oFs3!/2O<t)Tr@6G&DN]T0$@_6)+e@sNTJC;$Ph22:p"`;&-.eeLKD572psh.NF:%Xlq\U?]pl>l-f=G,nDI7$Nm@<80'>l&<^jQ:"b8GQ5d@FMgKN:b@pY$6m'>@^I2]GAQYu(?^$7Ph:X;CrQL@$(s02YA,Nq@ORsU)`G\]G5jtA`^9LSh[]$riSq;+JS,^KaEJ63PPl!,q>NL%O._-iBT![rUfe&hX`/%n$,`E,+dN)[^XK`Iq5oOiDGXOfF=WrD>jLZ+iSBYu[k&u/;g0D^hn?f$ILA(kD`[pT/AW^#\pe:[7%:7m"kOOJ^LNBP5]Q9"?oo0j"XV+5*[-bf]10+^CJ5iDM;.Y,i:8aj'L7(bAi`P(h-bR%^]D@fE_K3igG5b-d*W["+6BqV%MO]8dQ/&5(b'"CC9.Ku>+:^Pe%]3N)aq,DV_Gkk:6e`+TBST'osP8lFK+pZ+e>:=Fl#igHGlQi9'C=7/bE:eXQic;g~>endstream
endobj
71 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3600
>>
stream
GauHN96ZlH'&NLeoMV)Z8BmY!begV@RCUp@'O/]%S!MQeHAmBJ_2eNnXbPse!KB8**hUB*IT>"kX"#fl_[k&l?QTjU\4!Yf0Z#kSD@nca'.r\"Vrbl^(Keti?#=Ie$TY@!Is<:kb=9HH]XnHf,QjI#Vs.<md1dX2MRL9*bd.adMEJeuNmLQ30T_mp=^Q\P3aoi*f'E-X:Fr.9A/cG]2;uY=[/:jpIhOnmLS&<_N#g.H_T-SD:Y4Ra5_BO%FRH:N\n99*2:?JmpMWpG_LVCe:U`&=d*<jEe'ZB"n66rR\oY;g8UNf*RX>PX&4,n#,o%*SZfcD-rWiH$IA+3_@p0_WJ)>aicn+gPM0k6m\^5cs!&$slMtc=#3BV5oT9l`i`jtm^ZnN/`=B7VM_n,9tS/9*)6TJtMB$N7g>X$6fmk#<EQ=db[g]ZFk1rmFmi,m"m\`Obmj/-%>[j6[4&='C7Z4bK+@G)Q&/0AK5b6O+HiLCrirXh:gFNo&Xf;TaD;;.mESZC"@h67<`)4j!8>bjBGm[9?*cLEnND-4+0etrGpq%PF8cU@0XEfk42>L_<W1gdL@bj4"BF";Qt>Ogic:&d83ifL89h-S&%-g8df=6t?.q)W,Uolo0ggs`J6H8pBN0B%ZVf#HtrfQ"p&pK'&.I'TUt,"FjC)j!hg4Nok@m5li-Q^6*J!(U1ZaX,Z:0bJ676MuO*L^&2=X=IpHOVA7G=m=L36<LJ`H[I`WXRUVqP9U-I*RTD$?M,^LB\K#K7Ks%O%LV)lRaR@#.#U7d$Dcg:f:hD^-$pm^Kd:RL`b`[<<0`CG#n/UiM$"3al?OYf6p(JdGj++h@>s=9%Ic799X#6X%'H+^6T!"ph&Kn.fk,1;;bhrjPMd'KqSCp;G8l;B`5=D9X-$mmS^p<eZC>X8pO`"5gfEZ_94Nbg?g*6,)_h,2:REPaU;XQr:p,3g!RIp$9cUG[>7t0YlXeNS$Pd2+>0$Y9C"-0m%eB<BfN/t:D1Se+!;%F*`^jTkC0!#[K/EpHf7Oc1&Ld1KERH&.6IsmFIQM-T_7u#=i,Jag8X*:Om!sAhN;u)j7c:6_!.[lbJ>ZiV?pSW0Sr*Q)p9apGP1\,:Eo"g@@I[1A@*J#.fbsW:*fBJ_ph-'uZYe%PKQjkU2(U,^OZ9Q^7#0sbG7O/uVH2QO55e;mP+/N/D287Dl+-NKhKW(&<FL5@kZO($d_McN,Piq]fpX4C"e<TS$qrHD;$cWN0ZJ@S[8&ldm\7=^@H8$]libM<b6]E0X92jr7FYrNhu\H6+9P2!+>35H3!6S`nJur<,!DW=]DS5Vj2!4F*5.7[=,OdFaR[9-3aFt#?0Imp]RO:5Xj44Wbrp7d@&FZ`j0lTB1#Rr;$g$r6Mkc&d$R_Ac?+]#/>1)DbdK"qA,q6Xca2o56,:53sNpn*77tM2O=G,Ll'kD0LmWk\Ci?C=oQbl\4$3Vb"FsCLD7Xpp_6L=i/o.N`\;[!p^BncphXrmkT-QHsk^_.deRJ6cO<ch&6:(,>l5NM`u_DI+t"E"Kh$]c8.!glRq^rqBbrsDM)MmSN8_?^9"<Ok(Ic<jgFh6.u]jBRLL0S)&"W]lM1>5DV.BmAg<$mg5ni4eAI9^90]3?"aLpk3d"dBWa/IcI%WhQV-,2!VW?hO?a#!tq6%g-4f5n\fgI_]L5bHP/]k0mgF&q;Ie;!Y-N]#WGW'pRqDo5)Z6EFYFQ))JiNqBjW'<a/9MW\dYYo"R?i^EgZ(M%/&'&+2m@7"P3`@CSB#_%78)!F@BWB_8Y->a2sqL&P">UCes8R`!P1]Fi"_^&/Qe!GhiVna-RkOP?)B;PlBlYnO"ME"Ls20KQRO@G1BN^Dr7u0`.FcrH&W+S0AFtN5^`T6HJN6V"t.r[EIcYU+@o.,K=g6Xo4YVA%61rQ!'HOn[/kGnH`5eH^7ZoNl@c5cA4[PEekQolJujh9UB=&YGu,*o!.mJ%6j'$$RD=Dg60(un:)\*'MM-Q5ilhX;JE=G<LhKnC`Q>U/(<[Z_q\B>n*]CFrS)8uK'e8n7;BUN&a/ME$nk)&fnh0sILtR?t7hj?14)G(5Sq,!FT(l8jG6!#m+JM#),3ah8d=M+_,2cb#;"e;>1gX4U1.QQpT35N/.S<(n*-u:o5HbJgrVS+V8tq=_k8#Q,G6Ioq5@r8R`I%qC1%Am`n%MU"iBX^6n_L$49M<YN+<CO\-#!G)Q`8d[j&(Ff+2andgA^q$>H*i23sICVY=e`;G'h<5@h`giAWm#If2#A,3DLf$3-2Kp;pIHHF)'H["0;_PV[>mo,8aReM`L@(cBr*DNi%/phALAWO3ek,Ti5-?n0o$V,(5s9Ui@pu7hS7(+,3Sh_dJ#B9jBbuYl/,B7Mr>#i##S$rAEA21LJU3q`eU[hIp9))"I]-LMZV>Ig$/7jfP'n`@LT&7NZZo[Tg18rBrJFnaDR/+"rcL4+r@5M/QE*S*oJk:_ZgucPVOCQpU!&C]SS5<t`7Pi*BqBZ=f;L5&m&,B&[uMQka.2e*krS3Vmkc,-pcRce;$VV`Ue</EnfbchbcIbHOYJ?E.WS#"3mo4H4@^I6jLo5!=:T<N'n[r]`Sq)n04mGiY&uDo-+GDX7^!aZ:an'W!dcPD(C?X6bKLPuughOcjQ3;RU<XPP(,+?Z>qfq`9;')qH5)bmc9q!X]AbGB=)TA#k,QK$C8PA5pX=N$^e.M<X%gW_JKA%r&]Dl_mn@]lS_8f4%E^1"N>CJCB3W>dP7[MEZI&.qlF\EL=3nHaR(WBQGA_>e="410CnD,EtsZPu:HBhMo:<@'T6?@c\e,aj@&.s)\BWB#1W`0YbYR;[PW7\?o]DN33H"a(HkfA/2hhcY58kPEosUdi.Fk<Z?=DdZR\^K^;0heZLs.Atq.s]!!_%FYuFdJHi('O6h#,dju`qnadEu>>Ain6t<1q=ac0`R-8K1MU*P9^AW0%Jrq(KWRSjA"?4e`7MK_M[9Gfr!jiJ``NIW(b).%rM9&^c`M!&A,AV5n)-fKm(S4<tWuSbg'\0,a.u;%.'`(3YL;1Bm3ZrU*El,n8Y,e8"huYfmpq&4lao5,&!4\sN:sgbCi1I52jXNDu%/SaFMaC?86WL*W<-_Z84&E;X>6;lPM%iK\ECn<o<&KFC=hX,6I9ui=DHY3Bf^=^+3nLUI=>8OV`#;g44IJ+TCn^!sl6VtqQMF)]a14W`pDJYW5;`Ga;k=tWMIq-F$pl'f]+R/_r%O)j"sE].P0FTDU5u@n>2?3`G2sB\mDO<L-9T?E/(H^7q5^g,e]@s*g!OO-[9!2VQrR2$Z>rcf+:;2gk3JjWB]t@^HAh8LaQeuQ5kregaW4LW;+N%o,NJnfE1grH2`G(s%oYhaD=Ku_iZ1$MB%9GC[:anmC=m[rp:U.eGrKs!It!gn%3<0GQh`JI+-UhMD[n^;[9CCW_1CV2Yjj'p]''%DY<q&?7>rC%F897AMHh18c@e.2fj30U40b.HB[:l!BgfK#q6r;UH&(mWpaR!3qAVD,oP!)K7-Uo0LIF^40-[L=Xl=;*oR\%;^A`M$=ZAW[s!JW2*"ui&7d])574?n#Jsn4seZL=7>f!T',4L=&`botUM$*J129nK(rrYE&#;Z~>endstream
endobj
72 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3820
>>
stream
GauHO>BAOW(4OT53&<WXUGOi&JDs#>lqDha;g3'0Ojr_bh$8af/1)(1OHa&Nq`Q(@X*=[+FR(7`$1IrXi5<),"EaPbl/1n5i-Z$4<s/e_q$P2F)oMRX50i&5Im`oma/3H/VEP4=+e!:B`qUQ4j+jG'j_-!b2aAAQp$!3FM0Q9tgNA;n@<AZgPe5^tiXn:LC;VBGni4-1:>fRQNkd,R)\,O/Z^6HVDdiV[k!+]ZI)_eea]Pu`(6ck\WR$H6ZP)kL;YG5&iW_kZ]Hn).=K7L=\*kUI1[Qg?pLE9[Ke/cUk<srEKOPjpbNmj\c+`cT_Pl/PMF@PQ0_a<ff59NXb_MH*4sLT]n2Z<pR4kDT2RY)E;riTQE,p:[^H1nuKFdZqI6E:;Dmj)-F'nJ\o]!cl!f.Mun2Wo7d0kS/Jg&%3/Bn/)8-9*O#.#mS4IhPGAmU!1$o`-[;LR=D7$a_YcY!P#1O]QJcX4OALt=338r9"*a!:4m\+Gmr9$AB6d+S>3%O(7?T5@BVEnO]rGKgZtlgXt!p<)u(>`IT)\"M]CoBfQ3q2Qi08cE-4-P9u106i_EZp+J_T\fL$[p[#bgi0TZGT;Ldn0BPTn!_2!G.^'_nmImO7^9qM5bN-^!IOtH`tilTrus0693tuQVEe&@pqF9a%2k`")l%!)YCoYhoY8#Kj_V](CE),[J`em$@,WCD;EVeo+$K.*-AMef+DcKkjifsb31G@X]7X&3*DmY96FoO0.^0R-\D`Td&gB-n(#skddbQr0ZItQ8^Fs6oks@k5Mp'fu4PtKj+%U<rGLr]E(OQre*6uh^A/I/enbBcHi9VobQ@K(3DJ$CEcrd'[9\*O/%#&'!RrlrlEY+5K"OjC=;b_J7@2bdV'2,eTctnn@`^K%3!'de`SGP^LKN`=]$lg!_59WVgZgVAO[Ot`UD@FeIqi?]X+C/e\Vi1NMkb`eE"Zt9*oYAR(_!Euo\X>tp9JRRG5DG;eX>c]%VmtlTDB2(aG?,[f%Ed5I"V//T_0'SI87J)\%PkX+Z-$*"E,P.38$O)?(UIa-\=O3'3bP_\I[Npf]c38552BQ@OK*]j@0gYoSmL>kH4.K\[F_mdZRhh4qUX#5+$];@E=JS$Z@&gY4uQM4Q.OsilMBYOg$'<okHrt=4pW`%/<G7.ncCf^,ICgl([qs'Dgrsqqp0e!.[md%;%5ePTI>il>N9`0!FM_qdjb8Rb\fVY4M/A3<eAqe`8f\!!QoD40@JqIf+_-m7aMNr3:dYm:#+o4i62'e@Tc^ar0Z3a#gh)A4T9m-Sjsa^[lNTciLd;l1l'dpP<ea6o[=a9.aPY?hiu7rT7!$&%=7]\?@/f@r@0taae2q<1uM<hJ@`MDJ5:Fm5#iNjs1A@IH)1P6Z3EoKR6\_*MMM-E5'NE&e"RbgM(KL:]`Sa$2L=)VS[UO37>P&.9(Uj_Su])a@/.uuDs1;spT`]iqF*M95Pt><@JKPJ+:@nd9Ah6'DmT-4L'J"u:8fl;kR'hspkrNc`ZI,GeL()K'go9"*kR5Mo_]k4.%)<ifSSN:pGZR\I4#lqNf.q=_pHYK-3F__ea84t7o?^>#/mKe,mKKR%FG"_;E!_nP]\`Pfq,Qn)'E`*bJGroT_hnGM+fI3:Bkgr#o"=a?,IX(7JL=4H>^2l,8a;A[QZ^+oY&T+F:V!2Xs58GlikSGa6k42ThdL#7X]Et(n^,OV0`UU[>&On`c?A?7],)^K3Y1OJu,q[GqR,'0<!3MI`TPJZ0bto7c&hF[^+@U,]IA'\N1UP>s:Q:3.4EjQ3Y\9Xh+]bmgl0hpODf`lOoadCt>,.I)H&PWZO$C$fOkd=gqilQ[IbIm^ITcY'@Y+a%8NuS]tLr'Ggs.*V]fDP`u<4eT#)TaC3le+!Ye?Bm).,M8c!b]R*gIOeiB,%Oh#Q:5YA_!,(rH4]`a`_Y_7YU<<3g?6\0a;2MhGA(.cD8pmUZQ/YF^<6AHj5HoS^#Z+i,-KqSl<!$!o/`_2JINtuk/IaJ31n58T9u%o!a==5\8RP?_?^`laGBl>5/W)Y*9iohD0YA2jPPO%AdMcck$4/ttF"IBKWt5Zbh`ZCHR+G"3[@pJ=7X^_CUAm2f"XoqMCm61l3u$L$0e()=\dih.f:l7KegiIOQ9+T*Ni3*j_bH\q>JB`Q)e&QnLq@)gW?\0B?"'fePMiH<1P]s^:6``40Df9.99]C0r'd/a(eIVa1m$5SVj84\,?W%q*2cUb=Ptm2=(\l#"#[4Wp;u0L9#`R5e/>t,T*<Fs.H#r3V@F%baS2BFX;jH-_eAA^Yk4V@Za81+]YI`iD6^mG'J&Hn4+`lp#)RjD291<2IBaB4\KFRR2O3gieCgjq$HLk%0`)'t&Z-%nYo'KF!uX@hK+;,&R8]/HCC$-0RL@DaM$3=D3)g,hJ*Oc`GZWncbrak"RK[7(BN3QP-+l&,;/anC50kcdo-GppJW7TuXpjUF+jp`X<FX6-hNZ1s=g_cu"n!\9lg"-K^I47M0H'P5TY+/c^Ynr>QH7%Eb=I;S@90Pr5<i$i7C=%H*gGZ;k04DD]W,'ZddkrB$pI:KMoq(IoqEoZOk-_%H(;1+,]`Y0-@@@[6aU/>.LSrp04/S5a1TNseY)97#%cB\1s=Pi[E0<K:iXXdp=i1.><J/J'%=qqJS6\Xb4bPg<nVBS<X)"??9D3@*LaemD9j<pp<MrjTc9G39oRB_Q_E`6@q<$S[0*h,U4Zp'N9D1UkJ!*:U,FSfD7qMspWUN'@F6;qJ48lEj)R*37=Ad^S.Fn=Hp7SEO$oO^_if[+modT?G-IB9`l;Cta)KI:3MSelfN&E>c41%ncXHGT*B9bis2rTf=oY/SAN*/rpDr.2p!<X8QruN_U\!\X'L08/^Q'r!("#J8A,K>/5`kcEF#^LK\7)[es.SmM1%iWrGB%eP=`Qj81m.\W,([&=DRF5HQ<#9qRYdN/$2qN^8PE<p%i.4rc-Qcqp;9s!28e#*=S8+klf"lF]'[PC)V*<gPngG#@WdSf1J?AqKWCeAGb-B-#tI7OoNdjR-K47ArUhkD1LrAhUXWD6V?3+[IW;0s=)R;UFh@L(`70Y#Ku$>arkY_j(Z$[?>'!Cf?)COBJr#MnVZ9O]^<2Zn_qi2m-^j8:@-$VNG?j17?Wja`Ae@6l<,(`Th\;/ors+;R)0etiG9;=LP7a8[5]iY3=*W]HPinVL)2n<r7l'Amcu*d-gn@+R7%(L%Q;T)V(;BuiG0qL.'"g!<CcSUEoSjZ*q[,:&LOp-o;5PctiTrman\Bg"5/<]g/MuW,O$COZ]aQ,-6(tuq7N@Fnr)E<(&"b=^3fin2oB5Vs6^_D$m?,Q*\MFd?VQS=gKQb?Q`0b63^4Yu^JPVuSj8hY1T-)i*fW`,[8,kpb5YC4FdW_=3&r2/6*qegfRSB*&F7\I+q>#eXcV3k?6QOrTBVA[;heR>"\;EO*VPKCG41MIm(?U#'.)!Eb`DH@!G00Ghl>pM(<0JIYBRZ,.]g.Ti4F5.GG#`H,M3E_r_i;cc=GLmZb2q)H^(d;\qC$F:"<jk+Xe%e$1)B9>0aBiJd9sBm,E,ZUpmFW,,U!<&bp'RFDAXq<V"\J,EEU2\c=%ik0SV5rct[ZAGbT0(79@fArp'gNPT0?@^@/_5s(l"U$'`Qh(T2>85I[NX.7uQ1b!^/H"VKmn!4Pk!3RW#XQ`n*P#t6-gMEugj!o))r>Yc>?O2[)fT`g&'olGDCXS>3=XlIOh%^U@kk;"i.oUf;G"qSJtRLuC'fCB[;g+Apo5G514@mXu>R_ML[V4)=s=aQN9QGYOqNB!jC7)Fh;N%(pSa?e^aILQ>7r"$!E%a+~>endstream
endobj
73 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2545
>>
stream
Gat=,>Edc#'7HK[d8*sl)2om!E:U;FkE9Xm-PIWUQ`8[O[MYOeQ=Cf"q0r:ondR8W$q8EkOjr2J3pJm<!?GMms6iAV+/^g&,=!YNk<M_cK]s;_SR29/,3;LFW9FMknD1qlY)1?m;>!PRY@9AGQsa+#7L?Jr:FW(Zk&7F[f@HLd$-i3bPtTjIm21$=XXV3PB%M&ug,5r>m*aI0oc,<K;BkAd5ghe4%3W5Z@(3h&eE;BUU5]=X)<fI,0`;=,\'!2ZHu7(>bLUc*G;$5tQjSmI#r@\q@.`m-5pqETC;_A-<2\U@K9-irP6FUi%rCJ8!k\[EiX`7#HnHNR@GnhN>R-\+i#'IL'gU)T14r-mr,>1\,\NmN&WN;MncH`-H-.=;m`Xd%`oLhf*Er5P_([f0\>+bA.M1h"I%Cc7=;pcKo7"M;Un/"m,n"d,F\k5GU==`rA2%AF+cJYCh1CGuF@YA@+:M;k^pVrj_!OD9$OiB[jpX;1C?8j\D@%e,K)0W/duYl(k5-j#hG$;3+L@<=.#=LhKXO"#h@8Yi>nCU1IGicj!)<?<!,36mSo8k*gB]eB&UQ,ZH5]5i3LcN4O5F@]KFFP_iS]!<NdRX9-=Yi)k6K([p_>,cp_,<3T%([mEVKmW*&sP2&T$^Z/9D0P%cfb0E/C^+=N8+e1:35]]'X),n/qeS&^<"cK'XmFjFXaPF=8eTRsgf%"uk!;jsVQ&O(R?d#ADC80;%9R&i,NK903Yj\DP@!b?j0%OtZV9b^mjCLke:?5q[b7[`,XA3Ugtbqg#"IWFK*7Rd];6/'WZgXorj&TMRcp9^nNT(8uf\@5G(T%d<T;C<D)BW/e;Un>R=FG&0/XA#Oa_#4ST15ddpUJ5=\qh=3c]+2fpl_cNGpLJ;`BDAU?j`p8Cpr*/3C9hRk<W1,1XWTH/ccS4`"**73@,NGY"NONLJ8uiZ&T!rbTTc/:m=XG=hPW24T9']Zh[IL'W6Y]^-BL]-06$"UBRN%5ICt"P/Emq`jDHc\.?,O?D`nDg-ijZt*j@Ya[;7a2WDPk#^V3ksY'l$Rif'Q,sIcMn*7?Rfn)-!'nY1p(bX2>aY<dn%CN)AiR"&rTTal\A8=)Y?aG#63Fe_dYH'k/WR*lmW5_NV!J:N)['nK"QK/JlXokn0m%k1OH58,>/ZdNEmj"=&^Jj=0osSh"I0pKVFMSaDTKmF(tpLjcNL'[#iCXTgi!B]EnU7C^QdNPJIG'!$PL+W]Bfjg)L=SO<nJI7']o)k8MCo,J;DRfV:!a/!BLV@R0)B-VVY54+sq`tX8N/i9>g#^dp$6</t1Fa'bB38_t.c;lsg8leX*f1#0"-[*Nt4YcSEU`rSWj&%!sV3Vtrp$cpZ$0UH>8#8^"*d?7H>6fD;nDf\qrHXKj+E$L[a^`!19h+n?<q<N!jE6Xi9_I)@a3e/s@HH6E,/[>oViXXG]QVi4A]ETS/bVZC=?F+5g1V]^LtbPBh'a:j8*SYF"_R*,0V]V\e1FEf`E#3fYoQe'Q>L<Dm2?3EN+LF`6;t`<lMQL!k`uo"mS_uTj=+DL.KPHb:rb/"psk8$iWar::Sa?gZ1ga[N"_0gB?TWV5FK#j_;^':OJKNr=SP^V@T\_d,0Z"@NG96chhVH@KPZ3S>BO\J2+7@I/*__6I>N.Tpl!2aC9&Af"<0$'<uW&H?e[b1GNoLt$9gh0Y8D3cCQ\UJ+9nf#6^!>!$6mTg<2_tQ4:u6(--J5j,[&_RRBE5$`ee;4SRJl+[Q;pppGh8,'_p<$_s#.dZ-8LOpt.C'=;-E\.c_aBKrF%Zc;L1AGi'Z,LMhgT'br3f-GrB<@8Fg]i9PJa$78f?(phF)R`O,t)>bT/rYHghp0<6:1:]Z]@#iM&'%C%_5+f&kl=[l=Z23_0212tUh;"$u%$(LY/#&QefC8S"Yr&S3rBde)5BBEAS+6<kP69Tj(AZ55.d.e7ru-qFTDfee5(4MJdImLMV@3C?U*Sf?O@SqM[FmiU>mL4q[]<O9\SiCHAmI`N'8`@N)"4aH.#pr&0CU\m;(J@UksAu5bmk,s9c15h=-WnQ67&ABD*`'YiOUWVi:qjs<3MmtCsbpBH_d(hm9HOd8&3`'P_#+TZd&*3<N;^4ct_@R-Yh>HlfoY's)L33ADLdacE[B;mg!p>La&*/rV*<<5diegl,!rt[Gt0K:n#44<u$XB-D"4MJ07kDa]$l"ntJV7!`b3qC.P>1/n+"HioMF10HpJ.i-@q4Wg2OO[8N`$7ZEfIds8AuV'nbA//>]^Z0nZgi:Bt,ES4b.L.b_=f',oej\l'+kje9AB)(Z>h.,n5!CM4M=r\j@%Q*pbcds8^n/%#W=`ZYZ5g6K_KK5V3U4j=,^f'iq@f9+\@MJ^=;V)NT!sU;JA1(Cq_]^LkU<@AFi!_JP\$r%YnTfI+]ObEpSpAQ/][Y2)&ZK5@F[k9Z+FASPDkj<J,A.Zsm>X\;VDF@J-9V=<ic+WO)-#G!Wei9T7QOKrrcW57RUZuif[,$'[/5.,.-o$)IqtYlAmR5\WCJPb,%R)0\`^g0g`8Uuom_,^q*=~>endstream
endobj
xref
0 68
0 74
0000000000 65535 f
0000000061 00000 n
0000000146 00000 n
@@ -412,56 +463,62 @@ xref
0000003471 00000 n
0000003619 00000 n
0000003735 00000 n
0000004107 00000 n
0000004213 00000 n
0000004291 00000 n
0000004497 00000 n
0000003841 00000 n
0000003919 00000 n
0000004003 00000 n
0000004209 00000 n
0000004581 00000 n
0000004787 00000 n
0000004993 00000 n
0000005199 00000 n
0000005405 00000 n
0000005492 00000 n
0000005812 00000 n
0000005887 00000 n
0000006014 00000 n
0000006156 00000 n
0000006267 00000 n
0000006393 00000 n
0000006519 00000 n
0000006665 00000 n
0000006789 00000 n
0000006980 00000 n
0000007075 00000 n
0000007180 00000 n
0000007299 00000 n
0000007480 00000 n
0000007606 00000 n
0000007747 00000 n
0000007887 00000 n
0000008006 00000 n
0000008176 00000 n
0000008322 00000 n
0000008457 00000 n
0000008567 00000 n
0000008717 00000 n
0000008844 00000 n
0000005611 00000 n
0000005817 00000 n
0000006023 00000 n
0000006110 00000 n
0000006430 00000 n
0000006505 00000 n
0000006632 00000 n
0000006774 00000 n
0000006885 00000 n
0000007011 00000 n
0000007137 00000 n
0000007283 00000 n
0000007407 00000 n
0000007598 00000 n
0000007693 00000 n
0000007798 00000 n
0000007917 00000 n
0000008098 00000 n
0000008224 00000 n
0000008365 00000 n
0000008505 00000 n
0000008624 00000 n
0000008794 00000 n
0000008940 00000 n
0000010299 00000 n
0000015186 00000 n
0000019382 00000 n
0000022908 00000 n
0000026891 00000 n
0000009075 00000 n
0000009185 00000 n
0000009335 00000 n
0000009462 00000 n
0000009579 00000 n
0000010555 00000 n
0000011841 00000 n
0000012071 00000 n
0000012301 00000 n
0000017114 00000 n
0000021412 00000 n
0000025104 00000 n
0000029016 00000 n
trailer
<<
/ID
[<575181c260e696c2648cc1c1c1520a6e><575181c260e696c2648cc1c1c1520a6e>]
[<bede30ec80558c24da73d8816f8031d9><bede30ec80558c24da73d8816f8031d9>]
% ReportLab generated PDF document -- digest (opensource)
/Info 37 0 R
/Root 36 0 R
/Size 68
/Info 40 0 R
/Root 39 0 R
/Size 74
>>
startxref
29277
31653
%%EOF

View File

@@ -1,12 +1,31 @@
# Android Cast build ecosystem
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-30 |
| Last modification date | 2026-05-30 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
---
---
---
---
---

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 14 0 R /F5 15 0 R
/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R /F5 14 0 R
>>
endobj
2 0 obj
@@ -17,42 +17,42 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 716.2874 123.509 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 762.0394 123.509 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 705.2874 85.70104 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 751.0394 85.70104 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 694.2874 128.389 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 740.0394 128.389 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 683.2874 96.81304 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 729.0394 96.81304 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 672.2874 81.24504 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 718.0394 81.24504 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 661.2874 74.12504 672.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 707.0394 74.12504 718.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 650.2874 105.717 661.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 696.0394 105.717 707.0394 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 59.68504 639.8499 154.7325 649.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 59.68504 685.6019 154.7325 695.6019 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
@@ -62,27 +62,17 @@ endobj
endobj
13 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
14 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
15 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
16 0 obj
<<
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -90,9 +80,19 @@ endobj
/Type /Page
>>
endobj
16 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
17 0 obj
<<
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -102,89 +102,140 @@ endobj
endobj
18 0 obj
<<
/Outlines 20 0 R /PageMode /UseNone /Pages 29 0 R /Type /Catalog
/Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
19 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190926+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190926+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast build ecosystem) /Trapped /False
/Contents 37 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
20 0 obj
<<
/Count 9 /First 21 0 R /Last 27 0 R /Type /Outlines
/Contents 38 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
21 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 22 0 R /Parent 20 0 R /Title (Shared authentication)
/Outlines 23 0 R /PageMode /UseNone /Pages 32 0 R /Type /Catalog
>>
endobj
22 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 23 0 R /Parent 20 0 R /Prev 21 0 R /Title (Local stack)
/Author (Android Cast project) /CreationDate (D:20260616121122+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121122+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast build ecosystem) /Trapped /False
>>
endobj
23 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 24 0 R /Parent 20 0 R /Prev 22 0 R /Title (Local developer rebuild)
/Count 9 /First 24 0 R /Last 30 0 R /Type /Outlines
>>
endobj
24 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 25 0 R /Parent 20 0 R /Prev 23 0 R /Title (Trigger a build)
/Dest [ 15 0 R /Fit ] /Next 25 0 R /Parent 23 0 R /Title (Shared authentication)
>>
endobj
25 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 26 0 R /Parent 20 0 R /Prev 24 0 R /Title (Docker CI)
/Dest [ 15 0 R /Fit ] /Next 26 0 R /Parent 23 0 R /Prev 24 0 R /Title (Local stack)
>>
endobj
26 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 27 0 R /Parent 20 0 R /Prev 25 0 R /Title (CircleCI)
/Dest [ 15 0 R /Fit ] /Next 27 0 R /Parent 23 0 R /Prev 25 0 R /Title (Local developer rebuild)
>>
endobj
27 0 obj
<<
/Count 1 /Dest [ 16 0 R /Fit ] /First 28 0 R /Last 28 0 R /Parent 20 0 R /Prev 26 0 R
/Title (Production notes)
/Dest [ 15 0 R /Fit ] /Next 28 0 R /Parent 23 0 R /Prev 26 0 R /Title (Trigger a build)
>>
endobj
28 0 obj
<<
/Dest [ 16 0 R /Fit ] /Parent 27 0 R /Title (Alpine BE \(config.php paths\))
/Dest [ 15 0 R /Fit ] /Next 29 0 R /Parent 23 0 R /Prev 27 0 R /Title (Docker CI)
>>
endobj
29 0 obj
<<
/Count 3 /Kids [ 13 0 R 16 0 R 17 0 R ] /Type /Pages
/Dest [ 15 0 R /Fit ] /Next 30 0 R /Parent 23 0 R /Prev 28 0 R /Title (CircleCI)
>>
endobj
30 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 622
/Count 1 /Dest [ 15 0 R /Fit ] /First 31 0 R /Last 31 0 R /Parent 23 0 R /Prev 29 0 R
/Title (Production notes)
>>
stream
Gatn#?#/1K'Sc)J/)JHk0\&\%r3<lr$OVGre@QP#MCU3^(WZ)WV.K[UMUSG,a>UL1JIU1mT?".:6h&m(mOG]].)kk<5TK"q'X.T%*7K$!@mJA*JRDn;]DteC1!`Vs\'@](0BU"<_>GSNU)5Eo4:):*4`Kkc,:5agFU/HiHN`MY!!NDpLrXBsbqZl1F/-nuj/fY5fTfGH-$B*k[;(&BoK1J3q"X"jVte5jF.+7,nZ"$#8j^DZrD_6YiZLj?@i'j.Ik\o^B(Qk6YIF,FrFEL,J,[Hrq2<]d,XfRq*-DnW$[auNoFI.uA"*<Qc!d&(<!mpTWGAPLg\)2#Hi8-%s,p77AOIR;Y/lREOmQuDfVQf.WTtT0Spr2A\X$BPen/soIr:YCbAq[sW%-UO"/EH"[td?KT%uWsOIC4'G3fWcfo^J-p-d)`6]Z/4:doCRlF8[V;SA_hHn"9rk^4cPIl;%Y<K@e/qJV-f!<-1I@cGal3eNp%.;OXb'[*13kGrXJR\E*3fqMbYp$pulUmV/8P![G34Vtc+EV_&Bo1nb5<1cp4-^L8mB[n9LWiS-2T![1DXKe/:n5u\<AQm_1ZY4PWUQ'D;<gh[4[B,[J2D%#d>RZ&^o%&li~>endstream
endobj
31 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2886
/Dest [ 15 0 R /Fit ] /Parent 30 0 R /Title (Alpine BE \(config.php paths\))
>>
stream
Gb"/)=``?=&Ur?8k_Gskg(eT0"LY4.OclnMNb+'-;\c0/6XWI%$Y$=rJ<$Grhp[41"@7P@`V%thQ7-.D^AI4;l(I"%T)J:^!94BaDfsD9R*7k*'FQ6Hn7H_7gR2BlZu!^$D9[[Kcqt4r)W8350?k/(`>iRfSdCipS$pj2_&Xp+9lp&&YS>]/p)N$0MIu-sqZL,-:\a;cg"4ggd<1hX^bDPie@.p@4O6JSi!\c)0+"O?O>L+g-j`#!"=uTha`j-M,\?\Gj[@QeY0.L%mC&'6'O..\<T.PYd,^*(k`*FjT'-SF('taS!Rom?-XoZd"\]!d=.8&#j"q$ib,=DF,`.ki1c]I!]/.e`,Uo0tR'm<Y3HVWZ$d-7CL6aHKN,Y1p,;2F'cj^6V\d=nDr$U8tIMGdtUM5UKD.c05ZWL`J&+5?#a7"rXp?e>P]E*XYbf5[RRulB;X/9o#'cRQ;-/I#q$)0khfF?;+*6icRf)Hk$8o#AI=%eHcB>r:\S>U;3+p;(,6tB:^[Xk&GqchVLM>,q"qgB$#;!S-/)"+Yn?SV7i5TqJrnhB$n[bi96-#p#LaQG,D4X-&ER'Z829D7jo^uZM[paRZsOYGWXp5L4HgN8efY[Zcir;&g+5d&.hmCd,8Qf=^5GZV!25sf0,`F'q;%KP)l!F?gkVW[j+FtC\Cmr,O_g-K;jC5b??<K&)"bmf]^R.5iMF[e'$7_U@^ViL7[-!nS#a8ZU`^RlsX0sGI7lCW:hc7hRLPlYp5#s%bp_L4>8<SqRrYI2Wfb)GJ"0Y19hn>RDC#[/+]VfDd0.KfI\*5HMq)8N.t^bCMRO<k5!LOt14D2HNRFCI4AHa\*69]sBJ\tS6mYKV(R`)k'h_'4IR!Z$%qIfP=3at3;q?j6g4KISX!r'8%B#m2:3N7Ud//SnKoRsB0Zmp]qh9W$7oC$>=G:QlK6$,uuHBnZ:?Va<G#$p"r@3Y.gI_goP-#&Cai%1#.=%iIr`#!QE\,Ds5[/m+7S>@J5.17AFUd1-49FI5h0H8([*f$@;;%-lh^<T6uL,"c%d>kn8fXqkZN;eA!($2lj+12S+'R;TdrUrNng"N,)I\3Krde*-5;k^*0rp&<4ls(^*iCA[q`dJa$QcZdu&CZ_.hp<,^pd:7#n#MZXlZ]4uPnG.fa,fK&(iO?]bcK:W]hkFa<NY\3_s-@WPi\SL#B2D=nf=>E"?,lJEMtQZ5Stc'<%bZaa[e!9>4h>)3G70HE;<-;Tr!u2D18=boGOm'+oPM`\-@RY?h?"kD,`+0S23bPaA0SR+2-4S2P3VLh\@3%#qfE#c*k&7;Gmtmf)Oe@1=&2?AgONVuNPR9ib1ncHT8L+%H)RP::4Tr<#G^%70["8'%ce]@E&6c$23fJ`MZSonk34E*:qJo=SrA3h,a]5uOWB7U-&j0bBDjrA!f^a$i&?r+J)KNX38,9SMIF#,.uq&KdOcdc%6CWoNhHW(3_L839-A4WQ?%+u+G5l_K7-B#DO>5]%j4^5D7jrm&3bN<+cDI*:,C<ZS7rJa!^7koX'RY6C2m"*&h5;Fg65M_E5n(*GmD9)+g-7$,'B`b!o`Yl:4sNR6./Pp!VcIGqWUX[UpCg-;_3BeLc11mKYd"0I_GdtVr@bG9^2/[(c$u::M;bHPi/]5Y1dIeB8@+"@>NR[9c+6AL2@jSqd)fb,TDpf7&)i7FgNA3UK'-2_N,9&4]2FZ54t@4,->Q9rc"5sF(i$[M*YN6Old.9MRq`a&*Xa4->=1An<+&C<u=Q51N0rpS?Vsl;4$0:p@"gD+`$2X`06a]g0(BDVaZ*O'Z"OR9[C%[Tk&VYUgd29ZRtO1Q"sBYrQ$bG;W''/2.1,K45@cH5nIJl&;Fcq_)N!N(rPq0%4h&4oM[,P@(kF@rf4.Q=,nu4=Dm;%epj8#cViX(M*tNrb%21a0%9,4#aY%O8@_48`]=7]N8J8^;E'B2]^(I3GVlWQI-D2U:!73-eH:AG_Lof/?%P>^!,EL*f;fhMg?0:f3o8.<G&>s_YaoX1XG9%T]qT5eVfS#U1>P**hG=J@K9?:I^EOf!1mK[+e>m<D8?OWlh'6Z?TFGE(H3&!sdkHS+7U0)KU.n9[jXl>]q_#g#-_ubskUC$=I=c'3;/aG'?6Ofj-6rj?-4>\B,K0@!Z3=X1jtEBc%bqr>';@_2MU<?5b#1`u6G<,U-@%3lC6dX_nrFuVp&:D0eG\g%6=#C/13Kks"VTCg\V.3"^IHK@NP!9MBan't*;Gt2N8\a++eoq+Yh?1j\(X$IUu"u%=Z\Me1JD>%&S[[h*\1;nau01Q`=_<t)2bFIb8H]Q7H%3?>$WCe%\"csS[\>qZbmHs6qmCd;^KNS1Fi8^f&/<Io6O'/R6JMO=n[to?_[;RRHk^=8uNO?7&#n;j1N+lURcS'<d.?)VY$RVA^/rJ=Z3Z6Ac5+.M1^9mJb%]Rajf.t:iaWoXoaW>[>WZ#K9e!a].@jCK](=LEHIcmOlV3dd@bqkKcMR_oM`/^f3)06+$_+9Ckj@VbJ`HFC5oAJO01&af+`0U^T'R?n$mKF%ZM7-5-3[HNYop^DGDC1d'CPtqB6E^Om?mobf'=6@7"'tdIP0G.7fb$`+Zummaa3r296hIL@@5-3*g;k&`&`Np'jEJ+F:aiQpM@MimF0`ju6Q<l`k36WL>-RDrC'<5I5.:,3-L3ZJC(e@G]bk^!5uj_ad>ZSR@W<%R/s_K+I94$`FnVi9,U0'*@\`'*;]eO^1N$/%um,"pcO9*T&WCFh-'B[P4G,>O^U;L,mKH-T6@2_H=eZPiJq4CgTt<QM7\Ca*fo;jn4;?-0,0[';r;9]6"t#g@??MbO<opgtMEqIfEalV5Km6Rqug6Ptf?mMrl?sD>m9`Zak!VXNLEpE;"d3Z?c9~>endstream
endobj
32 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1156
/Count 6 /Kids [ 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R ] /Type /Pages
>>
endobj
33 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 841
>>
stream
Gau0B997gc&AJ$Cbb]l7Z(g(cmk"R'VF;S%U8(S<Q7,tLP,M:NH?8=hmnf0YS!(+9/IK=gaa%j>O#'/V@,YV)n"^*]&;0f##2=\g"5>%A`4s./GkUmUmPTWQ=K_$YkZIUmiLsC)<KGeX.T?`ki;!c?fM2F$m=J`-h9O(cYenH`II)rFi698^HD:k_Si<M:Jm[#s0X=k=W6tbX>J/5eXc%EcK]a-E^`$C@keQL(/<p*\Zd4Po#ZgQ)i*>,(quH8ho(rT_PAeKa872V!/]OAdLP,J6#V\30W%\a;K1Q>'BpB$sV[75$\eb3p-1\RS<f:ep"3<L(k1a-m'TB/3Xp4'@n%T;k'f+*K,+DZ.pOW_D[f)iVo=[!8BUTNX`sJGHFS`ssh[FMMflK?OljaLLQZQ.[fR/J9kG@]_q)e0"X7c#-X)20+CSj=lfQH(@0pcufnpU0<Frg%$?rp6939<_`:J<0/)^_.Y!ubAoa7@J&96i=9-WKBb(Rifh,-&+PlFs9c=>u)Xldmie&tua/BXTQ$W2\R'j>sG]f>^L0o#QL37V$TQO_-O)h.l!O:[(cZjh*3Z_KNR_R:mpgn5oNNbXgfJSo96FIf4O]HoSJRe:OuAl32RQKqY!9ojKV3Xikj&=@S9aII-lE!h:87f^I,h3'.JONLpMred3=/d2e@,@$pRJIF6?ho19Mh(:%V/,fH$1ek$$m%gkNQ"j=D(WK\r>;F.KtRud47#oBPT)+8>a2>`U?H_t@[Yf9?>D0B];<=$^"\Y5An<GES=U.,G(bh+U:eQc>La/i*m>X#$q!2B`uWERVHnmocO'c:;iHG"1R8)8&&<H;_Qnl2$2U&VEERo>NX\\uNAK^6:*0!T^+rUT:,ZRn%X2&0EJeGHg0^3@*FchKY>$7qis]f'%STlo0.MW2]$R@r;t<Mp<K*@jc=7=S;!]RmotJPhnoqVHZ+ElY3%?,;WlXqf1<JOg4""S7<>+U_=iRd*2sDBD'*X"EPRSF9]m%R7FO9\_;Sl2'_Sr?h&.ThQOjTEZ(.J_NDV4E0fr9F*7gmi^;gj:Oc0J_.NfaQbOdF[$&eh?2*bR&`-!=%MF9/=@pXVGWk]XNK314du&^4[5J"k;Ze"Dcq9\E=!=;!jOF6A9l^Xb36R$WuIUQR/IBo_T)N~>endstream
Gat=*?#Q2d'Re<2\;sdh\A%rqa0o][9p)lmFOHa-(7^[?5R4)`rr!6SiF<1F#UL8#53Et/?Xk<WqdB67Mu^"D\@b0o#2T\`&-:VhDS=/a$%@gIOsigu!Es8*\LT5VL'_u>QQ-9T("Ed*/X\+#dcZJK`-iO5?=Ztg5ZsmjX@Rk.&;n]:EA)k,<?.f+(r2-'jm[U1XogB$,hlqAM*?Lb$Jks1g))@1hEH^*.O;<c.4Mh8U"aa%E[#]oYu#8=TLHm&VKZ_e_=c9D`Ve?cpA<k(:D*hrVB-=I'B\LV7!!m!XG,43`RmB2lXa>:\?sI4@E=]+5sf<oF^[:gV]*J:TeW>g'[U\I'Ks_-SjTSTo;ZkV`G&Y-Q4a).jXt!"Pa0)ah]fLmn!9-&?/=dTeKu\[bM<n6B\(3S#pg3M;4YW&_d@=ULUi6oMS*ROe/=>ZRgH8Vq+Hk\R*-AsELt*f[IRflgR?CWSHnQoT3C"\jupr*,X*gX$uYEoW^kf_P8ZZp;BbQ$ma<0'4$E\?9[0N+ES@0lNOE7mI*n]7#Zou*bQPpu)DhILhY:XDQdopWlrC$shg5BOoLp=N]1KnfHTL&/m`5Oi-L,RV7m$@1%pIBN`*j'mC%@d_/F*m1g4FUUgdEL7+lC!Ccomg^2p7Q?<r;^npK.6=SIgQj+miR2dlr/ff+n(m5P(ZH9IaB#n5tEY1I,1#Zn\d>j9SV&B5!$%9ibL-RNYk0g_Ru50tIP92+"\^W^_d[6IZ:t6L]`4[]Bge6LRsU_!PL/\_\F?V(#A3TnCmu-!DF+"l6V.Cq<#_S=>LIOB`H@m"^p!+q^C:3]TX="P"t)R/@'bQ$/)~>endstream
endobj
34 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 571
>>
stream
Gatn#6#W5H'Z]\<'`V[SK?H&Y_er,28sLSPe*(4<Ul'a;=9rNYZsS<;Ut+2]^a`k$,Q-KoH[\'j4?$r`Ak-6ki;/a)*6A[)YQ2c`X(:p:7d%i8A0MAo!)cGOq/P?LF3Ddc\0(QTIOmT!J]X"o!Q",8m[Nj++V2]B1&.0QGu'eTl!pQ_GK=lC<GgJ@,eoIhl.J;V\AT3?-i!ZI:Pa`6BqYJW;PS9.SLkhnbYh[1HA"Qq:M$c]=^%N,Bm(?0oqQ63\U%/=DNo]LO'PoM,96JkWdiD>1$*lQfI=hG8PI*0lKmHU2g6LF?8r\mVDMGP`]us49Ej5hSTe6:B;=$YNT`&.rBHeRE#-1WAUh<2Rbep0X.$=p=KJ`t]0>,;He&l?Ra`,?p1f8AN0l7]l?t8i#g&f^J.iDUM?Vu;r*d'@I!s)"D?$7n(3F1EobED^]Ck`'\_=."s'j"g>L"NuFkY$=X:HnS[5jn]Z!#rCWDq3d['2u6d<86ZNHK#;RG.=;>%`OI/c1V^P6$d[GX%gB?`P&#EB]Td8L!dQUW=1(LFa^.L4n\/f+;j[R/I3ag00(~>endstream
endobj
35 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhNS@cJ`sQ<)AT7bBX2'SI1sre63!8eu#Hi*12+:VXOqE!h>Xcq$8qnjH_CLV:rJP%rsj5>UUDD.`Liah"L%cVntog).//WF]OI2_e/&`/?Tki+CUX9Pb^j~>endstream
endobj
36 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhN!`Q!btAh.P+,O??T$:5)Js2%0!'c(Chi*12':B,^cE"9mgcpTunnjM9CKRM'[P%nF[hj8K8<cdi[ag.prcc><c[4u7=;Tm#&O;KE.i_Ac@E&[+g9Rn-*~>endstream
endobj
37 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2935
>>
stream
Gb"/)=``?=&Ur?8k_Gskg(eU7e>?-?_cJD0Z:)a4$<*rJ0I5T\1"[@/7oK0Ol+oZ;+@(P<qJ@fW'JNVGrH40Cd-s]SJ,2fgb;#r6FjLR7cTnrR$cY-pApj1(M-eK7CrPp\blW+M.#)?E\F/ENqZKhP>ts325uVUK[^mi2Y2X2b[pt#dG`K,j#gZ=(;n'@df\1)WD^WW?^64;T_fuKB+[r'<2=fp55,nXU_r,u03":CKl%6ohk`[i6nL9F3_tYT.ZS*=HRPo1lSQKa<H*j9tnnb940@tk(?eiHT,)Y<8:;LSJ?kF,-)-h/*(0$g?3:q]s.K4@UKi(,2j:m7mn[t&4a")CY>cgJYU3VK-S"Q,n7rpgi>h^)u\g0&NAWDb_N"eW<*#RrfE!iqDE(g",:9fee.8%=F"jPA6OZD.-09.$d0@&=[Df5(L\@Iud/TWkEYg6'='m_>g)!+B$VeI'ho1lP0VP,u<o9uf]6)';r2Qj6L(=UNcV=urFhdf.]ZtbE=Z?^6o5J?d"lMD7p_3alm+Rl&L"&(D]6RfcZm+7=c6INi%_L$.76+BOM6mZig=W$p%U^mcEhl379i*h\i\+&le:_"[\]SGiX6Wh(eW!HemcKk8uM=?U3?UDL$MS2<1LPkY.\RkgjR77mCNBfQ*>XJYh7GO<$mS_f5*8eKFbl_\kPoZkZqFm1]L.o!/3)1.,;p*W>_6=d^Wo1U;JO_64,&'(:Dts;07.C];Z?9i0hRu"e#lR^+aQ5JDi)9dQq1)LqYALr'f(3W4g:+o^=rY8TC&fJlD#g3.!IUmVi;[Nl_dRB^T8EZe(_oB',ci%Z'#&H62@%]fiL&HSg9EB'QP5gB=sUa1c`Ige/_c$O(r@+llr3f_,^u_ui%KTu(do7Ar5.tk!KSK5".1h"1i]q1?$0`@q-eo^XbfuE9"1^lj23E@1X%-^#6\Qlk1bIpko_bF5f2b:HrfqC!lo=_E]Y*LI-*UJP4BT?^mrCYImmVH,cSPo,U?qX$g46'"K^iASTa[60%mG#M=.rLnZb,p.aJYP/SQC+@6mtMZSa0fS=5+[*+c[h&#2h-?Z4AZ%*\pmD3MIorV+d[h1ppSbD3:qDsmVVYWbmqkMKV$hgbNNGJ1Cr`n>CA$ksUE2HKLT?/%0Iptl=KDjX<Eb\e8HH^s,tch[/aH5>OSi@,4R#q$`W1TGg,eKfX88[cuWquAWWY>-/fC-[u=]dR>Gs0U4L/(SCGn>HmUNig>$5h&:KlE>Cj56=R:AisM]#NP%X&@+jUjBP\0C&88bdW84UZn<o/r_A8r"(AmhV@_]p]*aeS!9/j/fpd9[Gf79%kiLY<r6i7%X`FHHG^Gp8>0?:;\GL>dEVg?F7;^n6r.>#f:AprbZBXuY^qnA[RmnQ92h967$QqP@B>dSW#NBG`@u8pmY_\o:@p(DeXeiiU3-l[,[RQQl(nTE;UFhmUb6\E+NpDd:BRt\/ZT6)>8=WbX>SA7$i+-Y4ho^OT-C]bm#ZQ*d0Dtl=5Ta^Y&gW:^S?s>MRdNe`qrDBIX(FdPc`'`-%:r6<ZDn&Q=?8J0J[d;M[BEW,Xu'-$HlaW6:r>7dLZp#D_(\/>I2RoY\n"*]`GZ^CL>bH5:*5\_1LNd$c9NY>5-KheUR_.5Q8?hmmTSbQD>&I6(h"/6M"TPfYt/9TVU95D8!Lrt1"eoN]$jkR>G<i578k?,(ieFX7A(`!^J-!%RP$3Wm&/8Ofj.Qd&D0^Q\OE<gc8c1Tq?5tq(<86m-UQ0+L=5DC>L*m/CqaZ7jYrG&4"5Nt><*#[A`oq1(+T5r5+FDtYf8#Re%Ak_QsVMG=d7WX$bL!3=Z'\RYfsKhpki)]=PCn-2[Q>m``P;j;3cVb%YR$cYbHH]b.Kn91l67Tf:1INdFF/t&S;a#m@qc"ca2S7lFSa881Vck/Ag<+H9DML10tM@f>uWILEN)nL+Guek"qCg;pfBA"r9]^4T_a")4dY9-d[m!31ls=&Ek!>9uDCmW\LZ):/IXNRsE"k9Ucm-ZRM0i&;[Vn1`6F<7^>R^]>r\G8tkEE;P<BC"9b!edRSn84`)1['o&N27'1O;@B<e]+:/]"Ke^Q&.r.tgBo/kf"d+8kLD]E7e?KKH<G]EGdEH@jXdRlnj<)a5KFoJ?:(^r')#kg=#>EYF"a&.E4(EA#oZ('RYsP@oe<-WTm!WDYOUK<8Aal&GUC:[c^D7nc^\aj,(ZLH[>qC8PPkAfE+Y4_<:ig^<4u.+=6e+@*^1J3l3*c-tBSJBZ\#]M1[LZ$1G>rbBNfD*o'3S7%R\j=r.T]]o2?)@M&a5E=MJ=ao(n$(hiD`TVI3`Kdg*PCD\+a"2_\:'Y9_fH&(!$Z$.Ye2Yi%gMfAkT+o5/THcp9AF@UA*W7Wu0;WW#q<nU6?"LU:qS@SbAgZpPtN9oV&R%c+:ks274`A_ab/mK7B/;o&'>de@j.(ZHmBj6B6l0O4WT57hsK[(:R:1#\_%63mX*_MSc-):qnQV*gA\]Z!&XBXK.g$+OY);7?c`o@e)mo6.^i]2\oD/9"7o,eY%r3gq!`G7Yb(6=7@e3%-?Y2-S[u%g#Fc7+,F4GFZV>?ir$_K+fq\WH/\Q5V@+e^Zs\0'CJq)LA</E7GeF0KY'$OrrlT]e#3'nF5G'/o+UCa2khJmj)m8>r=M<Hgc]XW5i9o>ao4tomj2"X!h1LJ[dG*<fc0ioq7nSuI?rGbi4qtJY&$%o&W#9:d'S"+9!V&/`!b?G9?V&?j^+!?@#USOPh]eQ`\^h^B0VX,"o&3T'3@aGEepL^jM2VTda)0G]]Ul,T+646!]5H]1lNqo*aEt';Nc"Obkqm:bjZh1[hktt7Z0Rn=rkC9^?TY8Hg!T;iRZOQdm7k[Ar2j:;Hf)&4<V6e9f@"fnJ`c.liZbjI>[6Qi-6_,c(#;5W)n'5A\sJoH^]kOD%C*^jrrI).NnO~>endstream
endobj
38 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1205
>>
stream
Gau0B99Yi)&AJ$CoOUsmWBhZNbB$=VP0In3_b#5tX\/k,1BWFJnp#3.hnC[nYmiZK2-X:LOemN*^JEZ;-oguuo8X3/%nj,k;4oNm;kP3%@/1ah>Yb9icrMrYLbkeiKW]rWjrTs/WIEoO;PI&K#LB"UQb!3"F9[mqH93;A^^24rqI=:T"D:3,gDXAmot3#E(]:#aLll2oTLoSO1jIgWg)8me&>!+QN]"0ld"0e.QtuT`AtS/kOh;<B.>59`jT@&P[GNY4S:%q)QNU'&g1':!3:,EB6\)07`2%f@*,Irtc,rG3/;[N3es-p[4BBM1[9bZjF<IKcRVjnb8ohYW\Jj63I/e'!R8d>3@TC/U]bcX#Vt<3i(OK__B^,VCf+"EZFPFcD?[$Kbq/\HeljaL\;f%Y=fR/InkCrSCnN6<oWjV@kbAC9DpIp'-nSInWMM5O*6L;lsYj6W8"1sFnh'nBtHt#E@>''MXCZr%2EZO%dEjRd;mt@[Sp4_WgRu$?HQ+AVA0%Y4sZg'E,^-jC:':S@\*%Ih/TL9l'ZYOD*,(AV$1(dY`7&8ZK9=Gmc^f.gD1RqN,Mtp-/$((<u%fV@#LC&gmd.8^Ya0.^'L^sa>5ohABVOk[a>j/bu?LK53fXY72\n0A.f>l0d-G\;3JGoI@J?u!Ng\@0:B8s]LkKOV'#eEU>e!Jp:H9MWZha&#l84%^g@i\RbGGjrZ6Ln*sJgn[&"dA:V[eWI$RrErXRmLX`Y21N-pbOG#SC_p8=hS&*X$S9gm1$rY-klKF'GX6-jOT&i]&l].+1"9UEq,N-'!)F^V=o5,QH)(,.)Gc6eDn5f+*F&m:s"]"+VJW-LAoB]-Ds=IRh6aW&?bUCcA9q!oImt64mM79WN#*eVVYBSrk6,OIkKWr-H?2!n(3;V'38,@V(%EEP"N/7G^8TDdBU!'VWa)?9U,%u5;6bL;;9jo5j`eV\gpkihAO0%*QZm]9e_KN)m\P8?qEQgh!N!LEjZ(AR.K-Lbi.a9O,<`[4^EQ^[bhdj.@AWL#?517eStBj<sKljJP.HQm2a,,*^=,4IGiYYZI5b/B\uT<[eCnB2<;oUn-Z/-LBX#5<nEf3KU3PuUSh`fEmJsmq0BMUJF>IA:^R@72A396fk#H^JkF][=0%f6m3M<P%0PgTVlrRr(Ufb*ZgmB)r)lR('Lnr3:`>aDSd&RiE3TpIrWT('gYM~>endstream
endobj
xref
0 33
0 39
0000000000 65535 f
0000000061 00000 n
0000000135 00000 n
@@ -199,35 +250,41 @@ xref
0000001388 00000 n
0000001537 00000 n
0000001653 00000 n
0000001921 00000 n
0000002027 00000 n
0000002105 00000 n
0000001759 00000 n
0000001837 00000 n
0000002043 00000 n
0000002311 00000 n
0000002517 00000 n
0000002604 00000 n
0000002907 00000 n
0000002981 00000 n
0000003084 00000 n
0000003190 00000 n
0000003308 00000 n
0000003418 00000 n
0000003522 00000 n
0000003625 00000 n
0000003762 00000 n
0000003861 00000 n
0000003936 00000 n
0000004649 00000 n
0000007627 00000 n
0000002723 00000 n
0000002929 00000 n
0000003135 00000 n
0000003222 00000 n
0000003525 00000 n
0000003599 00000 n
0000003702 00000 n
0000003808 00000 n
0000003926 00000 n
0000004036 00000 n
0000004140 00000 n
0000004243 00000 n
0000004380 00000 n
0000004479 00000 n
0000004575 00000 n
0000005507 00000 n
0000006169 00000 n
0000006397 00000 n
0000006625 00000 n
0000009652 00000 n
trailer
<<
/ID
[<0d35921c8624899e1bb669ca58d2afef><0d35921c8624899e1bb669ca58d2afef>]
[<cd81a7e6527e122406b62353aa6bcb61><cd81a7e6527e122406b62353aa6bcb61>]
% ReportLab generated PDF document -- digest (opensource)
/Info 19 0 R
/Root 18 0 R
/Size 33
/Info 22 0 R
/Root 21 0 R
/Size 39
>>
startxref
8875
10949
%%EOF

View File

@@ -1,5 +1,24 @@
# Commercial features (developer-gated)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-22 |
| Last modification date | 2026-05-22 |
| Co-authored | |
| Severity | medium |
| State | postponed |
| Document type | draft |
<!-- doc-meta:end -->
\newpage
\newpage
---
Ads, in-app purchases, and Play Store helpers are **disabled for normal users**. Turn them on only in **Developer settings** while testing monetization.
---
@@ -10,6 +29,17 @@ Ads, in-app purchases, and Play Store helpers are **disabled for normal users**.
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 7 0 R /F4 9 0 R
/F1 2 0 R /F2 3 0 R /F3 7 0 R /F4 8 0 R
>>
endobj
2 0 obj
@@ -17,17 +17,17 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 716.2874 110.157 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 9 0 R /Fit ] /Rect [ 45.68504 762.0394 110.157 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 705.2874 108.829 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 9 0 R /Fit ] /Rect [ 45.68504 751.0394 108.829 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 694.2874 82.58904 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 9 0 R /Fit ] /Rect [ 45.68504 740.0394 82.58904 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
@@ -37,22 +37,12 @@ endobj
endobj
8 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R ] /Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
9 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
10 0 obj
<<
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -60,88 +50,155 @@ endobj
/Type /Page
>>
endobj
10 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R ] /Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
11 0 obj
<<
/Outlines 13 0 R /PageMode /UseNone /Pages 17 0 R /Type /Catalog
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
12 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190926+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190926+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Commercial features \(developer-gated\)) /Trapped /False
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
13 0 obj
<<
/Count 3 /First 14 0 R /Last 16 0 R /Type /Outlines
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 20 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
14 0 obj
<<
/Dest [ 10 0 R /Fit ] /Next 15 0 R /Parent 13 0 R /Title (Developer toggles)
/Outlines 16 0 R /PageMode /UseNone /Pages 20 0 R /Type /Catalog
>>
endobj
15 0 obj
<<
/Dest [ 10 0 R /Fit ] /Next 16 0 R /Parent 13 0 R /Prev 14 0 R /Title (Before production)
/Author (Android Cast project) /CreationDate (D:20260616121122+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121122+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Commercial features \(developer-gated\)) /Trapped /False
>>
endobj
16 0 obj
<<
/Dest [ 10 0 R /Fit ] /Parent 13 0 R /Prev 15 0 R /Title (Code map)
/Count 3 /First 17 0 R /Last 19 0 R /Type /Outlines
>>
endobj
17 0 obj
<<
/Count 2 /Kids [ 8 0 R 10 0 R ] /Type /Pages
/Dest [ 9 0 R /Fit ] /Next 18 0 R /Parent 16 0 R /Title (Developer toggles)
>>
endobj
18 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 500
/Dest [ 9 0 R /Fit ] /Next 19 0 R /Parent 16 0 R /Prev 17 0 R /Title (Before production)
>>
stream
Gatn"?#Q2d'Sc)J/)JHk;EZ*@CtRR42U\C#qsn<9(cWrp?tPr&n'A3b<MQ_AVTKNBS7A.Gf*;A<Ml(:C!Z)(0QNRpT)c4BaQkcdJm+71;3g5f-/EI2Fer7d7M>LbMnP%#'K#q8;SUp$)j9`Y@BCVO7^hB)n+p9;7&OMEV+u/e(Z#2&8(TqVW0C,@K`YN"Gm==lBZ?N`s^%LRC,1pXYFp@OOjrMa>DND55j*K!Q&PF4*;bjkI*8cg:,tn7tdjQ;:iT#P*k"G/H/3[EJ?[Z.+qRC!O[5WCt+k97sH;]"%6.2IcoMgYh@MOs/c;!i(Z#CYHXp_ZG_[1qbd/TXipBbD068[(CpBQH2[bJfn6KdpAkSJF&]LD9p[4=W3]%?0r(N2`L\B:Ntq@fNi@Yur;lU3/'(d0_Ra4/8,WVu7.^9euR%PH=!BFK%k$;K@4%_-`^(3PBcQV6,ap>5WHiMHktG(&h,Lp^W=(Osl-.rUq"f[7`Kp)AD^![.~>endstream
endobj
19 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1489
/Dest [ 9 0 R /Fit ] /Parent 16 0 R /Prev 18 0 R /Title (Code map)
>>
endobj
20 0 obj
<<
/Count 5 /Kids [ 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R ] /Type /Pages
>>
endobj
21 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 841
>>
stream
Gatm:gJ[&k&:Ml+oOA^R@EZ,jk:)'WATt,r5^5rPPd$E@1U?,-*A6sVgTk>LQoGE=PQ<#0e_N:BICa:"n?Ind@17*0KC`jtC^RKPfIh/Pp((EQHN3^*NMPkPJ)FH^"MoUjcHsOO\;^a\>*nWl/-aiQSiL[&%ZETPGk;XFUF?!A6up;q'[jB!="ND,Kd@=)-$t@C>\OZu/lSo/@/0a.b^Q33>&*=m,%H[s8$Gf.&uB(b@@a+]7W)_@:LLW^$03TXK1bW'^7sGl[S-V<V*\CJnN7W0ZE4>&=$grKH"M5Xc.Nosa"$&Ypr.9I&lO-H[(bM*'/>PEb7+kh*<MHbJRs$5pd=%$T"@M.-\5h<p'<Wgi;<CFfGIZDlP?/2>+cm[gVfZ21?u5K2oGWLF0:g%ag4adr'>&7pUl58@L]9r3C'+.DZp4cJObKuNOjHC*XaOkE_*-'I5o+a`3`Zp6'^TcLj23Q"<B'_8>4=_p3Ul%nTGr,dYl]MR4cX>6;UVrI90>WGf0*,'is)!;?L^:?tdj[n&nDl7$'Hopm1pteQ7Y4&+c+Lk&F<:h03l;,7N:1"qsqZ'd9f[4"ol'3C.<W%4fj5[^0n8Lg2V_IdsK`!4S3/X\kOIU9RTW&d^r!W<o43J9aAE/EA<-,>@!Ma]B<J\*=R9-O2)`T00,ViK`TtPKk+,5i)Hq:JI43;;+sF>pt\4P$mo<\5<T+[,g6T+n:`=YL!F2rpPWbK/Y'<_R1"RaKk_jWd-/HnNJ?bM+"+1La;.V>u:$!4?dS",c,h40Z""`(WMUX:9.3)rZq7pN2DdZ[f=5%+$DBPJa;"9Ic&uRYWY0O`"g&W#Hf?-(E6T9[m+)8EXdl]C68*,)n;n+OP(Nk\>hHK_AXB'.Q8brIfZ@M<%g.q^30*3hkL>O:3TY->tX<MTTuV.bRf,6M=HHL9+r;Rkpd6".GpEc=N*#H+VMRJBDGa&N+fr@fBQP?G`)NBc'+6%oDYV5)cO]6hX7.o*EP5M'ef@!,]]nbZjuimEG`r>H8VE=#0\DJeqa>3PJZddTk<7.)e;S3p,HRe2&8V<,F,EE&@4K(R98h8fBJ%!)D"OC6bZ@bY&5Tt[i`ZG)gIuN)bQ4.U\<LO;K(G.I>>ojAlnk5UQXt]=X"V@)NpFhmQsP;Ji5j?F>eoDD#5dS'l(TGQUS-u<gFbY:uF8&UkAA5W+rXRApoHM</W+>^-\iq^t5RMbn0DAZBB2n/9'r.MD%$5+5d$E`*<@f4B>5tE9:MaLnc?"H.$60k)s5?_;e]ioQK(mWGrZ(CZ0bO">IY.@S&2U/fnoan1WBe8+VpSmcAO'fV.RP/%eEsdNa_'_="&<.I8a7F#sZ]#_XZS$ha'W)I8hc2,TP2S9]dS<j3O#:OCb`*pmpk.1N:K"iaH-:*#F___/Pgs#1%,\?lWVZ[D^rKR3h$2^<(9]pPB<Xl68H@-_(AoM;(YH%+Tc4tXCc,WRYcGum[.Xc#L65N#HA:]~>endstream
Gat=*?#Q2d'Re<2\;t@#\A#s)n<deSZmjPT"RW0A.%$#E5XqDFrr!6SiF<1F#UL8[4m*k.Y!3JrH*I5(6i^S!G^)P?#&XF^#mYY\O7))T"@"-A+OV$iK2RS'bM`Y<L'b8U,qL1),H7u".)?m`OM4Et-_Aa7E$LQu!K&')@mpGe<lEa)h">*e8>8YQS']nVTY2mPoc@G;^AcL6A>do0S!Rjhp$N=FGB!"ZeqP-O0BP9m=<\?b@R8D(#i2qifHT=R)%5uS'j>]1@JZ38&M/Ap5<l:dhrdWFq3@Zq#so59X&;8?5ha4N@u4a_1u<"_>ehn!QlX&*8`PDQ<'tVC3/a\l@J!e5.1&"VgBpBQ1HW&WX6[Fh(1)H\f=K([Ibo+U0X/a3@/mDFdqKge,qZa?[Df/r:f`m'/?;Tc038bn,b1UAL&%(Ec#nfPM(VE5B.DCPO:[lfkBZb_8I*K$#3n0@@[IC,m-P<E^V'-Q)<+SQH_isDI@.t)L#9\*4]9gD)]#F++H9@ic(9/cn+[$E1-)+=``S:>3SK4a\'H0hr%JC8@jWlne"@$:n\uq4YH2V)@''ddh=!@+UM$kj#@JH^L[4cUF%=ppo;K\Q*:;*6)tZS>'CV*4[S,U$j,LZ\8\ZUA4OS3RfjQg)ok8e=on)N=mgo#:T+IJ@0$G?3e#pEQCC9u&Sb>p/)ATG[=I2C^3C$g)Zk:pr\Nj-L(7IUl-7c5%bop8cS/02F0rbCS2+"__Z:==!K%C:/Ks2K,g9N12Ecq:X"n)"\c1U2HrCiq2&oF`$.o@9`8a*UR"4JFao>GGZK!5qTgMFDo&:nM]f>oDX",Ku$^uQT@QZob~>endstream
endobj
22 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 435
>>
stream
GatnbbAP0N&-^ED?ZDF>$feMP39dTYUe7;oZKrnIk#"I83WX]E-6Ue>$WJ9BYnTu]mYhh]pPYJQ[K=#H3^WrT,Z@OT![K!!P1Fi8%[DTS@AJ,JXYo,o%fCPMR.3^<-,F+3EZK^F-/sI5AhAK[*?!j-<o+Am6\q;[:=@JD^eU$FU,GGGh')S\EkeqfrOV'Fr#`Z.o7X(,O;bfN2C>o0EN&8@QCD[^+MO,t2,ifL8nTO;XBsQ=$=--1dX-.HYY*)S:r/siZpQJ_#\)2T^o()#ifJ,jT;?"3T1_L0\bPTH:\J\X/i+%%4cdX9\),ToLoi$!&43-Ic(L.OMIhLDF\=7m]_%!3/Bl\T$M?N`;6A$i]%We,`YE3J[)hC\<U?eiV?8"_icO(54jGTjiSfReeUisQ;<6mm'N7CsdnX,?"80]#lN``ta\D~>endstream
endobj
23 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9"kTAhM``PkDdF-fp`Q&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:emFgZ@onCPq82Ws8G-_Tt6^R9oWtig34W3;D"0MP=sG_Q,?.RGJoD!mbh^0(JJ'S*<~>endstream
endobj
24 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`SgmmFhnNfa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#B](9((,pZH62[FH7Fl==&J^W3%Z>&B5W+giG*2MH_7OtUjbJt$1U9Q2!n~>endstream
endobj
25 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1582
>>
stream
Gatm;=``R^&:WeDoHTc?'MH/aSd7?6SP9hja;\,XMCh(LZGkHCa8GdN?c4o@#WkJ,Z.8.";tnm\$3krmnJt!t(DAdCVEc"mAj@qW_;nt5Re2(%BI.BG`:7Z]!nVW%1Fs@:p$T6q\Fs+a<t@1;[4uF5,Q_]l44g*/oQ#RRnO_li+,&lc+QG8l>f(NH":Le.I)=nT`eqOI6`(Lt$_`k18V,pj':A\_9rujo%qWnUPR(]p'8UcDE<WBWKe'^V@\:GHQ,Jb96j,Qj5P9bSgY+:!ZVVQW5q906`q-VWGZdQ`+;8J'=tEF_5X3]%aQ.928KF#k.DgA^Kbu&3CX?ri*M:u]D=%mRLhdja%KVc<NjHn3-&,"YD?8K:e9Cg2!]DbR`c_VA@PcX#(9i2GphY]lb9<JERG@q3]<smcpLp.Fk['BsXLN2GhYUGgH9PCSm6!>J/!4j'ULB)u*]%XHM!7!UlN+h@I>aif?B!WD"24=5UWe9FX92/Pfb[VUIju&bD2=j[V$JO"=jXl`RnS1`V@C4PD3sL]p)1A/l*CnSDh@AC&_:'$ilZ:Df*_G'J,c4DQ;.RNabXFda/H_@bs[Z$1cMo,`Ru8ijW%ZiDA\=R6E*P5LY[6\Nlp/"I7=/22=\5Hff+e"-Fo;S79Yn:<Qa7J@(@816`lPK`Z,k89gYZV9`%K%"0p3&`:SHtI>'t3X.PLR1/Kb*.Ddqu]npQOdM[TBbkchaX@[b'8gW):$DjGV@m'](DR@Cr/UP?g<#F]o.l9P:q"@g:n;\d&O[RAHi+_n5R>=D:U0US8M+"+9aZ't*UhBl-nbBK)JPu=j`=jkm:LPg"i3Y\*6p+-4!e^#VMsZ#`s$r,pbdD6omHa^F%pS[!9jH(-J)HlLLLO]Pq;u2I?*5?U>n+)G@fc&`"_>']!oDH887@J]]IOd8o1L3I9C&(idTorCF\IkK^<tc$*/8QB$+,k\j`AYkH"OSEnN9#U??Htg\5FD@I&Nf2,QSOn[G]^f&Lg;i$nmP)6q:bb/J8X#,+\G.l>93Mqr\>+8%+Ehp3"=^1!:5URHST)m*+L6CE?b+qJ!_nJRO-I#fos>j$_HLHt7k//(#E[nmRZ9iL5m$f2IKM(+f$_fZ(,TMROKT99;NTO708i7ut,L@.)J'dtSHFn?<p[60diNd<?F5@Wo/s)O+cVb@<QMnW^[UC)^'--tr2c9rH_#AD7og/Pm,+g,t$'[^,N:KH-bL-QTQq6FA^UA(ERFN"c$2K/ZnI-1Q#EpLX\"TQnSg+D3\1(W@13jH"-tIps1EHP,LT!VkNVOJ+p8>4Z9rc&#6uZOEF+;PCSK^0]s),&f.306.(en<of1bH$QARl:39'i2^2aWYZO:'00OrBlQq7!s91&]<C1oJhQl7rM"*[uEYG,;R`OYGBRR8['O6nrYa&HYN<<FsrCEZAUj!a#.GPXX=i#.[bKqQb4BtZH)quYkq)*E&PsA:C"CbYHE?jd@ApKl"SWcT%X[_p-h+>.C-_7ceH=7A[`MqB/s&M(K8_:^kcc'MQ`oElh`b4Tacd7lD:3eWbo>#HMGY'Cgp?.'iF^B3!XfJ%eT`&^03Hn~>endstream
endobj
xref
0 20
0 26
0000000000 65535 f
0000000061 00000 n
0000000122 00000 n
0000000229 00000 n
0000000341 00000 n
0000000488 00000 n
0000000635 00000 n
0000000783 00000 n
0000000898 00000 n
0000001133 00000 n
0000001238 00000 n
0000001444 00000 n
0000001531 00000 n
0000001845 00000 n
0000001919 00000 n
0000002018 00000 n
0000002130 00000 n
0000002220 00000 n
0000002287 00000 n
0000002878 00000 n
0000000487 00000 n
0000000633 00000 n
0000000780 00000 n
0000000895 00000 n
0000001000 00000 n
0000001205 00000 n
0000001441 00000 n
0000001647 00000 n
0000001853 00000 n
0000002059 00000 n
0000002146 00000 n
0000002460 00000 n
0000002534 00000 n
0000002632 00000 n
0000002743 00000 n
0000002832 00000 n
0000002920 00000 n
0000003852 00000 n
0000004378 00000 n
0000004608 00000 n
0000004836 00000 n
trailer
<<
/ID
[<7ebfeb118c0996a64ce6b35643381699><7ebfeb118c0996a64ce6b35643381699>]
[<75a8219b0a798c01075a0cec99453c43><75a8219b0a798c01075a0cec99453c43>]
% ReportLab generated PDF document -- digest (opensource)
/Info 12 0 R
/Root 11 0 R
/Size 20
/Info 15 0 R
/Root 14 0 R
/Size 26
>>
startxref
4459
6510
%%EOF

View File

@@ -1,12 +1,31 @@
# Anonymous crash reporter
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-20 |
| Last modification date | 2026-05-20 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
---
---
---
---
---

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 7 0 R /F4 9 0 R /F5 10 0 R
/F1 2 0 R /F2 3 0 R /F3 7 0 R /F4 8 0 R /F5 9 0 R
>>
endobj
2 0 obj
@@ -17,17 +17,17 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 11 0 R /Fit ] /Rect [ 45.68504 716.2874 73.25304 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 762.0394 73.25304 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 11 0 R /Fit ] /Rect [ 45.68504 705.2874 76.81304 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 751.0394 76.81304 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 11 0 R /Fit ] /Rect [ 45.68504 694.2874 86.14104 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 740.0394 86.14104 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
@@ -37,27 +37,17 @@ endobj
endobj
8 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R ] /Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
9 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
10 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
11 0 obj
<<
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 21 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -65,89 +55,156 @@ endobj
/Type /Page
>>
endobj
11 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R ] /Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 21 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
12 0 obj
<<
/Outlines 14 0 R /PageMode /UseNone /Pages 18 0 R /Type /Catalog
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 21 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
13 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190926+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190926+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Anonymous crash reporter) /Trapped /False
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 21 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
14 0 obj
<<
/Count 3 /First 15 0 R /Last 17 0 R /Type /Outlines
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 21 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
15 0 obj
<<
/Dest [ 11 0 R /Fit ] /Next 16 0 R /Parent 14 0 R /Title (Android)
/Outlines 17 0 R /PageMode /UseNone /Pages 21 0 R /Type /Catalog
>>
endobj
16 0 obj
<<
/Dest [ 11 0 R /Fit ] /Next 17 0 R /Parent 14 0 R /Prev 15 0 R /Title (Backend)
/Author (Android Cast project) /CreationDate (D:20260616121122+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121122+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Anonymous crash reporter) /Trapped /False
>>
endobj
17 0 obj
<<
/Dest [ 11 0 R /Fit ] /Parent 14 0 R /Prev 16 0 R /Title (Report files)
/Count 3 /First 18 0 R /Last 20 0 R /Type /Outlines
>>
endobj
18 0 obj
<<
/Count 2 /Kids [ 8 0 R 11 0 R ] /Type /Pages
/Dest [ 10 0 R /Fit ] /Next 19 0 R /Parent 17 0 R /Title (Android)
>>
endobj
19 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 479
/Dest [ 10 0 R /Fit ] /Next 20 0 R /Parent 17 0 R /Prev 18 0 R /Title (Backend)
>>
stream
Gatn!6#Y4+*6%CF'^o.c0`Kh3Sa=pe<ZEG@1*;WT86q[lZ%nMuna1>5eql.YQmPIdAA@p<r;6g_%3"E@"jS^VXp?:\2kZ+@Ya8JGfs_jT.l5.dY':.\%-+Y7dXPu#nQ\U2_.97Mah`oK77N)?BB`)Ng)/I#=U:*-/;+iK8.C?34RLl\jpN:/O#@t=e?S;IM!d1>hSiR#2mBLUk')6jqj>B%Lmj]W6r]Z`9fW*C,"e_]6./#f@c5/@-0D6F>$R;Mlh@$pjjf.7/kacu+/o0iTaVUF))7]u83.*T7nNWGV0L4)DQ>F;LTj&bI.)I?9`Rj?rVulf+f0Q[M+75n?cUMe$&-QhniX,@Sb!LWFWk)6ZQ)&`9s]$W!nOnoRWA7?"16I7mKLpMW]Y"\FZ@=nSc)\lHkO;hF*6@CO+$&4*UZ8LU%,X=\&.mZh7;13hc;nO_sM]j-M8e`C6-NhgCQGiEad1@!nRDIXT~>endstream
endobj
20 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1964
/Dest [ 10 0 R /Fit ] /Parent 17 0 R /Prev 19 0 R /Title (Report files)
>>
endobj
21 0 obj
<<
/Count 5 /Kids [ 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R ] /Type /Pages
>>
endobj
22 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 836
>>
stream
Gatm<gMYb8&:N/3$k*i3;hlQ`2bAF<)Q-.<-]7;a0*6qe\WZ0>94gc\d\?cu=Y;!n]L]>*4,H;lls.i[SsbiE3rU&Z^O?U\mK!M6$nqrLbeUG>$Qd$tbsUr4c_r*@>B>P-DLjli1nn2,md#:>(GI_qeVtdT\n7G?eL`Is2-8Cb7g(A[kVu(+%#LjNL>=FhlT9Zi4Ug6#+^u;X&-F'gK#%[i50qAO*Q/rof/sU9(gOqq'0Npi."1QgJO%q+2@sJ0C:5s/kjn=<M>m"kcI?f=.'6#nb/O?3%6:4.nQD0;X0l\PIk-G3bNIadbnbLS9gm9[(@j#S;)IZ90C/M4KXa;C"q'eI@_TqB1L3mdCS.GKQuJGdI@B8Z#RH'=_2hC@bH3L'.G9I'T+]m=eA#9UW1JF,Kb;K4^@]bcV2O"LANU7o]R%3+TA/*Cn32;[j"/ZNZ@k.Vmq4IhJ:YZgd&[^BL*32ehOCsudn:.QrB+=?."eRRV6W2c.N$C(,$V9WT)5QB?dqfoUZ@P,R3ib>'4\O#S\M*b\lpct1ejalViMG=:=kMYLT%7s%.b4!F'%in7'QTBkA6\JMMEdOfRV*JK\VWGJ2IlQ8r6UuC$&ok#W<Jj_#p>Cgb@Vj2<kh5<lj/CeuYb0$6kmuQ_Y6R<WSL3jh#'jmIV9o,#"H>ekF.7n1$MBiFN)t9Vtmbd4D@Tdd*(r2na^hgg;c*,&X@QgbZ2DrH];_"8,CKZFEtN="B-c0aLsC@@lMiDEkukVNF=rV,N?t.af`-^/Un+'m>=Gs*Xk6.m,/pAp:KBIu!8m5D`<iaK]-!H%j)\=bbq+Q4/o;`?UV;F\Zfpdb\.QmD"PO^Qr2rb,OCF7?[SFq9<Y-paX3\q.kC[&CDW!B+kg)8q]2;J;cUC4D?a_V/?IcTVgg0W+nba%an!V.a%6T9OVXcbeuMdg.$9*I2/><1A!"kk4>MXl?u[7&.#j6Z.BfUf%N9NCrd:(M3B-9&ikc2H$5@6Y1%J:fSg-VnPF!=.e7b?4I(L679:&))(d'!f_diiZAbqpkVU*D)'60pj9:n5C`-.(kh`0\>U$`1b=;1'UPs^tSMg,G27E9Y>GmhJe$7UoHPc!$'&>so1s];YTn<!H@3'r-N>)`J+%Q<S-7r],X*-^^Is,?(E.JH'Rs]ai060poMlZeF78.#2,.YG/o/%Bs"uC\@ee0\Z+Edje#0a@r+eLtR5?C2a`_Y'&TN#Uh,!Anr@RFTGS`.*A.@Hq`K\42]P*URLnY&KIf3Un:\87>ag:mju\)L%;f.jmMG8hpuXhY;lms!:]Mt&SMDqi2l9"U)3"[2Z@ObAuG39js&Wa5\WP>C5aZJ;?F-3fORd5iGN-7R.8mcOBEmEHM=djFc0>4(EC[aeMnU5;Em_CnE(4qII8YXl!tNT&@<%sQW/*1UNrY[<IP*L9i%e$EJpqhD%S:XHEdE+_.F%F$Lq:R.3V,H:\!Buh/Ag9<,Vc]4k5M.rHPR3P4GLS219)-M\f&]\bN#TXn!`#oQ&`OSb#.c-gjq-/^68rJL+WjAAt=`$L9@sZ>Q4AfK*UiDYYJK1j@<DAa1OX_[!Ob.eo6VO47](6ij2l[d2WqZ826KenkgUE2H1_,,:L-jFJjVW#!Y-Y33qc6[9':h+o9m"^c9c^9Wf=0J8+abr&jo42pMDo[JA+B7rh=?W)lD5)0Ddh`Mnf/LonY[nAchR76V[\Juf`oqjn,DMoH`XZ2-%7I^I#?jr>gW6&lNaWdB=U0^FuB'%[t&t:$[@3q(@XmI&2I-C8VOd39&]M>*\q#<1ck3XP[ug9JN?Z!](qV8QW_D(+D[(=R]ATAZWh=OND$e@>VE07D3pn@a&A^R`gOW9%u8Zi_eoCiMjq%e_sQ%PH..hL?ThX[;LVV7UTSMF3qbGG0R0<b>4:3u\lNt43TY=t=t\A8.3/.YM*)P^F>?cN3N*3']QlZ_HM`BPIk6t@/H~>endstream
Gat=*gQ'uA&:N^lk)lg"fAlXh4OPh9W^:G:U:sY?QmF8Gcm3GHhq&>WE[cYE7:=*+F6<7B*#jHt#E/U^"Rt*"a(GNci,8TUiS`$jk)]M#n0=)(,$dJp.&@2l4Do+MQr',0_?&Y@Ot%9('$TAAl0HE0i]2u"5;FZ)TWfj^ZO'H1;WaEfIgtFPSA`Gr3Fo?dK5:pphC!$?dneo:Jc>_6B"X9#@\-4*,na'H'GN]ecu.SN*?n6&dAf&^:tm^[nT1-en?eQ8^\qK_If<IEZNZ3:V5b"C64r@[6:O+']#I"qK4O=2hW\Qe@?*%c*b!-cFi(WjRg6iFT/)/K9/34bjNqd;'YVcXh*\8]o?)E)q/'I$/gIrQM`nqm/S]q:^HkPkF';1>FLCFmQ!9o[0(2bCU#'(Y,SWd/7<oF8Y@)S$/`o+JQ?gMMW7rO?ee:dhq)1fkbiK?"3)="NDLsjhNr!^CkCM7*VZul^^P>sZ`4(HX_2TI5eR0>f;B=gf.]e98]sJUJ%SskgP7oDmN-=ENK5Ht\=Un<7%QE?]a9761l88T+h"YCm'\0=4lrBb5hg5jYi0c.h]2$9AGWXf%mRXP!6e('+%X)NRpKGu'`*j)O1jMf<Q?<HSCr)HKFbk.06[mhbcoma\f;ib)WdT)Bqn)[;NJPal(ZmX(C):7%Ka%IIchs_&PO.TFQGjE;&(!d)XTd9BXq98J6[abjAG0J/+/0LmCOj&)UDa\D+_1Zu.g0c5G_L)T#cFQ#.B>iZ=/XTS\FW?Rf9^9^1l7AdFKsW/6ubU@U#!/;9omAVF0emU_GLGAoAO84#Xl/3:lZ,/5r8oL7fNIUic[Z~>endstream
endobj
23 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 427
>>
stream
Gatn"_,%p%'ZTV>(#KTdPeM<H2fG?#%jp<"dDX7+A264$LA^q76&5RI@`V4=P4nSI^@.mEE$*T4fb,,=oL8rr0JcP@!gk>D:$8QEqoV1/0N(#`es^Rr#QC;ZAip](8MD$;>Xr1*M)ZVW+!'7&%N+1Z9@"/rL(IQUf;.kh76*_9]#M=Y^4H*5\_XPuI%95Pr#^<s_\8cq+gpsVRoX)a]mq!=f4#6<Cgl-G9Gq,oRFkMB243KZ]k"oV0W@'L_<21/Z"RM&PpoIJ83"mBb*^msPL-Ei^>8;D-KVh]llGMXroET$)31=&1JHGAMH:rXC7@)+ktpGY;.EO*$fhfXLCq7A]<P@qAtCoZf;mJ5mb^n'dK6Dkk%.Q!'>mKK6or8+h?cBi/nX)A'E#/0Uh1>:q$Y.U;:Je7$M:"jE7"C]VFSRS~>endstream
endobj
24 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9"kTAhM``PkDdF-fp`Q&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:emFgZ@onCPq82Ws8G-_Tt6^R9oWtig34W3;D"0MP=sG_Q,?.RGJoD!mbh^0(JJ'S*<~>endstream
endobj
25 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`SgmmFhnNfa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#B](9((,pZH62[FH7Fl==&J^W3%Z>&B5W+giG*2MH_7OtUjbJt$1U9Q2!n~>endstream
endobj
26 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2014
>>
stream
Gatm<D/\/e&H;*)E<n86ku(Z[hJDXZ\u'8$VG36gqdMfu,hc9G;(<kPabKcg*C\YdojU#!P.%O3j1RR!I-tYL-N91nh]MrEG71/V":0_93=srLiV!Xag^\cC81eO;L-'QP)n_#C:t,,Whr&jjJ7ViS8bNFWL1<5e^VJJX4OY;=&[78"lg?J^VM8dsVdI4o2Zc2K(d?Uq63u?n5cK?CoRU&ho4leY\U`YL#\=p.Vf6tn[r2sQhg9/^OA;,OKUH"uUWa9JI=A0B+7IpO&^Q*PMXmKF*+#pA5UOs1kP;JkX#CO?Z=paor`ugWH-NZp(0hc?a9rd(Zf18X\Sjs:#>@6G.0<O&Q3DYJ.gGo+i)pYg!bT?#jTVFmU+ka!j4!@:D9UC"emSu"e8]^*YEog#BA_iKbk"])4S34H@QqrE#U?UQh`g#Fj^f;*+$V)DSf@EL.U%iCF-^d\^lf+.h?4rkOO/FU:"SO\W<)0J&Zn#l_:?Cp=cifM*9M7/0DQs@_hY0m2GGa^oT$o$+ZVn';`LbH5A<1TYiGjfQGl_:mUC&RXrS;h;.&]%lP5\+?&BgmY_#ggr39oM%ps>P"?I>1M'+E<hEk1V-%;tlSWA%Gq*LsT#_=FDUZ1O><L4!#7fEUsjp`VL&?Boc,aBLV$EteDfHb6JB>=\7;;1`O@7!tF?e]9%Y?FJ)1Ar,NG$uDR?B>*#l2?e\_32tXEC7G&L<ER21rI*IBPs8>`VlHRFcm"OK<XAQ('U;qmN_X=)JOn'3RoUR15f)m92-mY@HX$OcSsaq_He'DD%?:!mjNN%Ue)mF3?HI@cS5+tcV[rOMBVPb]Ru*JNleCr]3C2frE$9'f?0"=3RtdQ9[gb8TO$r]G_kigrn?-B`[hOffu1f#+JSuE5Xh83O`h[J;n%KqeBmb*e?u#A#O/(`']o*:@B^rK13!_o%d@o,YJTm$N]n3B@M-(8]rA%I6HL9Fm.COn[W]P')i@TW-#&c7KcJ%q,!SUik?2sSq4()1n5(&a.e5NUI%>j!7;!2&3@eV+f]"kKZ:Wq-F;Ws1*08ee'W"XhC_\\Tkh]o,=s:F8b=;7)]o7J9S[\=_7r7^N[a%XGLLYJHc6h+L'Y:8;=AeSWMFf^.LU@MA4jbZ+IpD[(\[%$jY1rmhrn3A>^^2n=D"8a`4t1$a:X6Bb2)4p'N7Id1.'e4])U6OI7jF:W&Rm\.HGHU#'(Yi]%gkH6@Jh[77TtM./[Ja5))`c.ZT4%m^6[I<6A.L,Y#se@PO+/Pm*W#9':1;^=o3CJiD+d"iON"hm-`fm]bYkOjSb)BIrTJHjR$&o8*RI%\=g#h?7Eb6;]Kp7'm20[o;b[9hQkq66S:lQg<h5jl6`LQqtf=MrT2!18(40W(0]PU8_;MGA>1TBL1O2@n6uuda3cZ]VDa-(?U%ef)bG:5IH%m\a_NH6KOmZkG5VkI3PRo,)SdBPW'.Tc*'I8%qMqBKH`nT:XD,S\bq2#33Mr*PJRM8Xdi3qu3HS^DPp1e6X9gpI0dr_J]Z%EVh(%9S9(cDHi(Ac\;5pmqq,qW&\UAe)gH="o'AC%?><qr7PHLcd_*jWQi^bMEiLq#E>gn+\l3gl,%Fs51<?^u>ZgM%E/WuZ4lCh%`@Prl[NpA)Dp9k]Agsi.&ktohVNb)\-DYdD#22(FpZ/"^$>OeSNF"H0SlWaAf<4t,_oe!6`7%OLU-N<W@p)3ne%u`79Ckk:IoD4LKZH'lZYU%P+NDD:a<"%j^HZSAXq(0!$dB*VF[MJAYH3"Q'ecJ&""\L-\-`(eR:b2J#b<qS.9I>,#R^.d^&SMg-TpoD3GF:r`%eCI8lFGWh3P4;UgU`&RcLmqZe+O(tE]bVYi.=TAqJ\tWI,#JgrM2TG[bU;`T==dOqpiS%Ut&OH/FNDtTP%X/$\Nf7@a2VMC2298SjP\s]]3JWP/<@MON:]F`<S1V=+cCK_-8akCq!3XZO-/,BRW/:D7($m^*_X;3d%[DaV^KfN[>5Zj(\o<3XCnT@g<5<!L!JO$i~>endstream
endobj
xref
0 21
0 27
0000000000 65535 f
0000000061 00000 n
0000000133 00000 n
0000000240 00000 n
0000000352 00000 n
0000000500 00000 n
0000000648 00000 n
0000000796 00000 n
0000000911 00000 n
0000001146 00000 n
0000001251 00000 n
0000001329 00000 n
0000001535 00000 n
0000001622 00000 n
0000001921 00000 n
0000001995 00000 n
0000002084 00000 n
0000002186 00000 n
0000002280 00000 n
0000002347 00000 n
0000002917 00000 n
0000000132 00000 n
0000000239 00000 n
0000000351 00000 n
0000000499 00000 n
0000000647 00000 n
0000000795 00000 n
0000000910 00000 n
0000001015 00000 n
0000001092 00000 n
0000001298 00000 n
0000001534 00000 n
0000001740 00000 n
0000001946 00000 n
0000002152 00000 n
0000002239 00000 n
0000002538 00000 n
0000002612 00000 n
0000002701 00000 n
0000002803 00000 n
0000002897 00000 n
0000002986 00000 n
0000003913 00000 n
0000004431 00000 n
0000004661 00000 n
0000004889 00000 n
trailer
<<
/ID
[<fb883105861ad656bbbce6ba3242676b><fb883105861ad656bbbce6ba3242676b>]
[<bd4acbd898c52ce55620c92c6ac9a846><bd4acbd898c52ce55620c92c6ac9a846>]
% ReportLab generated PDF document -- digest (opensource)
/Info 13 0 R
/Root 12 0 R
/Size 21
/Info 16 0 R
/Root 15 0 R
/Size 27
>>
startxref
4973
6995
%%EOF

View File

@@ -1,5 +1,24 @@
# URL shortener service — design review (DR)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-11 |
| Last modification date | 2026-06-11 |
| Co-authored | |
| Severity | medium |
| State | pending review |
| Document type | DR |
<!-- doc-meta:end -->
\newpage
\newpage
---
**Document type:** DR (Design Review)
**Source draft:** [docs/drafts/20100611_3_url_shortener.txt](../drafts/20100611_3_url_shortener.txt)
**Specification:** [docs/specs/20100611_3_url_shortener.md](../specs/20100611_3_url_shortener.md)
@@ -15,6 +34,17 @@
---
---
---
---
---
---
## Table of contents

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,24 @@
# Platform scaling and multi-environment architecture — design review (DR)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-12 |
| Last modification date | 2026-06-12 |
| Co-authored | |
| Severity | medium |
| State | pending review |
| Document type | DR |
<!-- doc-meta:end -->
\newpage
\newpage
---
**Document type:** DR (Design Review)
**Source draft:** [docs/drafts/20100612_1_scaling.txt](../drafts/20100612_1_scaling.txt)
**Specification:** [docs/specs/20100612_1_scaling.md](../specs/20100612_1_scaling.md)
@@ -16,6 +35,19 @@
---
---
**Documentation index:** [README.md](../README.md)
---
---
---
---
## Table of contents
@@ -30,11 +62,21 @@
- [3.4 Comparison matrix](#34-comparison-matrix)
- [4. DR decision — recommended path](#4-dr-decision-recommended-path)
- [5. Current vs target diagrams](#5-current-vs-target-diagrams)
- [Today (single BE)](#today-single-be)
- [Target phase B (minimal split + HA web)](#target-phase-b-minimal-split-ha-web)
- [6. Service split rationale](#6-service-split-rationale)
- [7. Environment promotion model](#7-environment-promotion-model)
- [8. RSSH and connection capacity](#8-rssh-and-connection-capacity)
- [Assumptions](#assumptions)
- [Estimates](#estimates)
- [8b. Network bandwidth (DR)](#8b-network-bandwidth-dr)
- [Baseline risk (today)](#baseline-risk-today)
- [DR sizing decisions](#dr-sizing-decisions)
- [Planning numbers (single-site prod, until CDN)](#planning-numbers-single-site-prod-until-cdn)
- [8c. Global availability and GEO segments (DR)](#8c-global-availability-and-geo-segments-dr)
- [Policy model (DR decision)](#policy-model-dr-decision)
- [Phasing](#phasing)
- [Example use cases](#example-use-cases)
- [9. Future capabilities — priority weighting](#9-future-capabilities-priority-weighting)
- [10. Simulation lab design](#10-simulation-lab-design)
- [11. Cloud provider notes (GCP / Azure)](#11-cloud-provider-notes-gcp-azure)
@@ -46,9 +88,10 @@
- [17. Remaining open items (PO)](#17-remaining-open-items-po)
- [18. Suggestions (PO / dev discretion)](#18-suggestions-po-dev-discretion)
- [19. Changelog](#19-changelog)
- [Related docs](#related-docs)
<!-- /toc -->
**Documentation index:** [README.md](../README.md)
**Documentation index:** [README.md](README.md)
---

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,24 @@
# Android Cast — Git flow (green `master`)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-23 |
| Last modification date | 2026-05-23 |
| Co-authored | |
| Severity | medium |
| State | completed |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
This document defines how we develop, integrate, release, and hotfix. **Cursor agents and humans follow the same rules.**
| Field | Value |
@@ -21,6 +40,17 @@ This document defines how we develop, integrate, release, and hotfix. **Cursor a
---
---
---
---
---
---
## Table of contents

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,24 @@
# Android Cast — Graph Visualization Pivot
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-02 |
| Last modification date | 2026-06-02 |
| Co-authored | |
| Severity | medium |
| State | pending review |
| Document type | DR |
<!-- doc-meta:end -->
\newpage
\newpage
---
_Date: 2026-06-02_
---
@@ -10,6 +29,17 @@ _Date: 2026-06-02_
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 15 0 R /F4 17 0 R /F5 19 0 R
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
@@ -17,254 +17,77 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 716.2874 129.725 727.2874 ] /Subtype /Link /Type /Annot
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 705.2874 115.477 716.2874 ] /Subtype /Link /Type /Annot
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 694.2874 112.821 705.2874 ] /Subtype /Link /Type /Annot
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 683.2874 176.853 694.2874 ] /Subtype /Link /Type /Annot
/Author (Android Cast project) /CreationDate (D:20260616121134+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121134+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Grafana vs Others GraphVis Pivot) /Trapped /False
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 59.68504 672.8499 100.53 682.8499 ] /Subtype /Link /Type /Annot
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 59.68504 662.8499 122.2125 672.8499 ] /Subtype /Link /Type /Annot
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2826
>>
stream
Gat=-gK3,h'7]2KR)a:TN[8%2Sl26;rOs$qcoq9A3B`8%,[)2B[@@6ofC)7j0?Mqnj\Qk[O_7.)rJaLd`#k`R&!d3fSm_2Y!28m="(E3-4FMpQVmB`CA@'bT%$OjI"jciNa)Z!D%`sIi;p2G]Yf<j1q-\FW*SU_&q&/`KPo+&A6kL,hY=)3e"LuBh4HF_XIgTU<M8LkV+^?ai__\,1I*#L%J3S`mYt4f1Efn:Z0@i_o!M9:FVr-EARg!R)*IleM[dBsCN_.5CJ_eXXXdqdo!oq-M9'O0%OJMe!I%>YsLNA:7,(>.n$XS&t%O"RiA3#9]PsurG1epK^,8'MjA4a]mVG-Ol=NmN6>QiJ'cdJT$jVbMoqb$\H#1kS+D;PA\>1J@6T>^"T4GW=XL@:<\>i9P?@J1Wq<Bls9A#F1%U&!BGqmh!nF8,6J]G('Dra*>6D;Q*LhK7dHqOcD`@6?/9BBjDY_gn&h>;.0\$pG%?Kq5q&e1jY;+fB;YP=7"9_n#Sf*KY,.n]_.=OtD7:/Dl`EEfq(Q;j4d/-N9d2ls6[o8+XDdigddFqfP)R2bR(`bfmOT,K])8i1Fmp&uCu0n2r+^r>a6SH8/'Zpt%Hj$$Q:3q*WI/D0j>*AY(Ug+)o45f\\"eA6>7;T"^5,\\aO'4t>k4Y*Ne?haIJ#F"1oF/bX(IVlKnpF9:cD*XJa&m?0,dO/d3DYen7\6ElVuZ@r,4n$+Xk`AD"+./UZ"Ztt\PQS<]E5piW`3$=EF(D/!F*.<+"I%K+gI]heY,[^%7rg^%g\/+XJWg]ZeCo^)+_r&5T%%hi(MVe;Zpk$a%?E;)MXQufg7e!?JAs6V?I;Ll#2R[]]_T(#si2S&1o4S\S<>)NI1^LT@$.p"3"C.2p>W&@=2ZuIeL&%!SeY6%2HWTf]M.JX\(#!B9eHX&5<u\`@l<!JqY2R]W(i])dK2jPT*9:kFA6F,r<Ust@.Bam!H$^HB'gP1i3`CkcFb7Fcn[p>3KS6a@dtg@(8+.R4+E@`i%)5h*HS8#2KHfGBNZ4Pp8Z&)0Qt_O%^OOdAV[31_&+D(>"^p.!5n4Et-<K;3#"pMI,+^%C$/tFEDBudBaZ@[7La@1M?m*-_C\Yqd,8F&S3Ns7h`EL>;hDM$rE\('mQA')+T&dZu#"6Q`cQEnl78'93&`6IC8i<"]F=T3JLM$pNR:Qe/(^_Q\mV;Hg,VKbp+bWKk^A%t[K6FB*ojI<m::9o+oY@-8ZdY1q6=o.%7W92Y$a'Y_Q$C@r=,'XdMQua4d??QJQY9-[jb80&+Y1gf@8f)IEX57:P[tFf#rSn+*+<3pZh'G]`g:M@I<GVKZn\@^e$V5HhR8ti_f7D,%Cjm@C?K#]aX$;W`[/EsR*E%OI/ql77BbHrd:n24LE;1<M.sF^[1.+in!:X`PdlM,XDPmX=L?P9A'=@)gS?4e^<_u1G"DuMK4?ab.@_-oJIt"PDK\[W>goo.dlU.<UJ>]XE>IoXNl(lTZ$HQeX0#fs.JQ"R$<`Y%]i_O_'^6\Ylo(9(e_D,qY[1_K%j=Xk+W%f."G=+RUTn(.Li<"2'[4H);!ghWbbIQ'D>JYf>#(Q=O%%_DWSXjZchVCCAGKeBPbSuE.g2]KDCr-[@DrHmj//Jh*`7#/_<#6.Yd(-!SukGs+]#,/33[%D1JSs$VtbQN@]q4$^6)`[NcjND'*YhL)#RQG4G:E>K%FelFrdaN#'aIrf&OpP?upXf9=l]m$OD92?$GJ;UK=0ie%tI[l/FZi7EJd;'q#4+5(Ia8*GR$4+`e5\c=9mN4G0&XOGY3c59*ttpiQ=tW7%38;)/VO+^`-&P.^i"fhTP'1?l*c/bnj;)3T+f.N!c9+QqQ>!`b2Mia*VW@f?_f.aH#=Q5fBo6'4.B*9\?lH6(cnnb3sAB^gWqXcUjP's)W!kpR&MOhsd,0b&>+/B>luYc^\<=4tQn>YDNZhE\uL9>jQ;!`KAK.WPisp.*R\p:B?*X$A(D+At?j@s*qO09(9X.M]44T'_T&;mc=SWO0U"($MVn1eQU)@lL!g7`c5EU:3"nWT@Oj@^WIN5\r,P^oU+Jl:FgGY9qAma%F9Qbor3e#emd)7O>3@eD_mMKuXqA>1@Z;YmXneHF50cSKfAuSI2cJTk@!BP("Bq[L@DZYE8GLO!=WkSEGH.c-a4MIqpLloN:Elm_?ZkAuFd?3,Ohu*c.R+>o5LB;?HmAfJ;4V*eC35?8K'b7V1RS)u<OK8$GbJI&1#l!Oklb.iQ@%p.7SghO&%J7CV!9EB*=XHco4N/_(Bb;qEM:S\Y"q?*5=t`(:dF_H)X%99tt*!&Jr7<bsFcf97;Q,XflB3KELZRDMr)=c9Jf-a'.B@hc6C\lm.?L,biFk>:372:(okLW'2=h1XQHE3.SRNs[PH&:r>[o:NgI&k1OPoh-epLBV<f^=[@NX8fW7'q.huKe>kE6d&rR7jse!';d;j?U^p]QkX#Y`[B`d$]!ANA^7$K[_BJ=JlJ[Qqg3.hUV!GGW45*<r\0#[Vu+_U/M^s[Y3q#_5Ts()<VqZU&V'L_.rn14DP%F3aUr):&,"Q],-GluQP\@go-g"N+umVNN<G`.W:*p)nli6G3_#2>$QGF_Z^-W;;3=!djh2hu)>Xc=n'+fK4^S0'c58rD0+t0@^]8`?3W*kK7mb@`b.g&1;?(pM8N"J"L5t4qR^KmT3<I^WD(J#u"$oYhYliK4(od5=Kj7/sn%D0[C4`k4bpo-,mNsCt\Q[M"-maQP25DZ;-+sttppT.lQ<1b/2E[H?c\:3$\o[*0pg_4t[#RV+3#2^\O1_E$3/%&FljjA\@/Df(SG`h+_:fb~>endstream
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 59.68504 652.8499 135.1275 662.8499 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 642.2874 130.157 653.2874 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 631.2874 189.741 642.2874 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 620.2874 159.501 631.2874 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 609.2874 98.59704 620.2874 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
16 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R ] /Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 35 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
17 0 obj
<<
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
18 0 obj
<<
/Contents 37 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 35 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
19 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
20 0 obj
<<
/Contents 38 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 35 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
21 0 obj
<<
/Outlines 23 0 R /PageMode /UseNone /Pages 35 0 R /Type /Catalog
>>
endobj
22 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190936+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190936+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 Graph Visualization Pivot) /Trapped /False
>>
endobj
23 0 obj
<<
/Count 12 /First 24 0 R /Last 34 0 R /Type /Outlines
>>
endobj
24 0 obj
<<
/Dest [ 18 0 R /Fit ] /Next 25 0 R /Parent 23 0 R /Title (Context and constraints)
>>
endobj
25 0 obj
<<
/Dest [ 18 0 R /Fit ] /Next 26 0 R /Parent 23 0 R /Prev 24 0 R /Title (Executive summary)
>>
endobj
26 0 obj
<<
/Dest [ 18 0 R /Fit ] /Next 27 0 R /Parent 23 0 R /Prev 25 0 R /Title (Option comparison)
>>
endobj
27 0 obj
<<
/Count 3 /Dest [ 18 0 R /Fit ] /First 28 0 R /Last 30 0 R /Next 31 0 R /Parent 23 0 R
/Prev 26 0 R /Title (Role-based graph packs \(suggested\))
>>
endobj
28 0 obj
<<
/Dest [ 18 0 R /Fit ] /Next 29 0 R /Parent 27 0 R /Title (User graphs)
>>
endobj
29 0 obj
<<
/Dest [ 18 0 R /Fit ] /Next 30 0 R /Parent 27 0 R /Prev 28 0 R /Title (Slug admin graphs)
>>
endobj
30 0 obj
<<
/Dest [ 18 0 R /Fit ] /Parent 27 0 R /Prev 29 0 R /Title (Platform admin graphs)
>>
endobj
31 0 obj
<<
/Dest [ 18 0 R /Fit ] /Next 32 0 R /Parent 23 0 R /Prev 27 0 R /Title (Estimates \(engineering\))
>>
endobj
32 0 obj
<<
/Dest [ 18 0 R /Fit ] /Next 33 0 R /Parent 23 0 R /Prev 31 0 R /Title (Recommendation under your constraints)
>>
endobj
33 0 obj
<<
/Dest [ 20 0 R /Fit ] /Next 34 0 R /Parent 23 0 R /Prev 32 0 R /Title (Implementation slice \(proposed\))
>>
endobj
34 0 obj
<<
/Dest [ 20 0 R /Fit ] /Parent 23 0 R /Prev 33 0 R /Title (Source linkage)
>>
endobj
35 0 obj
<<
/Count 3 /Kids [ 16 0 R 18 0 R 20 0 R ] /Type /Pages
>>
endobj
36 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 737
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1842
>>
stream
Gatn$?Z2Df'ZJu$.IL\,WLdu+mk*joC/VHN/_a4"a9@?D!LqahD>3:-TM;mDgIR$[5_<dsO2JNB"L'sYGKq[gpF3bG'-J";2%Ul*OC#h93r(KR:R-BZ_Do=p6rAWAQhYHhH]2o;]taa2,pA:X5Z'c[T7AO@m[[lA'1#e^#mqqk,q*U6#c=c]Xi?Ib0V-<j/!7^Q1DZ:@7W>2,]n(+=1oqBUR2&?26L9q"KCh7$DrCQ>=#f1mmPmZV&equT#FHb[J]$ds[>0@*S$X9qSAFTPCREDTWo3/S2P5DdX`e<Qm"T;^.U(]"0WVd=6rj61q%'\P68X]`Yi>m.fbY(kS)D!=oYp<6b3hk3C(6SoQ:kut!4k.[Y4"ON(3dKT:Apn%IB^Lth?"OpR2Eqo]s/D,+*c@=Z/]5\Wabhps6=#Za&;qBG8\\*<AQ4cOos4ofDPZDl8Pa(kBG/>*4hq4c*FI&jjZ+U_2[RPnn\;&F?1!'Jc=4n.-S:BU\\`8mWf!^+UlC+^FboV=C):o*$H.8@8Sel<k:=,_oJPFKX%7\QFB`LZ4N1?/S$Ra$oAhRS_UVA`F[opo8Ut"/fn#f:YRBd&s#KRZ)UIbLhojt8s+++;6<j#beRi,d9&67c3gIV$Fs^O+!OF@1P>UJZ31J"jJh&P1XS:OM*9b.+_.dLmY5AFYO*,D\6!ta0)ph?F4^eJmhUN20^JGs\lROrB9m>T8iJr>NRA"O=9+Ol^LS5"~>endstream
endobj
37 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2947
>>
stream
Gatm>>C4gY'>Eq=R*2c]Nob?)<IqH[+0Ypc?#N\H8ORtnP#Lr?^QBKtDOQ3Km*f6D7EWhfNphp$^r@I*rf&^a[o4,n+@$p6c@C/*#Lh"<42(E;6.RDHh[1Rbp)o;<bBG<TILin>h^4P;_"M\$^He6`A`HrX9J^5=6>1VrqLd+5q49'Z%?BfY,9-Z(?GZ7M9`NPb^Z!L6!IQE)]hf*@kC@&2ThQ":YV"W&^&82QcuNqa3cMm@g`SSl+sa*5ipT+i:>,fbTBh@GXX_B=qAFd%b^*lED:C(@^+46Cr[=Fb!ca>q,q.*)m%HG[a*Ta-)hMAXkQ"@f.0@mQ9APdcKHH)kO4TK`S7a\?;XkSfhgDte-a"5Hc[#KpY+T$aUKO#D?XKbio_i!pLN)I#3u,&`W=btlD5.ahg_\I-7jHVn\7ubIe!G=\#uq\&W_@\3'ef.J/^c.pa\n_:p$jp09=WU2LddGe*iNTUhHG_%n9b_"J<C8.VCVnM$Gkg%X$1a7]lOYPQ(]=p8D.[mR@ka1i([,A"e)U@)"JRpa[C2kDjuF?#L@>ADLkK^3R@n'Hcih@Pc@k0ZC4)j>m-kMdD_aY\Ga>)9(=20=_/HcWug'on6GG9Ei-STSY=Vc93?62OM:3*4p.r1VE+RWQrl5>!!sGm<p@cF0?[4,0a#C8R]E\O/3FVHT&=$(6.-WD=+.I?KtFa<o)7EFkh$d.ID!IjOc,!HMF7L\bQoKp1P"I%!NYU7j+W"aC,)#J8dmEc$sh<:('Bc@WqJ7e(F=f6T=_YM\[MC\iZcQJSm_'7Z4mJ%(GF4S@eCjgZ?;^%ni=Os;>m*20`M.'mS`*mU47Rf$lRM$P<,UM8jgi<H-H+U7/W(b:.t3e?:%oo^t[VH$d?,BWfI_bg"#438YCnrbV/1&7?2qOO];Vu?oVH.pU<*MclEjj$^9%^8B**RIBnqV\u0/6InRZf*=GL@QUSWT>7f=I]Or\>Z6RE_?*N*U@##=rU$kZ;".aK1g*B'8-^I,i!(OoG."^,Z85fJhO$m=;LeH;h/47^8mGI4_+ibU1H:A_>]K(S%XWn$$3bo_u]Kh?,7)=>A,PBdKCB>/Zm95j''hCl/7B!a1.,Tkj5;I7a`sV1k'T!ET8Jo?h/g'i:G;1Up2Ibe,oF9.KNkQ7//c&`s3cOd3,'819-!drR[,#)t&U+3>\6T1)&>M:L[Q&].;F+G.L0S+aNYbYCq&3+1cI.I)-"_#)P)<hSJYl*hX;Aooko[u+G\MM[/2t.F]gsAaL8@SW1$,DMBuX)q6Q-%R>fOG+\.Ji(GD5<ShI(eAmEr#^`KH'(f*/m=U-ueofPtgi6(=5jAXb/<Pq/H2)S[K3D'`rX4CD(2%aInKks0s'\d(4_1![Tsm^1DD>%9a<(%dm#5Xl4&GeG^8m7jirBi>@l`TU;._`r:i@eu?.CUHYiU%l-%%9L^hD?$6#`l>JbL*]KN&j_=WHe*1,(s__g!BGLA4Wn10#!I6j@.Jii#oUnKUVTRd@:FkjqBUrN(HRX*2#8r2.)AYqWT!IabUQVL9t8GGp4km%PcOc]5\nX'Ep1M92U8c@bZZ/J8`@1%LMQi]h0*:2aB6;6QN.)J`uU]L_>f!j=HO8C5(W+YhuCDUPkEPAN,2G[EJ;K_CtRRim:RNqRrb,6]?)2bk\T1Wfg$P*ft^UoJUjN%JZF*L&?g7#c)G!US/c0>>?5[OMg!kJ]NXQG]3VMI^[4CD?8/Y$^th3[o%^H40G$Esf0+LE=29Dd0!OueNtN[0<qA>hU3A#W2?FG6T)d9M22W:Y-Mi@t#XA!X^bG434S!=CE`u3c_>0]`a&Z;T6EGtUYT.+ZYqem]cLoORQX)VSpYjTuIR=i/RWMMJ>+`'iA*8Pk-E5S(s'_`m)a?(NfLLU6Eis;e#ae8QWGluWP=)1^53#=*r2=)3N!,mZm>L9G?7K6tQI9k:.5T9&7j:/Y>;'OoR.$"KM09O2:h^=1iU2"4mK6tZa(?7@2aUci5$.cn]!SGjL6j]IONPf<;N2Y-!RKpG-^aN>m2$\*p<`n$4)/\C"1uqT,t2af5IFHbR*$I:30X@f67KL_"3m#WSu@?_c9)tSbUi3i+kQm[N5GdiGb,UF]qgP2%ba]=#"G&5/1Ng$.lk4r]9Jaeh]joXoC)=k`/T>hIA@4r%cX\@]<OhTUU=3hUiT3ZLe=+K#!ug2'A%>_^*_HVVN5u9GC$s5HT!,:*ES7kc8F*p>]jZ7lfa3p+m$dm^?"X[O"/qk_u6.!f_sBd:pXKKeC]G&JMMkd@injDZbtS>!_Qisl23k0H$9ZUGp3U6q_r_kE&C!G1/VKsgh.,\fOm^hO_pnO&bZ2cXq4r)C7gLoluQ_9m"nAlfKuA'8"DI+7%Y_i->+]WBi.3^$g^OY;ZL=J2E>MgK,M;@H+cfs$,V*Zlf_gjlu"W?VR\J<L,1Wa2uk1m_'H:V%auYTaab?O9R>*h,=_s%Y()](\V!K2*]f%FC4A;$eda)*WIB6Cp9QpE>(_*JU]PoC6US2g(Hk&?"dZld-^/Fml=@2k9-1RbE$jEieEr)^h*%XT_s.&nkW&Ol.)Y:F7MsCj)'#-[*M2e<SctZJk1cl0aT)t_VsfXt!@AXY5O*$9_%Wd?bcP,X0c:R5$FO8%'^"Ar-5`4K3GtDH'<#;,liH5dcJY]AJlp*_b8hL(T0?'rp4s]Iq#5n&/;p(('s;ildb8cS#AG26=Aq:#\8!q+DK[pWFj_D7jg9Areo'ptUoh-#%ako"9sE=VHO"9;Mg<Qus5:#b)[(e]nJlh6]bgB(\S>KeLc(V@f2-M#R;ds3f(7u!*='0O4On]E%HI\'oN-SL4^P@O,3X7a>kLDEIb;?`Yj#OO<j0P@<Lt>3?"#rVm#<[Eg$!iWK&^cE&.AKX=LnC!KLA)!EGjT;(,NnaQ!1hFq^$1Rh)pEYdE>PeZIMT)$lApKE;-r$~>endstream
endobj
38 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 860
>>
stream
GatUqh/;4+&;BTM'QZjT,2b]lh)jiXY#Mg9bp<uXZ'0F%`*(iGo(G.gJ6%JDdoMc"(ruVfc8cAc4q?R9irWU,61:6BnKCMT%)!fP[r<(Qr&l4XQ,CBVNJ%3A_XZ7d#3S@$%faNRaaPo#$QppLo^2CTgMq$gm(8rhkkH2mCQUD4L$0%"n='TPVh\J)\5=I$YS)>cHa,,]U9W,#Q.rE%O9h\Bk@UJ2QLP!r1!Xb)otSX0nDJLfjh0NJ3Fn+bD.E[R?Sc(hB1kf24&-*=<05[1dF*!ZJCZ%L=u%eE`$pM=;EQi`f=F[BU[V"<GH=:bgOnibljQ%E0EsIn-FBS1;o9?k1>dUQJ-h,7QW#kra6DXd$<gH(9L5<i1`$R%1KY$KakBYIcFaFhJQ0b!akEs0K(hr+LaDcn7L@uNIOiBD#ASoC60BHS0^ht5<`3us5AbDO:Yo44PFWp>>k1:IHuDh.@Z*S'#5_u&lPp;U%4IWcd'9Z'+mJi:OH#j([V:gdmi/7;H9k=]a>d13af08pm@5+\kZhgi_&$;+.cuM84bL@[[PO`F1L6[V1`DeF9Og)-I$`K;g==[@J%arrh(;K>FQjZX?Dh)O$;nMa%P!ofh3:K504^`$NpKYHfKhH0httgrr*.!P==_T0k.Q9L<:O5?V9!LI)IS==.kI?+7/Y7<jJ%%1[!m5g$/4nHl^\JI\?DEJoDMrK]>"=nGepjar[cGNI.*s2.,7VDN33a@B8`MhrWc?[/*u*Wk9RtgA9b-i<'<%J0%&OC=I_&_#L8!r9:Ojo$J#(-!m11t=8tn`TBJ>3K:"D3le]nHjEbi*=fh6^,+R)><7*1"$,*:U8fFmBaT3BOqu]DT!Ik~>endstream
Gatm<bBDVu&Dd46B'I5W7?@WocH;2)Bq(\RNgAP;,U=Vn6Nob9lIU4[MA2mXU;Zd#fK.B0G6W8GQocYQi"%PlP8rM($Bs?Q&/V3"+MR6\oJ:l^?Mo4;eiRSZ40BC0&-e7k4mM'KBQf>;c7]`[FJ'4>Es-Rs8cuZ-L:d(ppb82&;?8:G8BOO*YE[+rip_'3Mn(5qQ_Kj3]m0_/mkB0j6hlO'RkOnYP;n@H"<m/d@69V;;%IIr%\,3S4/?c\'-12KisEO4Hom3V$l8h7%^WX#WINK'JnX$WgVEWhqmh0sNsBYfVmcgG4'N-`0#WKgpD;B_#i/uY].MD>!&6T3,ti\,A<=;E7MA:%OFJp:&hJ["B4B!ElC\eaL)i7)2o`re-<"5Y)&u'=I*_LkGLR5%V8<>AFgpD*O/(Tf_eHqj)tlt64F`T3`X2pLO??BZIlj0p&RKi8`:PT(AZKQ*4X1qC.iNTXAS?aLfHPFi6\%AGL;']=<T`f?klJW$QfeuSmBDL$%3mu4.m>0e,91r/E(1a83/C='_bjt(m=YDFHBob/`=&`V78,bl$SP[2m@,l$(l[t>@g*WfcH+38&*6-7ZG9,qb.NW[j_'5ci`P:*X8WA'I_W*32tSPMh9X-&(H.!![QWcB/qp>7^);RPs5)H*g=biYmFVr%]sVLg<GTDLfe_Qd20`>%?L+&iUe/3WGDjb1lc)ZM[(0C_B$Ui([^EYMXNb*r;Uam$^^p</K0#qqON*j;?OB$ScC#8DQT%oEkGCAACZ%D\G+i@TIk`D)r@M!j$dT^'$M=IW`;=8C7.Pu28]@_;T)lp&1L@`s=_8Y[Xr+Ah':Jjn4i/LJSam,.p:Z]+YjRe!`EY1cfKNDrRhI#(!V&m&h7per\ddgo5\e1]:Wbf_7;B\j\k'Ab<EVsoKLM^_'88LF`cNq3TCcUV\OM'tTUe$3)d2Lj&DB,&nqi#Cgm:j%$IG7ndlQIOlglC((R[f4U>Shm(Jkke.Z=irPVZ.A<\N'1`i_Sm+Sb['1Fr]ZXVu3hiPrq,q'+jD<`H_nF!X7QREZURiLu2#'m6^*E2(;W@V4UASjJ.!/!So''[/[9(>7sn5(FV)K\iCpae.GVqR`juL<=g<Q\,I2@r9GC7+I88*9K,Bk_(/t__ZEmFp1lHc`qlE&_:Pl9!),$[-fu%j;)+.XOcsUeM_5ua68P@$,q:deu>loKg&`6*a":9UcB!BfgZCDj2]oD407:mE@gVLN3cIJQ$QO>Yo=dd=$I2,%Hl8W@)IUJ(M/:W(&TGF9:O>+H7Q(_>nOV[=Rj7W!!C+G0bo(`WefnqBdF/lETu=GB`Qc>4$%6;P2h2Ci"QkIc.u^"s%W%&_9D\7m1:2a0u3P.n=spX_i5ZMmWm3Y^ctM27ZSjXF2!YO-><VJ4eL[ihq\F78;ns[.t#[TldB$+FiEH1h`2@9k+XOg%mM8+>%YepeT-Gp/@P+j;;GX^8"e_7.D0UHeMCiQc/U\>eCq;Tj9iFb4q"c3mqHhjYpE_LqY%&]I[;EY3?gT+VPr:4b[ZjQ.F\+<<&;b[#h1rXFd(N#qlWZTR=@ZilEcrECYGSH?mM:r\ef##CO$8HA'Sl;To*q^r"!2&`=]&[+rc[jhLMJsWtdJVibD,jU+.XAS3Y__+C*+e:BTk\@JtkZ3udfb3sN.Iki']*Ph7tb"jMC_nV"LM5?U$q.b$MT2h^GW8TWj&j8Qm!%tm!@B>IS`5crHji2SZ]X]^p,L.lN$aRhAX-J9:m8NUI/r]7H!)Jg4Zi4P..oG`.hB^P2sBSSbp(uF]DVHHDM00"il]6,cP'^%"[T`B269aO+VLoJ%/@0518"YTcX*h\=]~>endstream
endobj
xref
0 39
0 11
0000000000 65535 f
0000000061 00000 n
0000000135 00000 n
0000000242 00000 n
0000000354 00000 n
0000000501 00000 n
0000000648 00000 n
0000000795 00000 n
0000000942 00000 n
0000001088 00000 n
0000001236 00000 n
0000001385 00000 n
0000001533 00000 n
0000001681 00000 n
0000001829 00000 n
0000001978 00000 n
0000002094 00000 n
0000002386 00000 n
0000002464 00000 n
0000002670 00000 n
0000002776 00000 n
0000002982 00000 n
0000003069 00000 n
0000003387 00000 n
0000003462 00000 n
0000003567 00000 n
0000003679 00000 n
0000003791 00000 n
0000003961 00000 n
0000004054 00000 n
0000004166 00000 n
0000004269 00000 n
0000004389 00000 n
0000004521 00000 n
0000004649 00000 n
0000004745 00000 n
0000004820 00000 n
0000005648 00000 n
0000008687 00000 n
0000000102 00000 n
0000000209 00000 n
0000000321 00000 n
0000000524 00000 n
0000000728 00000 n
0000000796 00000 n
0000001102 00000 n
0000001167 00000 n
0000004084 00000 n
trailer
<<
/ID
[<cbce618176a4381f5b7db1e5aea50bfd><cbce618176a4381f5b7db1e5aea50bfd>]
[<72a4394cac60eeec138c965dc18fed12><72a4394cac60eeec138c965dc18fed12>]
% ReportLab generated PDF document -- digest (opensource)
/Info 22 0 R
/Root 21 0 R
/Size 39
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
9638
6018
%%EOF

View File

@@ -1,5 +1,24 @@
# Android Cast — production infrastructure
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-26 |
| Last modification date | 2026-05-26 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
**Read this first** after a context reset, before changing nginx, deploy paths, or URLs.
| Doc | When |
@@ -21,6 +40,17 @@
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 18 0 R /F4 20 0 R /F5 21 0 R /F6 22 0 R
/F1 2 0 R /F2 3 0 R /F3 18 0 R /F4 19 0 R /F5 20 0 R /F6 21 0 R
>>
endobj
2 0 obj
@@ -17,72 +17,72 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 716.2874 87.48504 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 762.0394 87.48504 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 705.2874 191.101 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 751.0394 191.101 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 694.2874 98.58904 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 740.0394 98.58904 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 683.2874 111.925 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 729.0394 111.925 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 672.2874 165.293 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 718.0394 165.293 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 661.8499 153.06 671.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 707.6019 153.06 717.6019 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 651.8499 131.37 661.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 697.6019 131.37 707.6019 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 641.8499 165.9825 651.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 687.6019 165.9825 697.6019 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 631.2874 172.845 642.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 677.0394 172.845 688.0394 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 620.2874 161.725 631.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 666.0394 161.725 677.0394 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 609.2874 75.02904 620.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 655.0394 75.02904 666.0394 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 598.2874 166.181 609.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 644.0394 166.181 655.0394 ] /Subtype /Link /Type /Annot
>>
endobj
16 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 587.2874 117.277 598.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 633.0394 117.277 644.0394 ] /Subtype /Link /Type /Annot
>>
endobj
17 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 576.2874 135.949 587.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 622.0394 135.949 633.0394 ] /Subtype /Link /Type /Annot
>>
endobj
18 0 obj
@@ -92,33 +92,22 @@ endobj
endobj
19 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R ] /Contents 44 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
20 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
21 0 obj
<<
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
22 0 obj
<<
/BaseFont /Symbol /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
23 0 obj
<<
/Contents 45 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Contents 47 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -126,9 +115,20 @@ endobj
/Type /Page
>>
endobj
23 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R ] /Contents 48 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
24 0 obj
<<
/Contents 46 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Contents 49 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -138,7 +138,7 @@ endobj
endobj
25 0 obj
<<
/Contents 47 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 43 0 R /Resources <<
/Contents 50 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -148,126 +148,177 @@ endobj
endobj
26 0 obj
<<
/Outlines 28 0 R /PageMode /UseNone /Pages 43 0 R /Type /Catalog
/Contents 51 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
27 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190936+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190936+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 production infrastructure) /Trapped /False
/Contents 52 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
28 0 obj
<<
/Count 15 /First 29 0 R /Last 42 0 R /Type /Outlines
/Contents 53 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
29 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 30 0 R /Parent 28 0 R /Title (1. Topology)
/Outlines 31 0 R /PageMode /UseNone /Pages 46 0 R /Type /Catalog
>>
endobj
30 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 31 0 R /Parent 28 0 R /Prev 29 0 R /Title (2. Port 8089 \204 not the androidcast vhost)
/Author (Android Cast project) /CreationDate (D:20260616121123+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121123+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 production infrastructure) /Trapped /False
>>
endobj
31 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 32 0 R /Parent 28 0 R /Prev 30 0 R /Title (3. Public URLs)
/Count 15 /First 32 0 R /Last 45 0 R /Type /Outlines
>>
endobj
32 0 obj
<<
/Dest [ 23 0 R /Fit ] /Next 33 0 R /Parent 28 0 R /Prev 31 0 R /Title (4. Disk layout \(BE\))
/Dest [ 22 0 R /Fit ] /Next 33 0 R /Parent 31 0 R /Title (1. Topology)
>>
endobj
33 0 obj
<<
/Count 3 /Dest [ 24 0 R /Fit ] /First 34 0 R /Last 36 0 R /Next 37 0 R /Parent 28 0 R
/Prev 32 0 R /Title (5. Nginx \204 source of truth in repo)
/Dest [ 22 0 R /Fit ] /Next 34 0 R /Parent 31 0 R /Prev 32 0 R /Title (2. Port 8089 \204 not the androidcast vhost)
>>
endobj
34 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 35 0 R /Parent 33 0 R /Title (BE apps.conf today \(typical\))
/Dest [ 22 0 R /Fit ] /Next 35 0 R /Parent 31 0 R /Prev 33 0 R /Title (3. Public URLs)
>>
endobj
35 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 36 0 R /Parent 33 0 R /Prev 34 0 R /Title (Hub location \(correct\))
/Dest [ 22 0 R /Fit ] /Next 36 0 R /Parent 31 0 R /Prev 34 0 R /Title (4. Disk layout \(BE\))
>>
endobj
36 0 obj
<<
/Dest [ 24 0 R /Fit ] /Parent 33 0 R /Prev 35 0 R /Title (Reload \(BE only for hub deploy\))
/Count 3 /Dest [ 22 0 R /Fit ] /First 37 0 R /Last 39 0 R /Next 40 0 R /Parent 31 0 R
/Prev 35 0 R /Title (5. Nginx \204 source of truth in repo)
>>
endobj
37 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 38 0 R /Parent 28 0 R /Prev 33 0 R /Title (6. Local sshfs workspace \(not in git\))
/Dest [ 22 0 R /Fit ] /Next 38 0 R /Parent 36 0 R /Title (BE apps.conf today \(typical\))
>>
endobj
38 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 39 0 R /Parent 28 0 R /Prev 37 0 R /Title (7. FE nginx \204 two server names)
/Dest [ 22 0 R /Fit ] /Next 39 0 R /Parent 36 0 R /Prev 37 0 R /Title (Hub location \(correct\))
>>
endobj
39 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 40 0 R /Parent 28 0 R /Prev 38 0 R /Title (8. Verify)
/Dest [ 22 0 R /Fit ] /Parent 36 0 R /Prev 38 0 R /Title (Reload \(BE only for hub deploy\))
>>
endobj
40 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 41 0 R /Parent 28 0 R /Prev 39 0 R /Title (9. Backend app \(crashes / tickets\))
/Dest [ 22 0 R /Fit ] /Next 41 0 R /Parent 31 0 R /Prev 36 0 R /Title (6. Local sshfs workspace \(not in git\))
>>
endobj
41 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 42 0 R /Parent 28 0 R /Prev 40 0 R /Title (10. Rules for agents)
/Dest [ 22 0 R /Fit ] /Next 42 0 R /Parent 31 0 R /Prev 40 0 R /Title (7. FE nginx \204 two server names)
>>
endobj
42 0 obj
<<
/Dest [ 25 0 R /Fit ] /Parent 28 0 R /Prev 41 0 R /Title (11. Changelog \(infra doc\))
/Dest [ 22 0 R /Fit ] /Next 43 0 R /Parent 31 0 R /Prev 41 0 R /Title (8. Verify)
>>
endobj
43 0 obj
<<
/Count 4 /Kids [ 19 0 R 23 0 R 24 0 R 25 0 R ] /Type /Pages
/Dest [ 22 0 R /Fit ] /Next 44 0 R /Parent 31 0 R /Prev 42 0 R /Title (9. Backend app \(crashes / tickets\))
>>
endobj
44 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 874
/Dest [ 22 0 R /Fit ] /Next 45 0 R /Parent 31 0 R /Prev 43 0 R /Title (10. Rules for agents)
>>
stream
Gatn%9lldX&;KZQ'mk$`Xb$QCd9E-ne'<2!WCqU/702(<@u3f%WW.A_E8oH4[Ru9_Cl]mY5-3UB]+dB?B`FXl!G33S/gsO<Z450BKTIcoSkXZ-k](1T8<be]KK,!K(Si52LXX17r."r9Ji*&X"A$c71o-eR'7;-T$55e8`t1F2eqNVl/cbPG6;oPQq5f,2Pq9;B$Fo6<_V4`oBXB8Cgf@$6,rZa_2?%I#\:Ep-A8gD^T8u7scZhTC*Ds[KeBF\%7,e(<S2qd/i25<<?tR&h?jY<:':;dZWn$es&230a@>:CDBknb=s+/-ui[8`,p&'Dl4tUa"2YEZim@Vfic1kQr5]%WFdL,4ALgkUSr89;F8Y7lo8#HKqA$-g2ikCEef-bNq])dbTUr+NNA\jZ6p`R)Ze(];MN;YtBPknm0"j#6NeQ!)d=%e=NLm$@\iRuR$JXagKT]QL0U=Z9Kq>.sZ+SNf!?j&Z1/,=8=&>NF"pW>mVgCha@=u=BQ.!dlc%Di(hf7XUYm]gAFi([\e)?a2B_9ph4HYBFLf1m2mj77S2n"<]Amn]DF1fmk=gcCRNj-$K3Xa&5d"dH)!YYc<2`%+5SX+M(KT8k4iLqjYP;M-^c`k[5T44A/5d!FE6)tgP>gsSTSZ']!PVa&7dWpPE?,P8[r+Sf?R=PShTU.GW<'=umWS@'o-`ep2tR.5POAC:4O;_/^O;AcnH>N*(L/t9]j2HnMu#cu_u#s,cjX]s=cnT\%EbMIB`jVIg$`J!l3$kt188jnmT<%.]\Hb``Mk]+Ehg7$s$XngD;_scREVo@qYm#0og/;?otY2jKi>%b(oRg%SKi^%71`KXR\D:<Vj3+mr2kY3]$;JAMDh@h6N!:sT81&~>endstream
endobj
45 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3225
/Dest [ 22 0 R /Fit ] /Parent 31 0 R /Prev 44 0 R /Title (11. Changelog \(infra doc\))
>>
stream
Gb!l"D/\0"%fW&,6/Z^4G;gO6UNc1)Ue.&!e#bS!?#`,[5dAA<]!A,sj>?[Q^\p-e(JD&?m;$^W-#FZ67c]XNOq0QO"_@O3`4q3^^uZQ3G7#`4jss7bU;?aCY30GISLN5c9db[lb8Qb67<I)2n3%c2(R9Rf,s'8ZTZI'&(+E.c3'g\p7r+LI0kUg7`f4Eg7WIu4beFM)@bLsT<Pfr!?kN/?HV#>h0h]gNM62Ac_.)I"CY)nqs7bUpQ7VZ[<sY@-';%W'_*@@*@j5U3J**g3"2FRC(`&6670g^g9*,[XU8k?t;/JZY/KgocD,%jsT)&/MbpBh*<N#q:'GX[PX.PM"s3@M"9+=gU+K%O(1OI6jHg0hf#eI%l9,C+<e&?T<FN+6Q@#F>=%lTIUQCOs:h[6cN_m`?+^uk)]Y(B*C.B,pr+WJI`rN]j\NGeQ'^)>\%0['RaPVTj^Y_]-fl\hf>f4;M[(F\Hc8D)3nb,i/gl=m_=Ic;Vji.L>Kfh::)B'ND-Pi>K2hZCA$31^B@S\&EPlY9DG[BY%KVbZWaIMiA&Y@qnsKRjr@?dE-o`!JJO(e"9HN]/KdE7QF%6p%SN-?SO8CtX`Q%?[UMK]1s'pEX$McYbuICQK]\DQSXml@ut)4b;ek9-3$nhg:'4alPBj[a[':H>]6,+8:3.`Xb:V85?:^-!s&8]QoGQ=#c,6-YMrso9Ws1oQ]N)S(TfLE[',G\ibbd7@)`]W#(brN+Oe![NFP#mm##<hq`b\1.[k(a)J@k7ZP790GL0l8foioc&1]B#I&:p[R`(WDRXKr6P@mUgcDqMU+Ud7V2+l%\%c4pmiV!^UMVYr_i-\2PB1NRG8',3l[%O0_+a:%[0U.L/3i.OY@keJVPYk?s1E].L1oUOSufEu1ke^Hgku3Dr-Q!FCO&.J1o$HIB)9pU532m6btA06PRh.30+Hi<5(Ipi1k8Bt!'ZYPn4u5u8[gO,:[%kUG%qAuki*aioH,s&'d1f+F[Aek,b()+P\=gP\A^I*X^crK9Z-4kTFtI/Q&Z.XO_q.OKkV-6W)gqASS6O@@%jR=KUP[e$K&O]k#n$8QebggOCtCj2_"Ocnt+1bB+]p*>:3"pEoobbMt\W590Mqj>U]Vl`F1Oucj']oOj=Z%i:c1)SGNHY.uP*fo``)9+QZsS^QZ%<F%C`3f5Q%q1NBD_Y#?V;*j^8+^s,).6,V;F'b"_>gHBiM@LASM$0/#'5s\1Fo#hCIE'o"[hXfKK5bi7'?UW$-Zii]0rlh+(5o9bYY9u+jc&Ru$m""O3&KX:eNeN(qI\UEs'A$#(LI=n)";+`-1kRuiF*s?+fuhun$$a917F0C'7L^UA5NjD[R?q0'U$FL"-c(,a,`4l%KOWip9>ni?K#Eh+,^u&`QsYtel7W"tn)p?&ZT%>bT4$io0+\@.B`,*mOMTHr+FoLSGI]ttp*d^4MuR"o:YS/Z4#Q.I"ZM3WOCn*-M5D31G]14Ts/iCX^.uBM3_EpO2i):mp(;CbK!*fu[Y^_%g`'&`pE2JpWeWN,#1_KDIdaH:[55P*:*IM@$!'XVrRr4:pVP[Z>t!!BGlaeJe]M1Yb:q(j5>^17Q@nGj@G_4/'K%?$^gjGDMU!j[kWGb(7WsoEl7-_rlM\:YJj1a_RJ2WTF.Y/o]Dg/hMWg6Ig<@c`C<N<Fl]8Yp#l"'Pr>P-A2/%,ho:8"?Ph&8A[H3iO2pJ:Eg1gJbs"0?mh?]M,Y3X7Hp8`*TZ+;kim;[5MA"mG!pML$uj<A%Ni!TXCCLuL@2aK]uRn(UT_BT9l"*X[rNR-q.Fd+*(-dd?WD*8ooBk_F/FEUiFH-MnG+5/YNF>Yp&?UF9Z/4#P\<;V'QGfYVDgFAYl'$K]VRqSfgAA+`_U"XZE@:Vl[&sri"K&OqZdh9G,&kFp^N(MKSf\`r1/WJu=lf^Rp]*^O`qVbcGi&cTo(gWK]WJ+Frep^tObB(":iaW$JoB@u=,mY!tp683PVp7Z<3*:;$35Ktm[X\<cTW47<lp8+XglH?tdM0(=0Qa?S]i:\P1/PC!#"61l#+Xe6VL-X`B6R46h'4&=0pZ;S=t8T0S'KhfO)$h%HgCHXmk,T`T!Jp^NUL:^Q;@8[rrqu!nCn/`#JuF*]LUU#E)JM=lL](oZ^9$[([aS(S/u.->o4q$F10mP7&0&L9iI*8/ZEFVn@7O_1qOeUW0JYk]j`/"AR%kc8b`1X]"m;Fn/N9JPCC/O]U(*t(d+fq/K03\g.kL"&g9ZcXB`5@[i*2(m48k[3MdUBVYh=,E`CX@L=O88BUH)7o8;V(j6mHd;,`\NPtsHj8"-Jn"O$V9_6)/ZB3Qu-Nap9?!&<SD32W(pN+5Ij0HHBtN4Ht`'`b)q`uXb^S6GH=W_c$!,gm#YA;-E(KYB:HeC4>^..GjD2+)hY&c&pq,.7rP)7V3@kq(umr@iYt(#XWZ>1n(dp4F#nX2V(D+/cIcVUYIfEED2RZ?[6b._#1.kT]s4n2Iki\.Ub(_gFn/7M0T*<&Ii26i#tJ2PDuPj>(<#bAB+^)arZo3>=t!ieCFHYT`9hj:^dY(=h]A3%3o-%nBg2<X3V5O]iKt&r<SU%@Nn5E?7oi+k66-9q94CaINhlcWGn**V\FaG1B<]=EaS-UO#*fZLgsbFugtQi:V\>7CDiJH8)hY%=Ho=Gn9%T#3lr7C1B'3LG#EoFF/SM3>r!mb53?tGd;7?D&E$b_N.1OK5-$2TB(gl0rR,NhE/:2pZNBe&q-.sr:&W*R(-s&2T`C6!d'#V[IY#>l=q^2,t"9C8`g"A%4\CCQaF%brKmG><aN)(>%a?JqU<a_Q361g[#P6604qtMi4u'1ZMnMn4/"1l68*;D,i"%TWjC(h,-Mh:h(u[@XO']>!3h'70afl,qr)5DWaK1,*JVRlH-L$87&C^dO,)u,d\*DC';fD8BSG].WY:kF^iY;$MbHXXoNSbI(9aHrmQ90UY'p`iLTQ3:GN,JI=3QNrq$B:'WkBI[,]Wd*9YSMt?`0#Vb[5XRDn0(_=-WMD:+9L;DMUR\$\]>le"B;r,s)+l-ku>`)=?qIQGrVRI9)?CPoK`0T(<le&ogRR,Mqnhhh6POVr0NId!oJ"&-Y?D[,o"1!:beM(9j3t]!$t7$9RM*M55(I^.B;NH@4mHRm^Koj`VN6OE9?Xe+05ZOPd#hcd@P]`lfXTWZ0_k),C*iKu$?sZ)'1:7mWt5$7\3TZoN(SjhM%4rrGK&191~>endstream
endobj
46 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3409
/Count 7 /Kids [ 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R ] /Type /Pages
>>
stream
Gb!#^BlD`s')h6*;$_>WPh?Yfqf"_F$[Y!oACojd#$=-@6'EmW$,u$`.Eb&>s1[%.S)P_S_/>4MTt8oWrOTRH*E#/B+%?+nD#rML_r=i#7>:UR.(Z4lrHl&c^\I+]a_.'N,\r8<QH&sbkkLS`jZdR0&`G!6!Sq]?<DcJX.iL)CX.M$ja-8/[L\C37-/J!8WNiU<S?]5sem?4Klm5g$#,gN$[`!XFUYTZmaOq'hD^ZoHpr4'cd'Elqrr,TSUkKc`N!@#Z-L!nAkU5Ad`Ff_Z_o6E$rri'\F(rDL:F/lg<6:BLM1V#(i9OYc_E(42AV@j>jtSgJ^n^4D-B\<9\8_o`h(as9bLaGu2:/FC[GrD#ag8?G\)I+*$`V1`KT&f<TbYemZb)2aOt:Q^&"DBb>?m$1N+506"&K3D@2fEuk<T)IrEB:f;g7Z81g%:pROk&k$--?Xn&7S,j7)O7[h/!L_Z13/5P]^,\W/Hu)-'hH@A-QlU'H2']cVu>#SBKCL*X,#o!j?U4tmUJQ4gXIm;p*$.5[Cqh?9cRmYNm`p?!-<lKu#*8qBj._?t-H-q'4.JcE['T.VBn[<+cep@#V#0-gYn_Tg0+brf>=+7Y!3jm^U>LN6L7IP-s/j,EF%kT4LApf%Zp;lgGd;_`g:Xu:f+fmp(`)1#P?nfa@lHOFTEOA+DjnR+4AZ7JH"dI%=@+fY9j[dbP4GSH%ZIs9a[O%-0X/]F3hZqrijd$>h>\d<Y<h/q,;\(r>Z4;'n(o@!,IfkW^8_T6UqWGo<QBpn+[r*g$imW(?AI(q*NM,trmlc7J]S7;E"Y1ohR)4%:IY(LFZn?6sG4i:/tXk_k;?(l&dV&K[ai&@i@_1LMQ;lShNZE7kr#*L=C'dUt!*PLNF7F=W9>EP1'*ZcJCbNX>PZ*7Z-Z#1eLk[#(70si;?2lHguK-G(E]T_(-miWkh]\_l\hsOT?PP3_Z@j$-Fd<<,$0lJ.R':&&*-$)7ZbL29YV>FV@#<`QN,EHf?g@d@I,S"+@[#+;.<SPtJKKTnO?N=dt,n\f#)aI#JY=G8i^L\71^u#M@_>c[dK$YU4;oAF&J-tOo+eg9UmWojIdloY[GfL!4BbVWH0r3[h"@E\Y9IP3)0AQBAk7Io-X6UZd"`>8hY3\NPCp%9%m0fZ<(I5JSF0:n;P+S?m>!]ZaOsl,r1;PSco2I!=YIG#VoMGU"f!SkbL=l\Xqn.pR-;EOD`<*qP:VO3tj%q^I6s)APID64XN&:&&XAn2T02?q"69OM\:Q!F:#i1UX@3e/X/?KU<E_]bf!msP%]&ip'3%Go+J@fiRBi$p/"V;?UI9&9$k6K*$GYrS+)86k[o#HkX2N*?kM;82PI3BXTe;**7pr+q[2M+`D!0VhK!1u`U@V#&@&8a*N0%B1rM[`q41``\WN&*/*/gdt'JXqS8G!T+<s.J=WO'&Bo3;Mb!9/B,<miKi]dmG+"DE)%IQ#`lS.:())&9&>jkFm'qh,:MZ[XKN*[c;GFP'"YJ9@^?lZAm>NdI`hLPr4C(_sF`VA\$m$_V\NM/RMRsdr%S>%F<]IC29$2_jo$^=`(4IMp`^NIZN[#%)R5Y6o%;XD']UH022Ee"92,SGU_jHA<S;*7"1&kiJ*<$rW0]<Pe*4d1h2j5bRYP&0Q;)_J,9h[$!kUBop#Er9",CT,^r8<\aHoqS9idWpa6e8(,'(XomFQF0M.q_Hr:NPba"P7Vj-_Z/ru!TkPjj@8LJm&dBr7nK3.-(=cC8#in3aMJV^0GN#BrS!h?i5ot`ZV0Q'];A2lLW:a]T@@f/cp\,tL9qY\k<.K5Hk2EmN`;0I&fgW(<=DUOBpKSeJV>tBQ\*Fa&DajYpM?e;=DpVSR-BEMHt`@0ZqASrU%)H@fnbV0iG0IsErXTuY.1:RA_,Ba*G-^QFYqu),]+)YbT/iK\)4]0<pHImJl=@s8hTdk=gUL+rgFCB^tVTXkMb?DJnPS6eM_E/B.f15GM9-F_9?Sd.<I*B:f@>ZpWNaBl#H:UZS)(!B/@?6%sbjhk8PjEc),4pJ4$:"LqiWJ>fGt8o_LmX/VZ&,*mOOP7\:ec"WOjn3+1`T$QT3td_KG+_VV?H@u!MS-&X:j/ap,Rsa\OG`X"[X$?%OPJ19iiXA>DMalJ)pna-HVWMA6$8FH')tfh%2^<-Y+9:K@l+SDbH3X'4atapI#arIEBrTgigL3=1Y>0WK(64I\]qSW2#V-c0:ZPen$VW.pt"].-X[1h2S_d#EJP3D"ZkCn&UflkEhB3qp\l.)ohR$"3,sBV$iH4=nX\KSMEW7,B*EY#QY?.KT*8/j1]rS]6_Qr;/IC!(\SZin:%kS3(8"#?Z1Wp*ia06nAKV8>NWQB]a[o1,kZpZk@_H;[68dL4g5`6]1/Q:@]7arh/ZhGW`r[sCS\:?Q-SAf]k(]FQaPt=HBVC[7M=<."6uIcjf\7r5.JWaj!]6>E9uL0m@[>/$>]ga-p*=ZZ9\=!H&IWNH.^A5#/u;3%1HK80,Y>^ULZ]aX]gIT3+bBtWu/#V'2E(M9.JafVK]VLOB7YkG<;WcUoLk6G"WoA"6'#D@4ONHG+D'g0?rcZ[GjLRI6X)&"Y6TV;g,6H,hKT4]D5pf)bQPSNIq\Bl_VV4h-UAScG@fJ*^;aZ#CbsO0Ihr+fa-XVb?#S&KPnnreJgVXb<cE%j>f32Ke^37KADeNA2gBh.t`+_Z#2-.n&p@/N]X<kNO&i%a46!^o<ULLkCL5E2_=J0J![+_Qch`:M%@81;**o7/uBBNG/=QV$Ij#I9<t;EkdU8fm3LeBFBpEWK1=`B8^Z&$@^@gsA*26g`7\OsFC,mI)'I_aH89d75ZE/T<AScDj$aLr+mm1KU.g]_\,/t]D'sFPSZ1AjGGbYZ&TiFYDWmhss&XrXT+a'@ar*8gOP*`C#h^u3m]U@7)Ur[;:QlG1#/6!(h;S#V6>dV:O"BPjmFY,r[+,?6OB?#lp@e4YJ#)I.07)'UW1%$i'Nh9F`BqHAS[Fuhf^(b(]ADMJrbUO];)?sp?sI1mqL*L%Rp0YP,?t"doJMM#`T&c50&Jq<Gk2ZiM"H@$UhhsDK]^3RA3$om'j4b^DKIu-W^gb[nh<EMqm)cekh-^/U<86`<);8R*7o9qZN`U"4r!%j)4mSFP--i<Df2>kNo]77`j,u[SR&niW<;p+jmL"Xnu/N#4Lapnj$%'nT5YOL,aI:0)`Lq6Sj\DBnpZ4TO`Sp1&u8pXGidg1+\<",)3*3aM%)8L9B-/^=iLLb*BfCB3Xj&8D+Y:;_pjk=FSaI$9K7#s5:</3-2<\.@!.j`O/kj?>!$qSC?OH6KeQ:d_OSK[-VoYVJ#?\gLK?]fiQh/5UH\Lb>Xko)IKQck0FPX3?M.C(>h7UEY6J3Q]b1:Fd>is(qPO-.#2aUQ6=[P#02n"Y3r~>endstream
endobj
47 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1875
/Filter [ /ASCII85Decode /FlateDecode ] /Length 857
>>
stream
Gatm<D,]1K&H88.Z,97J;J9TFIS8ns6RgC1K9eF[oLid5i@'P@D&LHH0K8a`De2"E.OSW6)tJT^Q*gGTm^&rR@,mkXIRYd%d0QgP#94)G.6&C=?uul+UX!_sW?j^""F]2$+:LSG])rSqF^A?G4r#ha7DU@<9X9[aMT]--GBDDk:nRM:9(<<#!r_R%qYGjt^tu^PnjCT0ZA<<0B8'kaZFga3#W]4nSm*b88.eWAVM_EZMI/IqX@P*(kK;M*%AR8ag'@TE7LPVL:CX!F^maaS.pF:oi#_SurN4DVMSt2J1EL1U0HRDuY*;adM`b'OC+kp7*kjfP&c/pV,EIMO'5EK7$htd:[D8nq<<\XtlgOGn/U\)\$<cSa/9B;B8gUQ;>"s4?D:_SK"^MshKf$bRS!mgZ32jitK=bXY#ChW6VkAbd7$]r#4G=$F!;%;XMHFC?_2"1L@]@nB658J3j:B=T@,_aDI0;?=YaRKnEu^/VV%m=D*,bm:+E58n)kKb(?&Gkfe@2*,nTghJY?U4'HXsABHq^!,I5Z8c&2$1Q6D$4BE-ce\d)#T)O#-bN/sqUNnIa]["rpDhIBsf>[F0g(=o]KM]WJuW=8X868Z#d/l=\l><=L*K[ttu*9UXj`nM'la?H.XIMc'-,$l"%b:pB8=6Q.HiB/=XrG1o9&#nb?9;8D_lH)l`.qX/k*QsoD;6e.R`LPM&M/hk"0Q0ffun@2[md=tN_65:V`T#'OY=1Hglaj!P8T>(;XdJK^1P@67uVt#pG0XWU,Em`1rJF52HESK,nQH_C(X\s/V=8?iL.\4n,:m$_.6<S<=i//iVS6_E'ehM_bCRXY`OIb8lO(gO_rX#WBin2c8aW:KMY6CLh*s`^2?R3]/kWWB1A@XT:3A(WH+8BsI3Q+U]^WqSYn=VUk*(qu(d(IH0.=H:>d@?o60WY\$-F#o*L45nL9I61)BJ1,oEJLH^T"op6kQ#2k".1[M;I$Vd9&&/*s3kZ."r^i.C1A`_$S4TJ&OnH]>d$I"-6c@')J/M:)q$DZrERQVKo)]7/8$OCoEY$MmWKNR*Xg&X*/PrnW";PEbaJNc0ZE$f_O"e>Ut[kt_)+WubuldAfXR6;h&m"s(+5Q#<It3[WVeFi[NZj/:LEO)Y9agD8CP(&XXqoU1*r3S:UN'MX#HpR5"W]:=RZOAq=d54W16;h6q5!:_bX8I+f9/27(aU&0+S?gGq_)RSRV@Q1;kr$1;7Sk=ESK5^m3ud-/bYj'ar-crVrRN9Y!PPC21LXZ#TNug$%_nr9M[P;&D8GO2?F_&+/YH4^cZ,n)&3!7p),cia/ZIiHZV^Lh?/t2k?f-6>l<nrm8ir?NAtD7\fB_&qMJY(YQ2-mD@$7',lP9gLQo\COtXa3\3?7aqB8>JUkcYo"QNs8)!!rO1.Eq#;>R*N[8k@]"SQj*<^Q<#86lTi&UXCR,Keb7"#;n3])@.FsYcT:%rX#rE"o%hM)<9>`"P_3tKR(H4e;:=g[%p]]IQk`Z3^BijrekV>cKZCitH62].c&N#a)!M%+TM9aG(2mhaC(GB:#!X5.BtDN!PFc/Y`sK:\&UmqH8Ql(J<^HjYiPlNGZVHb+"Llm2CiV)bi^Q172iY'&'rT#t/q8Q66Y?`-aIrar"b#1j0_dSf^VK1X:!br,@;-SkYL6?H^GbGr0sAUV)dnOQosg8#OYkkD%)!l\f)GV#SCm`"ZZE-0MYDr0.(k^-j#CkE2MgSu]L#G5/-W:&edFiS*;%+oip!8XV$XQ;)jVP)(q\Cb9HB70aEO?O+:hZ<?Gqo91emJSO/e)+;cUBH>5KY@3:ro:9^>Acf;q_gtb)\Y279ctNo9]2k<TQF"U6uTRVe/Nkk7DiHi<X]D-IfV[6\P`~>endstream
Gat=*9lldX&A@sBlnQc7MH6?g9[]^mSK+)cl)>K=a9`^d/r"KGmjm@)5&+Ts0VC_[Hi(2(Pnnr)#HR;K!OrNqjq.V3"=l`'"9_Ni&Bt-tn8kIg7!Xq&crq+*I:7,=Qr&i`aanD<;=+D3P5,/&J"9_;4IFM-,h<)#Pg0DAc2^a;d&5ZZ#8(4sVGWr(&_r/r!e)r&@?Y>$\Lc_kKfEB"[Qh79AT#4In.*8lbe"Qin[!Y(WE)Q#UKURf'gf\&X6)h<Fe`/koaGs`:N6!5&QWG3Cn89-p50q6^;?Fh2d'I'CR#"-UaF=7Q)sZ^j]N[0="2-!j+GWP*K3Y7lk>+I=jKX[%BQ]aVgI\hN#nHU.RF17[RS[9bl/p,qE1smKNF],jVKpdR(#[4#$r#pm/J'2SUA2;[-Hqs)lp<@MDi3V[E$q$UQ^gn&rE9[/n+_oY"R5RDPLLi%kNE\,7J&9i,)W0Abh.i>X4hq2A^:5@2a$-VECDpi/dD,L\o&<`*8_rkCm9YN<<)OA2i<,-EKt=-nP4!HUR=E",numVfL)4J8R6t%8ZE5:U2BT`QK\<Qu6Wf!lT3$BCi?bDDNJ<V='uM!r1iA/Bimkj'm5hhK82(6ueV'GR,[DBMj`BdHSShlKX&Sgh[3J>aXl0DqVEi9Nj]dgPjKBRD1H!\(!nEq?Zg+qnCC4a0^r:3pF%*he`ArIh-aPdbIF^G7BIFLpdP%Vjk+A[\fQ;E]$42Lc&_G0PD!E#3C%oIY6#gLi*d(K2<"DF:b04n.(&ZFEM0F#S_U">7PlPWRpuoW_-3gLdDX<X<h$mC'FREGA[1EIGUHq@$"V,o^'E;,a!mh<FB,Vgjneq!mLWE@g7OJ~>endstream
endobj
48 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 804
>>
stream
Gatn%c#T:-'SZ:1MR.E9:ltGaFB:EpZnn+DlI)iJ;*Yt5/5\u6lF3t4:>.$tcj[gNnR1>Il096o;$?lm_e64Z(-+!K'U0cE5U-mb^W&%$rLD:,a=&B,)@$j6k9L>>aM6nf-:,ek3!9Po,iC*WO'*5qR-i,t-[h/O!V3qU?tTqgHA-VsmTKp&U!UqRjm30A+3<@4g0adNRXPm^5sIKR;l%;>l(CcXEo#t\DiZ,bUMMDc7W>Df6Q2a<2N2W(mGM^cTh;)LZ4PUG^=Lkpi!Rr4\3eMa\8.Q8hq$ChQ@cfh$Em&l"BUT=TbU(GE7iANbK\!3!h)eO&/3i8)tiO(+BBRX0f[XMK<*BJ(tn-c7)Am:d0P]LO&3Lh=q->Y=GnInf3.)8i`U@PNkRL@fJS@ra&FJ/VWIVq\3m;)i>Sg\8YM-+Kc<ID:.qmYXVU#+'kl,=;/([:j-?ocol1ZYO/K9Z6?)>8d_a_LZ?X`.B05'([$g[IpAW`'j3!TS;_`9DeIq/.X5/D_Q0)Bk.']*`,+ca3<&?&?GA3L\`*Sp$Cb!to?m1Du<+V\shQ]Q&>$>1J2?(.mUD>/OP;Sn]@!u]O617m[*S9rs2I4r+D=:sdeCNeqlO2.>ap=6C(f^ik3!adpH]H\_"<g@_"$C6:cn(l8IX_Cp)"J79'_20RL]':#_sd-kB!qV'p>pRDp01;,s0Rd>S[-fOm.P1JqaNb?@sp-J%ee7lI@kBSfto/09qdGJ)bXM]POOB+T&BGC`;*BKN$RS=d9lNca9bT>.^5;YPbu>lk0+d's.b5"D\40DO8~>endstream
endobj
49 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9$AT&MD_`PtL;ZBnUJQ&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:ps&&=X(PCH'Wj;^H^&o:u0B4;^:%sp:ZE&Wa6R#'r_sXjY5-C*Ut>641HTb(JK2s*r~>endstream
endobj
50 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`Sh(bM!;,fa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#A2MA-a(rHVR:D)FhU3a#MVn+@6p(6,SFQ!,JH2MH_7OtUjbJt$1U9TU8;~>endstream
endobj
51 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3259
>>
stream
Gb!l!=`<%c&q9SY-t'<1B#\PjS%%S&Nh&-IBB%Rt%2LX*cr<YI6BN7No's$#IB.XMUj1%O@"G^u,155JlFOR@Wbr/!rmLFGB*3*2#O*64b$_pdWY-'/=)]lYqWit"1KBFuVC&?O=?9lrC>aG/?WnhE)DUdhIiT\D=u'SUKD>_M/3^8!,m.(bPgeN'"g].c0-FE00eD-/:4@ci[rc3GZl.N>KL]F&'DMl`:*AON:QFCb08#(5ZaTgtl`WSOqg8e[*dYX1KQaY]O!0>;+#d7U8SQJ"(#jY@8YDP@<i?56V,d^AZH3eT!MW]-Cm[HrNEIaMeK4P]RO'5g#bt(K2cRU._=CYQ.=Uk;peo9LP*/b;q3f!nCP-^dFoYge)Pi99e*5l)5.[_G0ecN*@XHt.J15-r/mP+/35TN)!g\(\FriW6VIU#Y\uZu?p?S1E%D()VKemmFTc56/d42asi5F'g`Td2r$aNnD$`(8OPoslX+_B.j$MCd^E'LT@2t4ZV(]:fP.jGG&43$dEkI5tM"LdL0C?mKsgpn=,1j,g)k?1W.Hs"Bc`+rPH#@ZNoX-[<u#B>@3*X7c%Lu\.@5O9--&(/toPmN(h,$Y%_DaG^!fjT-?hEFKn(Y;`\s#%r\"h.5od\\0@[h%EMr^,sjJa^:fh<aJ0Ea,QS/Nl$f\;u*rYjpO&4d%Vm@*+t\Nn=";(CK>foO'c<\\FNkdF4Lj?X=hl-TcA9o<Vpt>\#:BNI'Q/b%MS)p\$tKoDOI?rO],V?Um[dn/-)pZcMj22+IZcVXuU\26;$2IK0a7i_G(cE3jPJ(m:Qfil4G0M#-IdO<3O+hYqLL^V.DXN4(m_*bX9MO^)#[]pis[6e;^t2J-ujYL3l]L#ki&s4\,?RA"@0R\)P-Nt?.j(!1d.92kWH_/24U=8so)r[dO#<G&V%_+\2R^o(WAZ[$*^T8EZniKXFk.L%S&<sJ/n(r3&l!<-%.@+).ci);PLR$F(+/@p5M(]C1=[h?XD(*fj-%J"U>&7TD#"J$C@d76JGQD2`t$'`Msfu(Z\$.BWqB7`TPB(`A^&<U.reic=.&FWab/9IFb9Og4!<0T`#HR;S+1sP<WJ2So)2"hYV70G>GA:F&Rh-)4X+u=CsC<8t'GC9C=*=59MZ'0hoY3j<uLgZ*Ue$:CAKo3',!S&ob59N4PI%Gik=/UN`gh2.%q/3%Z?gu65XSV,ZGET+Qp8O,M),IGY-8+uI7>@\r,N8t1\GYM;B_e'pK(832[h#(rSA70W_Y?M3^a(7"q>$E]kR]tEp\a:ld-)G#:Nu*aX:3!=i/pMaLG0(,?XD"TF`s:g_@H?Y.`-UIa)S+eU#.8<AE*GWA<Y(EP9:Kq50;d8lT*hH(49h7]`c!`aUl+lK6$".rsqT@=WSle?Kh5*0M&-9$po)'&J"g0-qPHN"=0Qu;Yj[>!e3cW=h':V5;#2SYM[")rWHH_I>0]m@-=G)%QS&`!A#Fh^g/pU'CSj"cf>$@n(2h]R[mW'';ep]ge4tBb=6'M*$9"Mr4fX?VUt)l5u3nD24_gCC`Pe81?bdbA;a9L)@+Xf1J%3hqsdCM;0@AJhn+eTm7a_P1WZe%#1c]IYkFsc4nU^HQaH46]Dtm`Ep5X(1A%U)G>-KO-#*'sfJOjn7Em;BnBd1_:$6.6FC%e7,(#c/ROW7#lGL1tJ3PO];=ps*F!#B<G5\ZTS[;IRBJVU!CYKmf?%:XI6Fa_B*7jmm]0gF->^5fGA#q--,aW:*h+:ALf1sdrrGRP2nN)@1m]*hae:(+.8ltcLTmIk%f,UdCjh7-K&@mU!7`<.LibFbRb"WGo(?Ua"N,UF8_?eJ[lM.);>X]O)I7QG-SaEUJ]02]ZQelUU3Np-No2Bup<)YP^MC"JtjUr81ca5?[bD1JTZaHQ+M\o.UDL/5e_bF(qDL*_.>#(I;O^J<pK.+S'bd=Yg^^h&Kf"?l3ZQ4%qA"a_p;;0VVI+!6\#hI6&`[np7#dJ>m?0!@\l2%XXq^1%"lg9<A94>/o*[=^;?uOd`&J@"$M_."RgiWKS_0h``s6tT8,$3kG5duJ1N,FWt'XZCMFK;g_<29>*TP@3W&;;cs3)>u:pQe=1Y1)1<-U::P.`WU;<6CoASc*+3f6-l_f(K4'F_n7LZhD71pol0iB>VK7K;'oE=sNf-R'DWp#eL.5b,.Rj5'f8>%R&E`pJU%n5*jlVE>!8<dsjtI\Lp]YjhMP!RTB0DCbF.JfA-kCZ@I]H/EA`pBW30>Y$]Zm3'E0^##830)"3g[A]c)"NuD!@L7j(*-`@l=&0g4:DHa7$%+AKDh[.>n'TG?/rf"I0eC6!dX3PoG9NA>d7Ink"[sNjCW(Hh4-LL+Db>f"'ebmf-<a#=+/!l790h)V&)"KX+;pK1!0blI2%]VM.f\r29J5WblNgau`STofj-DArU5,D\b61fQA:n"<,2#fE?r07Q4:n2)b55Iae2o-^DGDS>Na!/:eVsg\ggl"KTGDDAjE5E$a>kR=@P`EYG7c-5oCHS)Pk[I07(1.PWUu)4P#%sjs.1X12^*Z7K#R4/EQVP`fL_TFeSNB.];m*gN<jT8$Pb)B?l&eD\9<21I)"lmt*UC9PQ+BcX'm$L4,Fr"RK"/*WXc$-4M!ID[R@tpH*_sF\WujHmGTFgZpJ/pVA!Oq)gqBc@'rr=SFe9U/9$7MSM[tO&k@<aF^d6UIR9JQ+!5$L)m+[ND#@Ma;<j0nN>5QtTF;aD@4,DFHaY3^;5)]Q?PC4Bd_SF2tr*Z`mW][5f8e0K=7MR?3gF'Ji3hMTOUNa%6..5n`9CMe@Fg>^^!PLHgl+P9-`S.BbP(V*O0QVoA7b(M`]4-&fr`aA@XJji[>ACf;oS9R7/OmfCC)qZlSmMEt.0goROnE@Vfa_;%)g[(K+Q5@$;4pXtQ[-kFoq'o$@te@N#Co6ZN/=L`n&GNNZNbnRAK2gGkHtE_$COZ)596`0>*"iO?DO/GTbFD(7Z!g^pB<"CAu:T'a6hjX/&&<[QaE%GgRGmbIKpL@NK(o$iat\^glB;RME&Oh]H6YiEW&m2^;YZ\Uf$KF^Pa/j@dE+LUr?nC.<Zmo`%;'AKdB4;W)>c'3s+_Efd&%I](*2%MfIj?X'[?-F#X(.T)B:<POtkocYgM0Cds8hj#@XuJ)q1P"[S;dbC(F_i\amSYaq>j.uK9(46b.QUo1+<8`36;G`K.+d[R8R0&tD8qD>%'%aE<?G"BTj+N_GeAU0_R&8EC/A/`k"MG9Eudm*u0`WqP'""bArS,~>endstream
endobj
52 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3454
>>
stream
Gb!#^D/\/u')q<+0aOqad]6DrIrRXu#J9CI\T8e#^]=KFRTrEX.$@k6QA$I]rFVDUqlAc\G;U;.g?$WHZa2I6bX_pEIq8)Q]*3G'%uY3@A-MC&+DXAtqtG&PJ+;-EI%4nQ6rIS:9LZudC^jah;'K/#WiJBagQ5):LoDo5-3IIZK_V"8JYq0iOVIu\Z3lQ-l=X@bru@pREn;!LQIDN&qtQ=dNNT>IB<8-^Q'_!6Z*$>`!E4NEZli8_:bu3!nO`G/>X49eCs)uurr2988N.37nF#R!gjaqQTD=Ybj%m4eU+4*CN,r%7UN+dc\,%jEo)?ntdKFPn<?*/miIi81I*ZquoH@ho-gIT)B+OpX`V;VE$'qWDYBN84CHmN;;$tL7bFE)FO,j+*L>FTA`%`ObNk$uL^@%8iJnfb8*W)O#T?/G9#34I_V7)'a)26"6/""^sB,_(4=l@:@2S7#,\,r3=a!-BO&2?]cgV==a%g&D;h[4l^Flj0,rKZE?al5m\E9t.)?6&#Q%fa7m$h<X>nF<`D-\'qO;9'Q@N2eFtYi(KS0=pYnh>:VOL(KL/@7W/309/\mjTECna\p7s8,HP19l^\T^,l?FP^DC!\\5NW0628@)Q(<E."rDiKM[IO*<Q7ts*qU&Q==U?%*d[R^KqHlp:67AQ<k5s!r+/JV!@,@m:3,c=..IL$jMO1!']KH(^);jpll;^l`U`T;a,^Q]eY+6fmogL)6@(sio-iQmu9-MFCJ@`KI<oN`&)%FH+PHF$;lfsRT>F3i>K`Ms4qt>h'cP(CD(RF_K;p(F;l"pkTodD`[K9*\(r>Z4AnH1F49&dfkXTa_NJ0jW6_p%9_1T"^4dI!7@g$Cho6So%GN)8g5i.?)#<r6?.VnM1+X11>Qn%Rn?95A5/U8qb[VoKBSAW[LXF]aJ[ONKS,)9:<QZC,5-d;rHt5h:@N-O+`O#k!$D4&^B<5=t9ASpn2MUo^b)U#sA--i>#BYPZ4FQ2C*K-\g\b:,cA.<kCcF>PD#"!4%"KtZXk9H9\<m3#P_O>i>E@>X;,`!pE:P0WAE*V+UORK?@SgL/tM)+i-(iN=kJgJ)2N-4Wt`B!]F6WsP@cN=UTosjSqD]m?jp@e\h8>ck./HBqE',\3$.OBA\"jNer35B#8\XsPr,YjFhk[iOWk><lWqk.XQ4S__cA$5/cWU*L&'&+5Lf,$]^U3!IS=\6rc,UssBP9fe\QqjkYbr?H[lRQj?H2,I3190%](#>ejP^VCVFd&]mj^Ndge<MX<WQgQ87YPt0)uOOa@LN@rcUnKSqVp#6"iQTWr?U*'6g0Q5.&.r?_88gl,3KR0;'6dV)f<.#),?M&WGu"F0F`o;XT2hI[a.PZs82je4^LO'H%`A_8cC]+pm)T*R;[3kc4I!C;Fu>"##sim>mt-1Y70@<-nE;.?591EZJo-&?<XFG"u-NjmA4e`o&b<d_]MuN>&<;ob2seqghSDi'c6'.H1B;kd`?J>B\DVnp0B$_YiSbCaX2%pE_$78V#<il9C8%NBf>W7Jn:.<M^TIFpgBeA2FP#oH>$$FM4h/O+_@%L2P_mj4B;/\j/(l'dVW/F[U/QqoqA6@a#od1F'V\4C@/mf%tNQt\Kugr>s-$s'4,beI-Qi6co!*JSJL`nd!:^IP+WKa/XhD-0^<lfoQF[.?lDl)/BaIE1X'7bk5PAR,?bblNofRUqm!5?,O.ht>2-UU[d[ej?+9<!b1N)rJ=5$\!HZ+'JSO6jI[DmG0IKU?`n.e<)^R-E1eT6fn0+Q@fEhd9cT*eA_l]YMpqK'2V'(^7cY!TTL=QUm\APgBXY@UPWK0+1@Mn,q3lMhI]%#o@`_Z,cKJrABN%&5<S)$3p^itr:bU-$E<pDs0L[+r(1JFAeV#?`e?G@S")+>Ls3[q@b>DG4ed8_jc!(M^R3.k@bF`0DC^(fW4n3=/c=?JT[Z/>!dr;C":-0\m&HBB^MS4W0QDe_q%.O^OhcuSbo%>@Oc%&->!d2TJm>:CnhCkR!hL`?rM%kiVjI"'?8IIT#cM@NRd;75IOrmX;uHd4$22@+ZrLNJQ#oqu?`73JNFbZ"<,7h?arGKqYBNta;f@q$*9N?P9i(dV0PmRP\^Lgo+2rrc%H-Ce3%0aPGT#)$<4ZV"UIZ-Q"#aXoj*0+b_i[6NpHX2oM/DB6_Ms-;cFQm?0&O]CoaN/Q(!dLF.tJ&9:eD@h/WrbWkgTF"(bbkFL?Wd2_8D;96KrDu%`<%4\Id=.ljV(8=+.b3sU1=f)S`[bFM/1>42b2B\5cNfL)KP^>BL%"4`9$].<.FtK/'K;!:Ws@^<BbW.4l=S_uPWm8)=gbp,=!7^.RKsdDkJr#JG^&hBq4l(r6n[gXlL]P8$91ItD-q48:ek$#(jP%[k?I)\ot:fi3(!J@d.nP4DJ`/k7<@fafreZISES,&>dp*PSa'7A;/>Et>,JY$<,L;*k@Lbc8\I]r@NqFA1BZp6@-F"o4XV<+A!YMOD]OiYS>8^pKrr/AB.RLDY*Taj6g-/.fZ\%g%l,Oc!,c3&@!]qF@Q[70&8fB_Lhn%/Tj(Bj@`!tafd):KaRi7%&KE=DTsL<<+&ZYIX'>Gq)$n89$=!&ZZKj'QHtcWBWY?7ikki3?6a/,p'kPFs78c!DFuNd0C-tRXVo<%Lm<Yb?mRt=c@\<#WZVuA3VqqfV/=XRE+O=0(bWmLs9;\dsMt<2bA>"9u"@k81ZeHC#?"lZLA,<blR()5D<`8J%4QpV<@8:O,e_k:G,6lK?m*)(,lMf\F`'=/GUJ>/K%<Wp[nENL%TJO-G<]&P;-Zgh7_mr/\=gl[qm2OeOMZ%4W>4@/Jh]bY>eD5MY&mo/27Ji0:K;$_ADO>'eE)Z#C*.%pblE`"1WRDe>,(NPE4Nrt"MX8%0Ii<5eU"em,h1iXC2=OV>li&R#'o"n%n:,$5g,Yr@=3dO]!h#&@;94JXFao0^d%GgqH((6kJaYT9Tf]nn)3C?,rg"k<hi=8W79a&j%>ct)Df9ROs+bEGHI7qj?<-`WU;/hG/`m]Fn#YV]`FeT'g2RX9ok/=nMOI]A"QLDYU>K%]VR\Q21:iI:>$n&WP];'tguTK2)/m7+=<Kc#'e($n2PDk1'j45sBgl&<Z>/2jX6`^K[6.,aa1c@;b?B&m\>\D\'\1ZU/B2sX:fmfA0-9]Sh@*2Gd"iB?m`fTbK@i.IWSF[6Z\u:TFT@K*S6_4_[[J]FF#1"8pG%$lKI`Z@.=ltbS8_2J&g]$Kq[H<?R#?-P?jMc0YP``(TIGRXMo'U8@a0k6_DhR5Q8.8a7j!Ge%R]!O:!%rY9JqEWU\-"!QuEfS:/!&f!e4,1Y7=L"\ttXXf$<(l$XfQRKR!\.O$5-^rgeZ:*a\g7Kfe#o2tH1ajYD2eo,DpsK3@t\rMmVajg%`O-`2W\_1:\:P/.OInLbe1Hpq%@22Q-X:<?]q)3N^kb^]ka2(<M7?g3F"P5~>endstream
endobj
53 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1947
>>
stream
Gatm<>Ar7W%"?O++:8Ou\ja'hH\XbcCV+bfh7=oM?31h@UEj/_bE\T(E,bgRTkl)tm:8q4%[p%-;\]%ir(+d.'E>0)1J.ZX7pqih?r7b8_/b>6UN8C9oko+W/a9d`$XD-]hm&#PLCUKQ]t0GU.V-\ZJkn"eA3I75Qa7`JZrWYU+`UqTiZ8SSqVN_)HA=]"hRk9-"2eNPLeJFoKk*TW]F^533AXd/)_@IL&PjUJMQ:!>?T]fs^"4t7"f$Lmms_X*#n5;p"p0_i^GE/aJiE++n($<!s&C<kr1EL=gOm<km%"J`*!!!>A84:jk`,:D4C5&Ch5X"$2<S^ulafP6D+2q%k97[OI9RdRPPDlRlc?1EYY@H"J_R(7Uf@CH;h(F+aV*ek0&mE>j+eVVJC4_`KN=02e26JQon#Adqa.a1Cm2<Hl>*T7?>eO?;qH@G\p=K:r#i<+&`P6%M?RDSGZMa,@gV"VHkK(hVA,aA^Eu`!>E9*`M.:JDbR<7go+kl&V%KK0_Ma`39u''sLFg$qfgM_^_Ql#UJ0N#1Kc7^ThEESH8[rA^/EQ&)2R[uT/l+,D+P%Jk\\(2ki'W[J)1Ml-9ZHG_&F`[%NbFZ^BkC^hF=VZA!:0IC>2ZhJr$%_(VF0+HcSY$i)FC09PBLOmeP<l;a5ON!1+1e]Qpj6b5d<f_"hRMhUp3g;2T'LuTIgkE&@!c""WSPRDj=1k)udm6[G3oSBGshIi'?kf"m5QXnpR;C*r"tOC,hJ2;un3+)-e52KkjEA]WH:#qXl4p4rg.9&%`!-N?@ou9+1&7(Y^re#Fh6lltq,6b@V`r<iNUfbPF23)kG;r:m$_.65adRi//iVS6_E'<]P_?/".IeOIb:DN+nbAs,>PNYtXG!Ae3?n$+u?`&2<mn8<>JYI)'@8Ea)Z,"sNNfDtn_N=eo=_J"7%\ks;9Z3=Z8+6h;M^D<\rJLuo+UKk](pAeHWTD?r9DA1H7`7=VRFMEBVTj;?`e7;l!\#[t1"8o_7-<k<ai$3',8TH,l'E3uKZCbDpq5pM@s^:7LH&55KfJ9BT.JTdjL2TE:p`sN2M("gg?ER5):&%CA7n45gqj[^Z5:5;ALf'Wi@LpgEU:&"gY([3u@Ah]4,E-#((0fQ6]B/`AuP/W:??^2aafIB)qLKb@PlNXtVg=[*q8>Ks)[(S$=gh9>124nW%3*1%Qo(s[EZds`;JAJu:nj_^li[$>e()_S$WX1D&ZW5",rpC*O^'oa6]MhN(:5'N:To;3X1fdNo%WE`)X@]oNB>m2XA,h#q,?$4WNk3fF1MkkHF>g]k3WJqs].C>fh6YHQn3_slAWPKN1&CVacOgAIK"0Fp:3`@d)PUA^a4nF.F!9/R.XrH!3\GsO*4&Mg15WdZPDed2M!`X5FpRd=c""%pdZqU@)]cAXO(F6bZ9Z4c%/F6Dk9%]RUcm28>]:[`Yq7[4C:cA847l32!91UIF=_iFc#B*:UV.hE(A2'c;[Eq&dsY2ps(W.dBo&G(PmAhh3RIc.(STWQ74Z(5fpc#&B$no?gBP^!b[5k.VU`Mo<Y1QGN"[AlL^ga@;Ll67hCkUu\%,V=eRgaVH].9mk'#7MhS@'ro=Ql/R%_B.4o)2nlNGBNB=_m8SL""5964WF,NFKT?/qMf"-p,2Ml7b5^+,mMr9_qJ#1j1JdS^KM_'EX!mM^N5':Ji6+hBCIAC]/?1-T%Dpd8BBg81?:F9g=L!lYt.GU0#;T#L1]E-OJn:Yn(gk]:9pCkDiC]4ra@&"d"5W6XPooYf=P(i]%`"*CHPYa3&FZisI$`5NY`53)NANs*sV>RT9Ch`pdqC[[UtTDkuk]LlR64trK#bpU!Fhf90_okKRJ)@u=Pq#L5`nGobm#F'sC7'sh]7BQ(6-5q'oE65o6G:^r3T`+i$;Tf8pMX+/W`4YG7!>6Z#M/-6[fpMV"[Mo/PaO'f#PjeU8~>endstream
endobj
xref
0 48
0 54
0000000000 65535 f
0000000061 00000 n
0000000146 00000 n
@@ -288,44 +339,50 @@ xref
0000002285 00000 n
0000002433 00000 n
0000002549 00000 n
0000002862 00000 n
0000002968 00000 n
0000003052 00000 n
0000003130 00000 n
0000002655 00000 n
0000002739 00000 n
0000002817 00000 n
0000003023 00000 n
0000003336 00000 n
0000003542 00000 n
0000003748 00000 n
0000003835 00000 n
0000004153 00000 n
0000004228 00000 n
0000004321 00000 n
0000004459 00000 n
0000004568 00000 n
0000004684 00000 n
0000004855 00000 n
0000004967 00000 n
0000005086 00000 n
0000005201 00000 n
0000005335 00000 n
0000005463 00000 n
0000005567 00000 n
0000005698 00000 n
0000005813 00000 n
0000005922 00000 n
0000006004 00000 n
0000006969 00000 n
0000010286 00000 n
0000013787 00000 n
0000003954 00000 n
0000004160 00000 n
0000004366 00000 n
0000004453 00000 n
0000004771 00000 n
0000004846 00000 n
0000004939 00000 n
0000005077 00000 n
0000005186 00000 n
0000005302 00000 n
0000005473 00000 n
0000005585 00000 n
0000005704 00000 n
0000005819 00000 n
0000005953 00000 n
0000006081 00000 n
0000006185 00000 n
0000006316 00000 n
0000006431 00000 n
0000006540 00000 n
0000006643 00000 n
0000007591 00000 n
0000008486 00000 n
0000008716 00000 n
0000008944 00000 n
0000012295 00000 n
0000015841 00000 n
trailer
<<
/ID
[<5381a07cd3154e970925d8c0b9b894f6><5381a07cd3154e970925d8c0b9b894f6>]
[<73a81a3ce178ce7964b1217079da8449><73a81a3ce178ce7964b1217079da8449>]
% ReportLab generated PDF document -- digest (opensource)
/Info 27 0 R
/Root 26 0 R
/Size 48
/Info 30 0 R
/Root 29 0 R
/Size 54
>>
startxref
15754
17880
%%EOF

View File

@@ -1,5 +1,24 @@
# Crash console — open ingest API (design)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-23 |
| Last modification date | 2026-05-23 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
Triage **real device crashes** vs **synthetic / bulk test traffic** when exposing upload or query APIs beyond the Android app. Builds on RBAC ([`examples/crash_reporter/backend/README.md`](../examples/crash_reporter/backend/README.md)).
---
@@ -10,6 +29,17 @@ Triage **real device crashes** vs **synthetic / bulk test traffic** when exposin
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 13 0 R /F4 15 0 R /F5 16 0 R
/F1 2 0 R /F2 3 0 R /F3 13 0 R /F4 14 0 R /F5 15 0 R
>>
endobj
2 0 obj
@@ -17,47 +17,47 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 716.2874 79.46904 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 762.0394 79.46904 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 705.2874 139.949 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 751.0394 139.949 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 694.2874 180.413 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 740.0394 180.413 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 683.2874 140.389 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 729.0394 140.389 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 672.2874 181.269 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 718.0394 181.269 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 661.2874 74.58104 672.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 707.0394 74.58104 718.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 650.2874 73.25304 661.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 696.0394 73.25304 707.0394 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 639.2874 149.717 650.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 685.0394 149.717 696.0394 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 628.2874 121.269 639.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 674.0394 121.269 685.0394 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
@@ -67,27 +67,17 @@ endobj
endobj
14 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R ] /Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 31 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
15 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
16 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
17 0 obj
<<
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 31 0 R /Resources <<
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -95,9 +85,19 @@ endobj
/Type /Page
>>
endobj
17 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R ] /Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
18 0 obj
<<
/Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 31 0 R /Resources <<
/Contents 37 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -107,93 +107,144 @@ endobj
endobj
19 0 obj
<<
/Outlines 21 0 R /PageMode /UseNone /Pages 31 0 R /Type /Catalog
/Contents 38 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
20 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190936+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190936+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Crash console \204 open ingest API \(design\)) /Trapped /False
/Contents 39 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
21 0 obj
<<
/Count 9 /First 22 0 R /Last 30 0 R /Type /Outlines
/Contents 40 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
22 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 23 0 R /Parent 21 0 R /Title (Problems)
/Outlines 24 0 R /PageMode /UseNone /Pages 34 0 R /Type /Catalog
>>
endobj
23 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 24 0 R /Parent 21 0 R /Prev 22 0 R /Title (Payload extension \(ingest\))
/Author (Android Cast project) /CreationDate (D:20260616121123+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121123+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Crash console \204 open ingest API \(design\)) /Trapped /False
>>
endobj
24 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 25 0 R /Parent 21 0 R /Prev 23 0 R /Title (Upload API \(POST \203/api/upload.php\))
/Count 9 /First 25 0 R /Last 33 0 R /Type /Outlines
>>
endobj
25 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 26 0 R /Parent 21 0 R /Prev 24 0 R /Title (Console / query API \(read\))
/Dest [ 16 0 R /Fit ] /Next 26 0 R /Parent 24 0 R /Title (Problems)
>>
endobj
26 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 27 0 R /Parent 21 0 R /Prev 25 0 R /Title (Classifying synthetic traffic \(heuristics\))
/Dest [ 16 0 R /Fit ] /Next 27 0 R /Parent 24 0 R /Prev 25 0 R /Title (Payload extension \(ingest\))
>>
endobj
27 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 28 0 R /Parent 21 0 R /Prev 26 0 R /Title (Security)
/Dest [ 16 0 R /Fit ] /Next 28 0 R /Parent 24 0 R /Prev 26 0 R /Title (Upload API \(POST \203/api/upload.php\))
>>
endobj
28 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 29 0 R /Parent 21 0 R /Prev 27 0 R /Title (Android)
/Dest [ 16 0 R /Fit ] /Next 29 0 R /Parent 24 0 R /Prev 27 0 R /Title (Console / query API \(read\))
>>
endobj
29 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 30 0 R /Parent 21 0 R /Prev 28 0 R /Title (Triage tags \(implemented v1\))
/Dest [ 16 0 R /Fit ] /Next 30 0 R /Parent 24 0 R /Prev 28 0 R /Title (Classifying synthetic traffic \(heuristics\))
>>
endobj
30 0 obj
<<
/Dest [ 18 0 R /Fit ] /Parent 21 0 R /Prev 29 0 R /Title (Implementation order)
/Dest [ 16 0 R /Fit ] /Next 31 0 R /Parent 24 0 R /Prev 29 0 R /Title (Security)
>>
endobj
31 0 obj
<<
/Count 3 /Kids [ 14 0 R 17 0 R 18 0 R ] /Type /Pages
/Dest [ 16 0 R /Fit ] /Next 32 0 R /Parent 24 0 R /Prev 30 0 R /Title (Android)
>>
endobj
32 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 680
/Dest [ 16 0 R /Fit ] /Next 33 0 R /Parent 24 0 R /Prev 31 0 R /Title (Triage tags \(implemented v1\))
>>
stream
Gatn$?#Q2d'Sc)J/'_]eBoYCX_sY+=OXa@HVU2qGP6Xij%@GjE]DVOHaO_3('<@3@/GU-tO'`tN1SEB&pWY1<cRDPb$lFbA#qR2"V"\htNh/aW5;NR:'SeLF.4(Z3$1L.f',kp($6UOLW/Q;KO=(&2],KXslmO)%X\aTO$X3q_>6.2BM'NfQ:NIB1=QKn29^U&-_h)q9VU78coh%:Vf<[P@N-"C/<P>oRK(LFd+5l2:M]hUMCmVXV7`#g_86HQ[3:G2("UTD6XPEr(6ed0=(f.95i*gg+ofI2V.R3G#"!Eh]a0GfW4@-43K`97PHF0!1X<"5(#F]=lXe/qOhXpleKE$FLEUY@Dr*c/mbSl_LqM8$(R&J`ANQOQe_@=-*e<hl#gc;4SgE9A1LB;a;3f[L_c5u*s-8Q)YW[T<b/ju/&l,=@O-R16!h<_>q"J.R+DYJ*NX1T7)Uk=6"Q#l&-M^JUE>Pgba1';IFEf'a(>j./!*KI[:?stf)fN`'fm'f,GK6SfllT2MPlqoni+c"K>D5gPS]NVl>L/\W=<3-WlLDSObEukdEEd&'r^:g_ik1]M0^lm#Qp1>V1YY;D%KQkplEE;DgAn*Xql-FCbH_-bQ3pq,n5<3sGp'DfkR!kC>9;u:+Fl3Yh_/5X\=H>2?D6;B^lDu\jOgD1,kVqrb_T2~>endstream
endobj
33 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3332
/Dest [ 16 0 R /Fit ] /Parent 24 0 R /Prev 32 0 R /Title (Implementation order)
>>
stream
GauHND/\/g')p`p0qSs$hHH4UaY+*\6]u&jh<dkDnRD6FJUj&">E(26Um/fA\Gq"F;H=K7Z737B\4n02)NlnoR:dSh!?47`qAF)L/nZm5`<"#5fb,:NnmM.lY%OrP]lK"%So9T8^?ra]4L+83eAM$b)..JX=j@Rj)fTW:Q`j&5'.M7.+23?`N(7DIi='=*Z.[[P4\eQW+ao.J$3;M`9h!I)&C?%7;1D/RPAEt"."D=Lo(X7].Pf()=Y?JBrqbZD-:"2$-DG#SGoAIO!orc%VgJjg2t$o$ka!M<TM2jd6I);:8=E_$R7D6FJ0j^Ho&<7JT)Af*H*8%e'r&^@:Lo[/<".7`mPmoYcR9kd88q@gE:DucipFd%CD5:]2F"Nk6;cWii29H8^?+)*=R*PqK51q:[aX)A1q!7TmiCUGZGs=93RD2J9h(mF6TF9HNo/^0SX(;]T&WAfEF%rjY'R63c4+EEQu7S.WmH+kEfciFl=fDBY4U)cZP@X9gRC:b0mo)>+l,]i6'o*-%i_g.S'SQ"r$0mHLc/+(3;dssq%G;g[O@]qYD[K#d7\hQ9n5G$R%UN\K&.Rqb4E!l#`'^fRCIt<<>9c->%d/WL]*J,Cl=Luk_bQT@YoVgdL\f9;!gO=Cop[AN+2En!KU*dApFR]p12f!Ah.+P^t=''Ku(\tdp^3dNUo:E7F]7o[1OUQpPQ:>PoH42(eVXsjFR_0a]<9M-+6XAEa5.pf?:1JP*E9XRZJefosg,=N#G!PLD9.iBs'>P#o-ncB2"VK]:s;E##8O,J3IO$&SMoHpZ,dO2Eru7fGboP%_LOU/jbMXWUp=8cA\UuQp/k6F\.L!=N&R3:WBk6_F(^0-:QfXJ!lqBDOoWtU*o%urQ=IXHf>P6+]uYHa<"-m)Z/sPF6%]^I*HkT=]<Ldg_'05a`%U1T2;?]'O?IBVCn/Ik<]&jnIkOY-5XE[e4&In=/Q&=h+O43Z?&kB>5O#(WD`[J;TGp9F8V/3O6u0<JnNi&[`TWE;p4^$nHj5#;Nd\WejNTsQi>O<,'RKMU/r@4DZWS9S-SFS.TL%:J5[IRA:/kq%EdBrhA80%S%>!\o:FMeVi3DM45`"(l&t*^DX=!h"tWkKP<4ps[<M?@"\3oIo#aPZ^+))T/D;Zf`">_L]?%d+NQ*s"(u6LqlL]g-0;Vpj5e*^rM$l'"Iq=N?RW;2''[IF;/Xa[Ec""?m^1*V]Qlm@MJj>eMaC`U.W%9s`?ojr!IH0T2B(-c=s8'm,\7<j/T`4i3YHKYC4RV5,juM5V;[g.8_6/6*^\HN3mT8Z#/-_;+V#d33%JWn:^jis#N;/YBI*rIa5Lak>,F&f$84.a"[4RlkLSFU*[Y4$D>mirA3s,.(Y2pE>l7qHMBW;b(^bueY%KWK#c_3j"Zr;l"[:iQ@/F]gX6%W_.BYZ+5e3E7>/">M.RfT>Ua%iV4cH,-+A!k.GXhMJb7k)bO+aRp'\N*L"@WB+Rp=?B*OJV!S>pYb91a_0f8=sQT5HA9p`p90q21c*M/JhJ-Xh_et?Nj*rC1G3QYbDFmjA.(\;q%!nSt"BL[u]2$BF/^skn:mP1%5gnY:P1G>!pj]*td_#\!JjDD^$?(JKiI&>E]pcPKF:q!Ur<2aH_TjYMN@Bi7ta=!P8+m_dP'$VkorkYau/#pTPWPS)Q.pj[u@UTh89MPH\s$.u%&0P4c#BJ;*3(Y@7+m-uF&-U71okaE-.lkR>&>AQVjTH\-&^LgWq96q2\EQE-A(OC7&A[&XCG6cU`S`FOBNJ[Ju-asq8+RcelqH%L*frKm5PL[KGS+fZ84Wl:)AD:%5%kA^%\#"T<P'NLF<"Le[5R9ZnG#C2MA,m\UO2`GN(eYkd4n]#I9'-*&iN`?T$C0\86_dVN8X2lde]MQb4[3[3ScFUMIQ^^[i%2`Nu):B"gjLjOU"=60lJOn>:HPp97^K2b:VNIC+M-WU.OUp7`NEtsfWka=(8j\J8[C,qg^QO7Ws!!I!^XI&ujV*HD%8!%0Z)Y!km=*&C'2*(\IWc2VKOaYmoWA`WcIt[G^2pmG%9q>,[AV"toICA+c+4N_Ot8rPW/0+ohXRHP9kZSfUioRM)9+"SnlO7hJpTipc#]b[VMD4hgBZ%e1>5&m:e!b.p.p`!ZScV6[;.MXVbD,81.5'+)l8Q&V_t/WL7V\=a:Tn6j<(3lRb=,S<(o)to0R=N>B<4#p[U8Wf9HiV/e$1.GB`7S,C=Nim$jNC9[kL%F/m38gj)c+rd'PZ-,M)2lb?a+ei/iqiS[Un#(BEn^=?3iAGXC2+ek$QlLE.>dc#o9-+1g8E-9tCVKXf%(1a]O+_/eNm4Ctnj)6E0;@V7TL]4]<P.Q8+8bV;qnRZkk=>&^O>aT;C7NnQFVLYC_q*DqkIDLR97,`V)9\/#A1D7YDAEaaS(4"UVeg.)OOkuVu^i3K9(\#P&nL48l1EI8cXc1C5UI&40W\l9(:d,RlB]V:0_m)(i*]Qh5\mro63ckQPJ%gD<P`HBWUJr79lkld^Z$8PoQ>Z-#%UIqkBI:@3HU)IFn,-LE>Ero,Nh$E:O]<FYPR#grM%=gq[jgDe<f%,lKB6,oDL$>1bT"6A9lhrc3Y3Xj`LYYXq)V^bMu!7e*"o5m:m$Kj#_EN..<fSelcPa.kub@[;$8Jtoal2ZA(^(lL1n%[,*pOp;i#sW+kl*q_^'XDR:'>;GB'DR3ZPn,2P=2=NO0bXmo?`tEXidTBU,,U[cUPj=WC%.3Z(Ma,gVFpP$N#&]nUtX;Ck<>&i[.=%BE&\>t.VQDSmT\BGt-J&1\qEgTm>JPM$Hohm8O-J^3Sem&i@n<K(L6FgmRbdAV5`*D+hSnlef%56fP4-c-QpRE><l;;:r-KreJsjRR]up`Rl3rE^9gl6QHT^hk$6WP?c!#=?4o&H,:/,KNQ^D`AE.U77@Vdp&7R<V/MMVJ'<`0"m4?5/f"-\Ha:[)*U!57'%2`nBb^$3Fet]hNR*tJX+iiQKUKA2h\nM;.(hqBaX&+Q.f^uV,EG<i*N9/R?Ae__*s6A:)+pd1@8LC?o[S#`F4V>(p8)ZpAKY^ZR-M'EG=>$Lni]rgH7G2I,<\m:d"YkGrncm[4#=ShXJk/X@_NP\$C@Gjk4Cj=9o:WYK]=l\@6F2p?2W:(>&L=mRVLFP5!upBOP0/K4=s=`Y3(%h9[/kP.qjK?cMFE<Oe^,SA5?paf$l_L*Xf]D#[YT$$g`+&LE;u2S-Q\<p+UY1&4%=1,19&?4[DJI(NUnpLA,nF?`do,P#"-6WNdC-/U</:jKJi$$\jNP'[`2?e!$\Qre[;op%/satK2V]3>5h$F*Nt<f#49)SGng2jqA]~>endstream
endobj
34 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1580
/Count 6 /Kids [ 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R ] /Type /Pages
>>
endobj
35 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 852
>>
stream
GatU3D,]IQ&H88.Z,;>Tgg(UuIYgFIl/[jEV597]l*N7CP;0>*(`^_3f`t3Kr:[:0a0A?FCi0:WBr0Wu=0$aM.Ob'hPJ=F=^rHb'5HCGTR*7kHM%5_B(f"7A>ACUp["tHU#5"jOs7CHhQ:U*b>dSl`e?_D!qLkluKT<&uaC,"M7J`n0ZZN-pB:DS)gSU-?K>'XTej$)L--c,B\h0D9,YGQl$Y1oI,CL:q%Er,s\`+)V57QDQ63V\8TJ-&KkO'")NaZr=PBTpZ(]8)+;N2;f0l&7>Mi'a2:Z0p?ZU_V3L>EV_aR7_4WWTetmLnSF\c6.B6-*\4Lcq\Z[4,jGqs6#r>'`ht5C$Kf#J)V%^4\KW+^2GY>Tr+_jtr`3;uAh?3[)D^3:Y5+o4n%ub=:/$gIF'(2RC^1X;#Sl_!^!sMo3VO.5)hd4p=MQ_Auk7hcq4Xqh!]bGN-DZB6I6%kY723X`X`<K8i0#Z;@+m&#1`-I`:4A(9qOK2cQ`)O3_%KJB+IG.BlE;[Ke`NOk2EMT+>tI;P$t\Bj@ok4kB:X!(Uf*<qCnC7r&-+m",4-CB9G&!rQ1/Yl#7>3(a@=p=!DBbkWC!p8)db\j9$5;"-SIMtD=1;FS&J:b4r>"ZoKkj-uP^"Y68H78Dbq%Rq6rP@I=hVPY.<&B1B4T`NOR!Wpe+BOBYYXaZAh9_AkmVJddNP$VuUAKT8lM^4=8MVa"Fks!tRC>9e4](<WLE7`uj9rc^r=SF3R"0Cf'eb-NS6YT_6cA/@I%btr40;_h^Cl^5?YRG9NC`Q^pQ44qu*e-SPAV*>Ph?.iS#g#`XMZjcVbPckUX#9<bEpqH!2FT!Io^6AD3P@K?@P*3Y(FNkr\;rjjG;[VOTlCT"]"Zkc:^r0#N4lZ^W6Y?DK7W_dmQ<k23(MBqpW.K;:9Hc#8]+%GIhP0Jq(Gs9.;6UNV*4(VB?qF=@M/,FaRt>!Ylmg%$g@443]u-(^31YDl1(LUdnP>HrZV6'ZXll`8>[p*YZ#@BC\.pm]<t:56nihu#YF`u4h*NTLX#5=Ma"rL(jI/ZhtCrK^PdECF;Hr95K'fE<U9O]HD:]1IZ\s,>bIG)>2PFL<[)<r6e8V4es,T8=FEEORWpFl^)_DQXGLjg,?n!X!%G1Uq,AE)<R.q?'n9U&@<FW1?3^+6Y6'cAmOY`aEge<t$bLWVm"+t-=3NuiLdY<^:2]>2o9>'mc4%l.)chG)iq-8JR_koC\;9lG6<Z*.Z=Qo7%ir*j.GYj-)0lW$2Bch3#uM#A]]@%;3f93YgSFbj$RWQ7#]3<*.M>Z5\D@c'-#gk:Z#h()1X?Xt6"#J"@>jFO(*[Q*>T]l84`3?;C:(?F35A,-5I\\/#!bO/KW8H=B`s=$TTW,#MQ+C87.pu1<O=(?b49P8E:U2o/G`W-nK.\>JD&?[l?K.@DndMX!Gk0_JNXB'IXEH9kmH"V3hPIZkmRX&o,E#['f-R41S./YW1*GR>VueWLHH(-Rk==TJ7[PAnqPH3!SQe.b9#u"U%CE]$cBpT"G]e5_9FX^nSiS5Sd`YMjWsY*ZeUMC#A:d^7_#K3eLGr[r==00M)#~>endstream
Gat=*gMY_1&:N^lk)i&@Za3a1Oet_#$FREHI>V!,Y^ds7;qn+jhfipHHjLW/X^L7]4_N'ac<_'\D-6_^6\$g2gtX+s")eJoL]D>tGM_QP#X;o.8X(I!!3J,Pg_CT;c%J-:9+HWeMJ<BPQHU'La_G?Hn_clh(KqU`;!'AIb8h_%6tsfGh-7\i2Y#6Rbi:+22[3S*dh$Fl"@9CMBa3%An*i)=Qo%o603;65]n1G;P9u.:r+Oh>h$T"?FA%Lo6>6+1h42R"Em-nT\Y8i7%*&$5*5\n7]:XSS/eTd/4WOU"-HskkJGKE1fR2D[.)lbjcGW14N(_@\&r'*5*(WU//?^X<hT@j;*h,M(636Jf7+(VMmNogJ4Kl>L=.JI8(F>fF\(EGES>%LckP\ipq0jc,1"<?W<pkd<Y2"G&"_MheP#*>7'\+MR^\uF&[$^1C]YHTqThZ,R=Eca\Aa;>?&^(@-;&2YU?2B\U^73sCSHj&)4>jX@bZg/5EHGO^"l.`R<=_jBD.<Fe8qhtk[?pTChVeq]ASOQnK^fQ.C2b)'^-0]XGS)KZq2bT2Hg2>r(nUMIiYU-^HL+Y2gZQ6M4ue^<o4F..HU$t;3-T$O_(P)q&.["4F4P+qLD'n)Cm0+/Qo+1A4?*LOj7t;a;$P_N[YO:er0`tV,?sQ),MYNMmr_#<VM2DGOB2DRbs#.chr2ikX#hd1gq[u>U3-QT%+EqKg6<7=q4"'q@MN&F0W:ISKlS+T\&.>56rsZE5c>#5)@01`GQYct\sfos":DhLXW2Q[-t@Zfoh&/]LdD?i>t_Oie-aoXle6H;qRAJ"`?;]<kh(NS8Knb;i[HlW\,k,.";q(B)BO1s~>endstream
endobj
36 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 620
>>
stream
Gatn$6#YL#'S,ZJ(%7OX5QDb-GO)\<W\giGlJ3XYbU*X3!\TRXq=f5Z]P;4,c)N<?,Or"Qmf<qTT\*BHXS2]:.Tfq3?lZ1(YajcNI>4e;p+U!obZk]^#b$BDMU8HKnN@9o>4>3r5dF9c<<,mJQT9]&RGg*X1PSc*p;l.oKCb*WYOmmH!PaBC]4>0((Jt'`l<VI0MX;BjdPp[%':qM;B?5Dq13gb+a$B6:18mD)]PbO__M"]W%T[Z:2C><O`<_U-QqHFDgO!0XDpVm;HWS%@;mF]O>o`\PBt*IX-iTDFERsBLGL>H-=MVhjK]=0kN,D+A0KGQB:<.&"8)+u<8!gY2fc!c8lS\C:q:6O;NAq\DM,?!mfU]"(S<!W)atfRrHKgmVD)6cHA5b4`@.hN)d[SlhaM,Vc`>cZNnArVN\Q!r+Q((!WS[s.?TeTu/J<V<XP][&j-O<"q@0.>Sb"Be6AcKo7Lm)<QWct8p5^,!]+k5X;gb,eEI)j)IqZ\R>.u:(j]m&&`7sOU`*it"UVe^Oak/i8^Br_oc6ehI!0U>COH3`0S>9>&7Pq#Wk@nOV]rhTD'H6n]kDre))7&C5?E!NlqK!D%GB$R[@jZa`Pr<?%@M=U~>endstream
endobj
37 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhNS@cJ`sQ<)AT7bBX2'SI1sre63!8eu#Hi*12+:VXOqE!h>Xcq$8qnjH_CLV:rJP%rsj5>UUDD.`Liah"L%cVntog).//WF]OI2_e/&`/?Tki+CUX9Pb^j~>endstream
endobj
38 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhN!`Q!btAh.P+,O??T$:5)Js2%0!'c(Chi*12':B,^cE"9mgcpTunnjM9CKRM'[P%nF[hj8K8<cdi[ag.prcc><c[4u7=;Tm#&O;KE.i_Ac@E&[+g9Rn-*~>endstream
endobj
39 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3382
>>
stream
Gatm>D,]IS')p1[kYG8gDr^WKa\Yo;^p#oebmQ=<lg=jTP[Z/"#KQC+2NYP^s*cQQ0ugI3-#>;'E7EH3GH:W*8$]qK+%uPB<ra%8)#\&tA]&U"Q><uar<-3NPFj4'-0]`15P@beJr+EuVAnH?-f6rg!j<C7H%J1`ojF'fdhPu^iQ;)\LgrH<WIFUD##cS,"bfmBrkN-XC`[Of&r>a]*)[&&&PFT'M5l1/4Gri*@\)XSR`?S1?reN`OAh9/cH1GTL[E]cQ8AdAS1tVR$Ri<6OU)eZT*==l35<!>0V`EL7Y#p(GoCZ<7mOB(J;YUH+os6Kmhb/RWoN=s0Xr'$A"Z0<)"a5tZ@n*t>/<A")<3a=UDX@[BGulE?_)]AHtBCRf%f[gND6<aODfP.[ga]=Xa[&?'>nlRGDC]e"K"39+lF2Ihqp;EAXJM>oa?"S_j^@a*<MhkppRk'^c";:nG<CEM;_7s*CI?N1%rU^^ArT[7\K.^QLnLRT(6/k4ZAr+L9k#L=$jf0VJ/$_+IaF@UZ"tTjXs]LGf"(I%.:2>J5=T\V+V1=ka%ReYTdkmq0G-A5LMEFGSMTZ_]Q?p^VDC/Z[.7KmI"f:J*h<"';1s^V:aBD`>oenb54iX'p-?Xf5OH64D?59W3oBe0oq&,iV=B>OjaI]H-B.e.A[W4S=nSe'_tY+@NHo,Y66u,q2uIQKIFr=+CPX_6-.\G9SLd1K1WsOSb(YLaje7I9-_A7mfd>m-A)[t0UtRI-j19HOgPNRF)7O4j1%-i<\CEfc8*ZdBhHg8[UWCa0QMk=&Q*dDV7DnFVc8IHXOC=P)g!`5_s+3:d-$pr!j)NJ"1]82hjnKjm+?ZT_sI,Wo*AiJ-9VC#1M>ApToV#r?.(2F=)n.U+CjaOi=T7CQ(dZ>^YGBol^aV3/d%M#2B/tYbd$P[%N*L02hNh%(l]lF-0LcWCS$O/RM`JEq_5rVa!o5^_(OhF-/qV06k%V:$gl:*-'[6;07LN+6m[&h9LG,ZQ.b\=CT%/)m8k<%Pj3a^3ptOjjnXWKR$/aUSusm'gTP*^%*Q&1,Pq@48W%E=lFQf*oWN]Yfjg!Rh<'OT-85QQGhBd,>#e`.=Npk7cF6m)Tr^u7gDs&39jLKjAP\XhX,\t^I_fk8d5`Wggt9A.$f%tFVY;?o>OQCMKmP+"GnhUh?PSe*is8;28PIV251]4-XYGhk`o0)<QK\k;Ak'=aU@:G"&t<@Qs1r;/1h@c.-si]Q>12[830-50j%IBP9aJTZ+:.[$!duu1J]aLh'rD(:<WKY@NZ%bGs*pOU@lnWm$eh61Im:c>o<aAGX-[d`:C5gV#.+-=q<Dbe7BRf]h$k]f7KYhk)Xs`RJH%M:)"AOSpf'.RSl=?7N`86m,<;W.C0NUJ%or51^4bkWA&Fe'r<V2Bag2Una.0i9WDQau>K(8;"It(XKH;;a:+Ke\U/bJV_8clf$(?dc!NQ9#Ir>]Q2T(H?#,Lh&TN9RYaQ>BnR)9N<I^nT3.5+%3HL"P@5#Aq'8[1msem<5:UPoTTNE"KUR"TeuIAYEJBcFB6hA0/B#U6LL>[2'O$4Gbk&1lY;cOn@<Ju06E5F!ot9ipb-Y%%j[hd_SX---OnEt#h6^iKq!ZM^\;%9[n&7\EO@>f\V4MM4k1MEjP3F_5<uN>Wc?_#GrOY"T7.S:`9rmqgGlTrX5H3,E-KXL;'\fg#eB]3#R99lV8WF/`'@:aN-7C",'>-,Z`8c%fA7a<L8bGHgj<S96jn;,'Caj>h*qFG@*<AQVjd%0Tg2&E/eTLl;=4/6=L-+N;4dGuG0ZL/(jLMTPR"!c,h%P#^4*2)"DLMA54RgFmD4O&GO47oV!L<(l4kZr)UBT>Adm)^&Q[1K7A?&DSJnB6(O$*p!0]7M%O5hV9Xg<hgS,`q@?":9Zt2=@PA;W,^c9%>TZ'VBTg>o3<_3es;hjFtS]b1V(V\gjh-1S.Rn,Pap9OJ=qRN1(^G=Gq26uj7gR3cnpnadBSW,L4!\/B^B24;\^oi;A*E.C9?UT_b3Q^%aVJ+peSJ=^O-/=Zm&XS/lqXf]&(`"BOXPohOU6h%,i$d0tf)*MmLu3UD"X9GYX;<0=TI+Sc59j?8B9KP;J=42C``lQZp+26PCad<DtuX[2`\?_#>.uJ&2Fb%a?lEA(/>,jmAfZ/fSXN.4Ca[mnBhCUWR\8gI1F4%/Cd)gm/Ar<96TKj2u(YW#3SK)\^ml`VA:rb+tN/fgE`#o/ElLm:L/-o_V\gVPNkqTgPt4KCnHbG&5&TrF>]<.<rj#S+=q(>-uAA=*<it=4jE=3#,j"a"+t%^/6$>>cQAjYNjCDAQ8eWH#3-je#-LEpq[rumY0JpXiRhiFb^W(+(]&daCG`H7\=&A>*^AQh_uaU)K,&Rnm`E4pE;'8r;Du\b<2;&\WDT!;,LdY$5(N;"]V>A?UV!&(HhP4*;r[NA;C%l:>uD//:GOV,#9/rP%:pUdd&\1(eu%J!^:<Q*jo63j3d(fQVmS%W"@^TPT#fcW#r#goPtt4m@ZN,rZb:\EX^"Vk#_;/P!?/-<TPHYb;`E*()t7CB.TG_Nhr3c[%YYJ(!WP!Z3B;YD;jdngo='&F7_VIS1NC`VER+,SG9>/<hE:`@[2Th2OL\5j4;9Fe\';1QaG]!Y=#"9?#8E%c$-C7YaBp=bTW+k!@fSX,(a3^EXDhj\$#@kRff^W/W-2+]'a%q2[ipFfb!PZ8&Xtd@gWg01.;#0XdGo&@NE[.j'SA>45fm6Z2rbglD4*WIW(s'Q#iTj6AtaMng12Cac]20d_]*!Va[b2QAfMMXbOQM.$c)$8\/'9Nn%[1cJrP/[pb@i9,bH*+]^uj[cI[j3jZ<O\*PAcT_#<=]3A$OR:$ohh!JXW2lb\uN[3pdGr;NPO+B,;'4HWo9OiM%`9pje^6!J1_a9s`CCCi7hs(8C]d,jr\8A!.lL-OaJIliK`%[P0#]ebe)jVR&FE8.?H:p&gMZ,!Q'HP?7<A%cfSmk^<gnTt^N*_qs,*k#SGbh[`/2(\8pS`@d@eJ9T3I25(%8gH7W3DMt\-;Me9'rm;;Q7`/p`NM"9ZaQ`i$(NYVi$ScRC:ob)"tRJF]b@m"toN2mJ@(CAk=[)imN8k0h8^:[X#4gpq""_Tm6?VnqN_uCJhZ0^#>Tq=d-j&De&MkbHo0XYm=t,DOo)O\$9,q0c*rl.u+sc,WcU]4*iEa0Wt#pd^m<T.K^`9L#l[#5Kjf7KIWM>6r%-Dojg1LGXIX(AShBH_?kL3AJV2$51[<X@Q!>VLG=')"//Ym]HRZ*q!CB/O2`K,_ht"V$=Zrae6d<!2(eX+ii'I#WSZ>C,"CKo<o?@Bo7];(:4t9%Q=q\dErs5tUOb/&Ga:3fIQ-aML\e4(![n!QGsS`$~>endstream
endobj
40 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1689
>>
stream
GatU3D0+\p&H9tYfZAo7g`=7ph]SI`LV%M>g,-n`3nKds_`1bK'4\S%\KoX<IX>/)0t+uXbmaeG>&!_6m<YB>"U.+Iq40,=5)u?6R0$qRScRAt#3/>nNa)OjBXZ@Q&OiNWR#:g>YMloX.R1b^jl)pt"\nG!7[X8tW^=L0p9$j\L19j5W'7O^AoH.qP$UL?5d/K,l;d]dkf't,o]#4l,t`3>\0O.O1HB4Dk+G`<.I#e,GL/H[\7:@&ZrB=umVb0n`t-*Ni*gj=is-F9P<-J:B<@N"N#7FL;`u_4^D0Bo4:Y*l:Ek%*]K$6.S7nrT'b%FJ%l<C:g\]CM;HuQgfm*eRo'@CN<RA.NGQ[r\VbnJU[<.`XIhgh$&R\/-]-<,H7[p-\0ol,Cf@!kir5fZs\"O2IlV!V%!29X/M\Cj8G&o.;?;pcnLcPRWPHj/IF77]LV3[+H0:%B*?tEr:"'?*FE5:boa7K8NCFLn[+$TQn:;T/$=Pk)1#J1J\EULcZlV+FZcCm0cI^[Z6@KmShdXh]Z![?8rAU_V5LDK,/;q!0pT;1undGZOR`<n.pAociG-h=i"kOUtl<m(#+5)h'NY=JF=#]R-`+DDPn3*HWMQjNm7XTV0b"TaWa!ZVpXpg"2f>7(EOV#n[5Bb[@!q&fe<V%POX-Upm50[P\P9TpgbFlNOuY7m3RfG[pUpa!?XH3q>8EWY8_\@L7\265<F@'j<l-p=Hm.M+H\?m)>lqH?Y"VRF6X32@YDp@ffs+oMZsp*2PqkY7KI[\G:e#k!2==K*-^[P&V=4%lb;[B].h3:O32=&ddiEV.7&cM8#o>/&IFXSDu,L#n1PnJ?W`qJG$VI)RFFk)(Ns?lnkeK_N9!-ULiAj8#4#OX%ME[&c0'IWFo*OuGZS6g<FQNdZ5]ho/b'9.l7PJ8F4U>IV#ak"O143P)c8h<[rIlH"pt[?7E5rE+W%p.&Q+5b^5.dJim]Z&_Y_4rd/37jicu6N6s;>E^LL_]<6ao\R!Q*2[]mM'^79qan*sNm[tiXbmTU]@,:`S4FQ)[!'#uI+pl]%lmi@gO`tA'K/1pI^V]JdC>1JFM\;qNZ0/=hR*SiB41>!'t_iu\/p4jA`d4bh=5]/17%>PB57=b2s'OVh.@-MW%gnTD61i_/!76J->U"Wf'8^*=c'3tgW?Z;KWPYucot=rm_#*!nSYIA$`YjF8usO,Q!s!DoB^WL*]ZVjSPH1<"+RbF^<=F^1pFj9,Y^NFFRQ?r,PUPB3"6il$G1>"nto/9:J&(KRUJ3ch))P`:>ZDu;Re7q(\(g&85&A>Q:rb>J^(ZJX)!=lbKk-G'1+3D#UT!:RMU24-rtM8SartfR.Ts(Zn]Ct89A$S]ce"Xi(QgSks!h`Xr[KE^(l;@HX@_r&7KqDGW>BU$Hkn<2[^"I".YVRF*C;m!7Y]@W#B938t]8o.LDB7R"T_#aKA%DMRLH/=[#Fj:B$!27:3&VhSUEO0O6Ye*NrH(n978FJ;ks>ns9p*O4QlY?,?AMkEC9b3Wn:(r5RVZ`D"7fN%q:6PpqLOW_VJ7&@!lAF0YTJ4R;-mbB6PiaBmaDr_s,]df5?]_D*e$:r'!Vi:`MZBR"S])@o>KBd`^[ZeUMB#A:d^DK&\=<8YP?VFIP!5kV\U/X)`-GdHP<i/k+1K_FoT^iZ;Lg.RrO)peb`A-Z<<"7Lfn7f~>endstream
endobj
xref
0 35
0 41
0000000000 65535 f
0000000061 00000 n
0000000135 00000 n
@@ -209,36 +260,42 @@ xref
0000001535 00000 n
0000001683 00000 n
0000001799 00000 n
0000002074 00000 n
0000002180 00000 n
0000002258 00000 n
0000001905 00000 n
0000001983 00000 n
0000002189 00000 n
0000002464 00000 n
0000002670 00000 n
0000002757 00000 n
0000003077 00000 n
0000003151 00000 n
0000003241 00000 n
0000003364 00000 n
0000003498 00000 n
0000003621 00000 n
0000003760 00000 n
0000003863 00000 n
0000003965 00000 n
0000004090 00000 n
0000004192 00000 n
0000004267 00000 n
0000005038 00000 n
0000008462 00000 n
0000002876 00000 n
0000003082 00000 n
0000003288 00000 n
0000003375 00000 n
0000003695 00000 n
0000003769 00000 n
0000003859 00000 n
0000003982 00000 n
0000004116 00000 n
0000004239 00000 n
0000004378 00000 n
0000004481 00000 n
0000004583 00000 n
0000004708 00000 n
0000004810 00000 n
0000004906 00000 n
0000005849 00000 n
0000006560 00000 n
0000006788 00000 n
0000007016 00000 n
0000010490 00000 n
trailer
<<
/ID
[<3a7ba17afddd149c4cf82e5c80686f4b><3a7ba17afddd149c4cf82e5c80686f4b>]
[<f557a648e1f9e4567e03c8107a24e6bf><f557a648e1f9e4567e03c8107a24e6bf>]
% ReportLab generated PDF document -- digest (opensource)
/Info 20 0 R
/Root 19 0 R
/Size 35
/Info 23 0 R
/Root 22 0 R
/Size 41
>>
startxref
10134
12271
%%EOF

View File

@@ -1,11 +1,55 @@
# Open tasks — dependency graph
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-08 |
| Last modification date | 2026-06-08 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | pre-requisite to |
<!-- doc-meta:end -->
\newpage
\newpage
---
_Last synced: 2026-06-04 (RSSH full stack on `feature/rssh-alpha`, RA control HTTP, cluster acl0 DNS). **DNS 2.x off graph** (postponed)._
**Standing rules:** [../bottomline_reminder.txt](../bottomline_reminder.txt) · **Documentation index:** [README.md](README.md) · **Service map:** [20260608_BE_SERVICES_and_infra.md](20260608_BE_SERVICES_and_infra.md)
---
---
---
---
## Table of contents
<!-- toc -->
- [Removed from graph (done)](#removed-from-graph-done)
- [In progress (feature/rssh-alpha)](#in-progress-featurerssh-alpha)
- [Postponed / off graph (DNS + mail)](#postponed-off-graph-dns-mail)
- [Priority tiers (open only)](#priority-tiers-open-only)
- [Dependency graph](#dependency-graph)
- [Task index (open)](#task-index-open)
- [Critical path](#critical-path)
- [Numbered priority legend (PO overrides AI)](#numbered-priority-legend-po-overrides-ai)
<!-- /toc -->
**Documentation index:** [README.md](README.md)
---
## Removed from graph (done)
| ID | Note |

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,24 @@
# Opus / Speex / stream protection — validation checklist (task 3)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-05 |
| Last modification date | 2026-06-05 |
| Co-authored | |
| Severity | medium |
| State | pending review |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
E2E validation guide for **audio codecs** and **UDP stream protection** (FEC, NACK, negotiation). Code is on **`next`**; this doc is the operator checklist.
**See also:** [ndk/README.md](../ndk/README.md), [ROADMAP.md](ROADMAP.md), [AV_QUALITY_QA_SESSION.md](AV_QUALITY_QA_SESSION.md).
@@ -8,6 +27,17 @@ E2E validation guide for **audio codecs** and **UDP stream protection** (FEC, NA
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 16 0 R /F4 18 0 R /F5 20 0 R /F6 21 0 R
/F1 2 0 R /F2 3 0 R /F3 16 0 R /F4 17 0 R /F5 18 0 R /F6 19 0 R
>>
endobj
2 0 obj
@@ -17,62 +17,62 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 19 0 R /Fit ] /Rect [ 45.68504 716.2874 92.36504 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 762.0394 92.36504 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 19 0 R /Fit ] /Rect [ 45.68504 705.2874 183.965 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 751.0394 183.965 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 19 0 R /Fit ] /Rect [ 45.68504 694.2874 137.717 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 740.0394 137.717 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 19 0 R /Fit ] /Rect [ 45.68504 683.2874 111.933 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 729.0394 111.933 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 19 0 R /Fit ] /Rect [ 45.68504 672.2874 163.949 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 718.0394 163.949 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 19 0 R /Fit ] /Rect [ 59.68504 661.8499 160.1625 671.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 59.68504 707.6019 160.1625 717.6019 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 19 0 R /Fit ] /Rect [ 59.68504 651.8499 110.13 661.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 59.68504 697.6019 110.13 707.6019 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 641.8499 163.4625 651.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 59.68504 687.6019 163.4625 697.6019 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 631.8499 123.87 641.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 59.68504 677.6019 123.87 687.6019 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 621.2874 129.725 632.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 667.0394 129.725 678.0394 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 610.2874 89.69304 621.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 656.0394 89.69304 667.0394 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 599.2874 113.253 610.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 645.0394 113.253 656.0394 ] /Subtype /Link /Type /Annot
>>
endobj
16 0 obj
@@ -82,23 +82,22 @@ endobj
endobj
17 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R ] /Contents 39 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 38 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
18 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
19 0 obj
<<
/Contents 40 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 38 0 R /Resources <<
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
20 0 obj
<<
/Contents 42 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 41 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -106,19 +105,20 @@ endobj
/Type /Page
>>
endobj
20 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
21 0 obj
<<
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R ] /Contents 43 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 41 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
22 0 obj
<<
/Contents 41 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 38 0 R /Resources <<
/Contents 44 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 41 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -128,109 +128,160 @@ endobj
endobj
23 0 obj
<<
/Outlines 25 0 R /PageMode /UseNone /Pages 38 0 R /Type /Catalog
/Contents 45 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 41 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
24 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190938+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190938+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Opus / Speex / stream protection \204 validation checklist \(task 3\)) /Trapped /False
/Contents 46 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 41 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
25 0 obj
<<
/Count 13 /First 26 0 R /Last 37 0 R /Type /Outlines
/Contents 47 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 41 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
26 0 obj
<<
/Dest [ 19 0 R /Fit ] /Next 27 0 R /Parent 25 0 R /Title (Prerequisites)
/Outlines 28 0 R /PageMode /UseNone /Pages 41 0 R /Type /Catalog
>>
endobj
27 0 obj
<<
/Dest [ 19 0 R /Fit ] /Next 28 0 R /Parent 25 0 R /Prev 26 0 R /Title (Automated baseline \(CI / dev machine\))
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Opus / Speex / stream protection \204 validation checklist \(task 3\)) /Trapped /False
>>
endobj
28 0 obj
<<
/Dest [ 19 0 R /Fit ] /Next 29 0 R /Parent 25 0 R /Prev 27 0 R /Title (User settings \(both peers\))
/Count 13 /First 29 0 R /Last 40 0 R /Type /Outlines
>>
endobj
29 0 obj
<<
/Dest [ 19 0 R /Fit ] /Next 30 0 R /Parent 25 0 R /Prev 28 0 R /Title (Developer settings)
/Dest [ 20 0 R /Fit ] /Next 30 0 R /Parent 28 0 R /Title (Prerequisites)
>>
endobj
30 0 obj
<<
/Count 4 /Dest [ 19 0 R /Fit ] /First 31 0 R /Last 34 0 R /Next 35 0 R /Parent 25 0 R
/Prev 29 0 R /Title (E2E matrix \204 run on two devices)
/Dest [ 20 0 R /Fit ] /Next 31 0 R /Parent 28 0 R /Prev 29 0 R /Title (Automated baseline \(CI / dev machine\))
>>
endobj
31 0 obj
<<
/Dest [ 19 0 R /Fit ] /Next 32 0 R /Parent 30 0 R /Title (A. Handshake and negotiation)
/Dest [ 20 0 R /Fit ] /Next 32 0 R /Parent 28 0 R /Prev 30 0 R /Title (User settings \(both peers\))
>>
endobj
32 0 obj
<<
/Dest [ 19 0 R /Fit ] /Next 33 0 R /Parent 30 0 R /Prev 31 0 R /Title (B. Audio codec)
/Dest [ 20 0 R /Fit ] /Next 33 0 R /Parent 28 0 R /Prev 31 0 R /Title (Developer settings)
>>
endobj
33 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 34 0 R /Parent 30 0 R /Prev 32 0 R /Title (C. Controls \(user vs developer\))
/Count 4 /Dest [ 20 0 R /Fit ] /First 34 0 R /Last 37 0 R /Next 38 0 R /Parent 28 0 R
/Prev 32 0 R /Title (E2E matrix \204 run on two devices)
>>
endobj
34 0 obj
<<
/Dest [ 22 0 R /Fit ] /Parent 30 0 R /Prev 33 0 R /Title (D. Stress \(optional\))
/Dest [ 20 0 R /Fit ] /Next 35 0 R /Parent 33 0 R /Title (A. Handshake and negotiation)
>>
endobj
35 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 36 0 R /Parent 25 0 R /Prev 30 0 R /Title (What to capture per run)
/Dest [ 20 0 R /Fit ] /Next 36 0 R /Parent 33 0 R /Prev 34 0 R /Title (B. Audio codec)
>>
endobj
36 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 37 0 R /Parent 25 0 R /Prev 35 0 R /Title (Pass criteria)
/Dest [ 20 0 R /Fit ] /Next 37 0 R /Parent 33 0 R /Prev 35 0 R /Title (C. Controls \(user vs developer\))
>>
endobj
37 0 obj
<<
/Dest [ 22 0 R /Fit ] /Parent 25 0 R /Prev 36 0 R /Title (Known limits \(next\))
/Dest [ 20 0 R /Fit ] /Parent 33 0 R /Prev 36 0 R /Title (D. Stress \(optional\))
>>
endobj
38 0 obj
<<
/Count 3 /Kids [ 17 0 R 19 0 R 22 0 R ] /Type /Pages
/Dest [ 20 0 R /Fit ] /Next 39 0 R /Parent 28 0 R /Prev 33 0 R /Title (What to capture per run)
>>
endobj
39 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 821
/Dest [ 20 0 R /Fit ] /Next 40 0 R /Parent 28 0 R /Prev 38 0 R /Title (Pass criteria)
>>
stream
Gatm:>u03/'RfGR\;t4L9^K^nfNY%<6URVI_mTdqA.h8C-?3WZ/O+a:/RPPd$Rgn^['AY4m^_N;>7(C;FSf4j!(T$hSku'gnf+56M',$8=[)[FUA$_o:?%KC&L9q7JhW,P4^9="b!I-N$*uT^;BQ9Y=[^*]Npoa=#a7M[,6S+k4To79JDloTZP_<c'#s*OBAjC;Xd"$S\'@NA6Yj&mKi>R69?%THMb97Dqn#tQ@T=lCi,\1;>sW^\Duf\ea?RJ\^CS@e^>\`_4>A/[.39PW/>fY$hiB-1Hl!CfTqQ(LIrGVP';K>&T3j.P(A$5GkLK=Kg$*UAT:UNYFnn;j+)H0g=IO'Z]Y#D`NuRr=:P219fouEq>[1>CoF2MGEO'Sm#=3IPg[W/dZ-oaVFGi=Ad`C=:ZHC9Qa?_d"nt^?<(/C07/Zc$Q,LJftVeEY>Y+ZWM&g'8^l#fa@`eNJp@ANuTSQ!e8769&S/HJM\fNptopXnIo,#c%<Q#<5!klICZ6c%+$$o?h#]%bcIko.?@G8oq5UP_69M;u(oTb4MA78<Q[XET+:n6%TE?&FmMquVkjeP9tn:_,I3=>iYP-=*T-<c':D*r+-epr<MtZ!S>RH(T9:[qk;nZa3@Z]8"4$RM&`\\?MQdDLG\VeVa[WL@X_mV/Y?H.ACsUOl-TQ^"\0,O:Ki="Y*=cm&*=0s!.+d)%-14UGiW]W`IF.TTOH$O8_8:,c3#=Fkh!'C\3(n4/R)/2k:br1PPc!l@@a!*..^8!sc`d_FC"0W!;D5'3Hcq_2\rL-eif]X,Y"Se/JjPSY9/#A'&'40_tlrLGR*~>endstream
endobj
40 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3251
/Dest [ 20 0 R /Fit ] /Parent 28 0 R /Prev 39 0 R /Title (Known limits \(next\))
>>
stream
Gb"/)>Ar7W&q9;Q(uSfLUhsYu0?o^HUi!P#M&SO'YX!_hQ5EgRZKNOT8c%n"W!f`K])&f2Z4"-u.?[&=^>[9pUF78F7nJ3ACOf3%(k#FM;.9G(MD"-I^P)4SS%mf.q+0>'9\YYOYUj"A2+P]4fSpOZ+\U3j^'7#l$pL3i[(/:ZrBs:<3`jYdM$1O_&tal^h"i(G#8Y-1bl>TfC,Y%,Cd"DAb<5(0GulWa#Y=/ZLYn[t+\j4Rf!(!56<u4W3q)M#oD.GL>`C,g5!VZ*/Fh1pg`9$A_3Mfs!V_gS_fM^(6McjE,b79-_Qb/'q35DYJSf'g&f.;GkO7?M>uC>NnDcnd*hb4$j/5YEVBm,QqGb!Lb6h7M$Ct$$,`(-ol=iWSEHH7c55Y:`>'h@Ljr2!pVs3sG^[AkoN\<'Js1\Ls^7UtBAf''#f[FW>\n&po`V8(?5`okU<gj71%U+pe[gXr:<L3%7!NIaV<:*K?l;H/!=hJ%kehj*5rG1`>IR<'9Vj/8bD9Y[t:%k75Zh6E!65+ZW0FkdPq&XeQa`hHXL56$Ue'Oj%]SD<Se:44?h/UR5$H%nGR_n1]WerFD1(SgJ-a4b6I#:6KPU$fY(GSXoS:JTKO3o'0/+=WgK+3;BclN1VN`/hnEL?U/Mu=>^aGtX;(Y^5e[XR/RnE_MQ\2sMQhrXKM_Y8]`,_!7V&F\NjL$QuA*mHU-^@3)ST^g&DHaP`9f7+pMW0B/2''`1_6u)HKK2ZS,Vt7)&qujNNBb\1A^IdE^]((u#>:8+,V0E.h>+>B1P>)&82n\Y8F-,;oEMTf,Rd^@+BGhC8T[3+iCc3@I-b;bY;Y@[`>j]pLajIKXCLhH5m+BS7aOEp=@,NUSD\Ik_U`M'X9ERMTBX3g0(i]q<2/u^mkjGqc5ail7@Lr-^1tpC&2M;7S'Ea"a!tSj1*rB&nCl(UX>(pECR`-cc\^@;Lh1gA6`s/'(n7OJgFkKrE?nX/Ga_n^`d.rGRH"PI!PXHdU2_7Rs=W4-6,"Q#$EJR%ggtO19)7o=+H9RJ24Gs-d("2t&]mJLJca"^.RbSlA$qHZNI)',g\W2!gKjgH[L#."#?l!u?<_tc7SBoQ/L-Frfjus1o7[HRQ>F,asCK?7f96/V@71/`kf#n9"Wu=Vph-O?X_<c>#_2/-ep9K][OW]/_ojpO*fHXc@Q6N<.h/X(O&H`4uU>)(+5ah+,_8GDe@5("G7WBO=@j"ROl5/mN<F5g9+G!XBT1c>D+2[Eah/TdcR@GWT#3_@Vg5%$/Wb,oeBb%^()^NU'*F7X4(ZI8=`=noa'\.jMjO;o_]gIq[P7Q'2\fjs$:5A-'HkMJ,P)E,jL868MRaGS5h9-=JZI4&GZ^[0eE70(i@:9eRTM^=KE^:RGfE%^"R7fp`:a]I7Ei8,YFb&g/[SJ!gZalbdX%@.O=(4=h]\^:,+5Mem/prrsd?,QGh&95X\9BFW.6Nd$GE[7=a=;3gEN?/]X2Q&q`)F%e%5mSXO$*35eI3%n1%(dTQO'u/?`_P(ZmrIcU;'UPkQBKB8QE#s/>O$*@`B>bi2QrtU_bI62W++E/NQpfSpJ&mgO%T<0A!2WTi/:uddc`&\tZeI<W2JfV/&bnam9HTO!fNWf51GYq#AZ!P-%p!Tg8;Fc'L@+Xe(FnZ/5:kC]uLc465sRq:/u#2m,!3?49;j;?sXf%W%Ckn6aRoiM+hQXfOlEZj^`aP%]Z:1tg*'in^>kGCON<m(+K9\ga,.P_8GBaTi5$:ZI35h4_G)iKEB%4)aXt00)g!PQ67G3HRqL`NH1#WN&t$2*nSYA&(bY`I%-44S%"%;K8-J]q3c4)c`q;c07W-lJ6Fj/uKYS`8PL]X(i@I".@p^IA-bGP'(-gh.d4Y=h@iJ"rn7L[B"iFG*1nTHaF7`8i^K\W@?@HGb$-`7;TS@V26n0EMQUWDZ6OOp?j('Vgn[0T;nlRaciCVU8QaZ_r@\_rKSXFg12>^a6VebH8SGla0XIslco+iQ`p-rkFZY,<2nB%,cdP0Sp5tE"buq/o"C@KWArCH4u3]HAXHI+X"KMf4s:4=fWohO4eGgX,+UZ(Ja`U5R4ROF-d.UF?Z9MJ0<N0?L[f=iSq[6\."gdZHP&]F#A\f`nO\SY`^thYl@4FbW2c&\Pcl>N?)0bReqoEs\PAjW2r!Ot0%c(@'E5^YO!!EgH963$X1;bOK7tHMq6>ll>'>m,C`=MR,]WSH7(o!]3tZ*^X&/=f>Xs(&ZWk!G*RJohCT>t0#;ej]!sTA>rZVo7(&9L#7m^P#UMo_IMW!7&5LhJ7UON#V`-s)],>`u<F_MCdU#Z+e4j3$Y"\sg*[u4r83BopoLQF^J";8"F;QgFh.][6NZ9DO`WhhTobg$`2(Q*@@\n&p@9(5iB94$'tdEbRfU8W6LjUSGFAA+I3?u4SW6$qh7<YW)<=#?aKZ=P!uf[/n1]r"k'ldD=\8C?LlAEC9i>^06g=gr^5e@`"aGp-L`OkV4l]L*IFabrXHOptRhJY+bh>1MWPAXS=T1N$c%)J4X@J*VK4jK)HY]n<;YU9q\CW%4&[4V/\f<`FNO5sA\g@38;VOBY[gg+dGk)dPk#4\^`!i[JM:Qjeig?VeaMg&#r-Y(8Br+ck/k:kq]gMftYqrd;fhf`P4$$WsIc@,sAbr3_bj<&.7u5B@CO7b$PqaUd%$NfQSbs5:LQ&IIT^(U6[Bk%=L[lFQq-h3\_>g00an!<:/M"kj20TblEPWtj1AiZ"?#3+)PS#-#Bm`agHi-QA5sYHebiTW/O+@Q.X$Ja.3RSb;[Xfj>k*TR22EHD.BRK@-6oo`C<s%i07USpV<E6HF=OPnG`XmUKJXhC$mh5)[etlu8qP?1`*X=4^O:Qkfig_X@NJkQPei.hoOrN&-IGHBS>e^gk\6s!&0a]]NBL?)R'(lae:K0Ef/gLQr*E2L(fk/gOi2=)DG+YeIVE(<#g7EYgW&Qi*l!_4*k0jtNVQC_[u1X3ucsmA_S<NhR7-E0T.(q$'8t[mA!a;A2`2_rT^!]rGXS7[-qQMT2f+1Tek<dap<EUZcVI\_mrDeM*N5qLKik@_gnapQG`.hDQ.;Xehje.D7Lks$F-+<s?$FQAF$pZLO.a#gJROSqZIgnjS#[_7+P[dUbp5@"l@d^C?3ZT:3)FJ],kDZ\MVEgRW_cp#0B#'COdO2<b>Y":J*HYPW\3`_pd<OMuiuIp<juj4BdW;Cd'J>3[/eL(IEnE#.8uY%Lp3]joI2]//UUDuKjdE,hW~>endstream
endobj
41 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2540
/Count 6 /Kids [ 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R ] /Type /Pages
>>
endobj
42 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 896
>>
stream
GauHM?#uLV&q0MXkc0&.FqY"rLSX!&OlK[C&[+,o2D;5e)Snt5">PQ1agm\J^O:G/!Q#tpG&GF1$o@P"FO-Iu\hQIjO-0EaG5uQJ0YT<X+L#+'@;-K.s+#=:Mm!pdhU@m-\nTeNYmC=bZgb6,<ILUd7=^rq$!?mp,6i/GQ&2sfXFIt2Ar]'C>#>7E+2YbR6\_!nFCH'T2K[?qM.)`umZVbXjMAe)@4.O\oa.C4!'[Y<%F!>nUUT:f/3h&CB4^?]r06=PA"l]F'9BBoB:-b@]>Pt`UH=O)m9.&u2:3rqj$fi5h,AC+ZBq"/N#i5L$q!9i^1Y75OH)'0ZEe?m9oAjDrnn(!Le/B#Dh.YH*N(`WEO$LdWUI$hqZT;%*Eu-?o>K\KRVbI:Be6"PeGsL'TtrRtK/q`PD91@XG;PrHE"UAc)Qna7Q#Jqu'c`ui`pmTDhlUe2%lW/1$k5*Vs1%t?mRDa-28J%+*li!Y&6HmSE(@tPE$WPR4=fWAmO&T^)"BQ_rHt;5ai(IoW.0<lc\5uK+[npBFrC;UE/QX^ZrHdXMkX?=]rr6]Yt&kb]W*gHc`mMu\C,n/=bD8>P/^Q4<*U+A$(5@E;U*0Ld;2uek$uqH>ia.ZeH045RPV?o";5dQ9d[kJ`ML+t@2Br!0K;Ks@`44>#)!+kl:)Kq(E+hm&4aU(\5*aZ,1oQXfUhm?&adf&3>/6B4/X')e#1-k:!h+K%RHT:A7cR@kLc?,BTo;G*GfN:3peg=EeiI_MD"7m'MZkLZu,Iq:8E3+Id0CRiC4Vfp&G1"kR:rL-7k)sH=3u-O(rmM1]V_mK+3GmU4E_A'Z7u7Rj3jGeL0d@D4YcnFs!$.)`[>3/!:b)Ls#*FJs[$SI_3fRTtF72S5V$(o#"#:b`0.]]KjB]k=bs6ad8HOIMB$`\?9?fP7esd<["b^(EuZ%$^X?l!ftf)+Cr]%$$%O+&EJG#H*HHQ'<pLY#/:.<C(%dL-TrjG0A:^OnHAfA\I<UR"<W+ff-Z(FHkYG\.ZsGhMYTNh1%rMXHZDco4H3GTLF`:W<uh^<&TQ4%R><A*&B(W.98WoVl:M.b4dLtp\Mg'H/"&HnT8dPk/"&H:-oqb`dn:-f@n[UOQ&8ClNqtmUe@$`i0tS:Pk[Z_iqA9G(AnFqPB"SsSLAHrR_neg77Y^&90TbrM_r4YRU?(0!+pkn:!X3$V6@7W65bp.tLNs;j.hH!J*MQMp95o;K"97+9@-f*k:06)'mfm"p+(>op5RR?6j_D;O[nnW"bVOEY-_bMj,lp0UDg:>jZ#OK*0$-E(5'Up-aR(PDj,a^1.k\p!_C(rHZVt]LRO$&k+/X"#@YK(EGVl;]7dlU8AXp<V@r&4QB#V3#cZ*IMNRZO0Z90j>gEm2fI2\Y:J7a`RIP?)rN,bG$8i)9FPm4lNB]b!*b`\@7#r*$4SkY18Cgu/-7SJTEZAEE39_&Ui]`ZZ?%UY_!%3\6M;:egRq6ZtQ_u^*^(h9/>l;-[r[-lLc9\n93c!up,icOjaM9tMOW.n?Qbd;)+=fSf;,A&OCmSe8BNl2E.!`(N4Q/#q"4[tMR='0NNl'bcf%TQ7L\>ON;pBCQ,blI.Ci`E_'.C@LsV@$NfKtA.)[mR6bh%kZ]LCaot90):tac`jnM^e>ahb(&c8$uNikK=+r=3FbQO1AOZA^)H*r=:`@jn5l*<d*iiW2]IbSR\BR8lhS7,kpYJY158J+m*2'AM3&q&S(iPGaT5s[p8T\3+!H]Q:\J!'#F?h^A&^X-KE]s@)rlo-qsq1c=Bmq89#^P<BSoWZ&?^mb]`ZMN3r0]&!D:,hl%/4h'6=UQ-]<oY:7k@a(Z?\QE:rD#,8mB7?=qj7ji<1@k&hjhklN4lZ@pOcBq:5me_,4TLg\XC4"RgVW&h/K0_r[*n>YOa%Qa&M>\[97/eE2'j&QlnY$2TfZjE]^T.#bNqe$N@<2Mge!XG5FWifr]=q"OjtBgd>sf@"</I_[_uc96"rDOi)R2I61T[L/lWQOd+;"E,-2lQ!ZW_3ocG_l)]HSaA@Wj:6L<#[Hm_TeN>E%bXes+PR`$*c$e75dk`,r$mYpSF/Y41Dt9c%tUXU8J*JdpWZFLO50lGa/';)BIK(+NsV^T(%.k1.0-Bct;,Zh<ONcE-4`nEBimT[/]SG!&fuVQ)L:P"!hR.g'r?Mp8ZZPGG@lEr)P;DY?jAH^+h3o"&1h\Gc'*j,)SrbcW#"SEZY"%PJp$Y:%A0nm2]d"3!P*Z=<j]:cYUVnSAq[Do:GI3^J;B7h$o)2C0mVn&tLD]D:RcGM:>hf&EAqlHHMe'DQP$^Ppg[C3mdl=&M>%"pYZ@k_cp[Wqd<h8l7Lg\`XFg0nU'hn1jt(0&d:0k>9cAiK<N!WOSl6dR?=r#LjVaI0_UhR+k%B4>)nRnSk[;O67rWi\[6kn?pjGc6dp-^Qo[`s0qQ-5#Q15B-IN(*325p1Ngq)*:%SOq+;t">fm0u/4jV;9<Mg//2R;E%hdW2;7@+c9jQNeS_u!j\sdmN/onN/e4X!L4l[6$lJr3errT7a0dZ~>endstream
Gat=*gMY_1&:N^lk)i&@Za8MHrCEER8qi]\\5==l72@G2'5T'6denO6-H;C(_8tQ"GP7Q;m-O']E-a3bO!9*-5$V>;TE'HC.%(3f!*=X4:Bs*c9#\0<\--:Mj,PJn7q0JDi@"quj(WC9?q(Gu+tT<I`/.\U#5j9V#XFZT&0b*sLf5^q8a_Y5HTPRdi<"aTC]Dhm9GTOB@(r!SG*IZd(`nAbYR[Ph368g(06ZtG%@7A`G*?>0#0u8^)>LDnT0oeS:;5N2ZcaGM9GROTNh/_=O*,plVD]K(l5IX#V\90r?8#n&h#@4/HlE!s]))Btcl_%JpALK8+"S>n`\gkn$koecX=5gL/d7eTVhNdG)l"LQ0Ll_]`ro9WHA#U,R%+h&qW)DphmJ2MKG*Q[NoGh^]i0a3@:"?hY<:%pS.pckhX"JRE3g5jruW_ZF>d@FZ`/8>M>Z":8`jkF/@<n)R=kp8jJYj_IL)f$>@T:\dqirAKtBi'`3R8Z.X@F6Npu-5l8YIEd@UP]Yl(`+r?i,gA)^JH^:3EI8Hn=^i?rSSK;k_j(qrlWc"\PibkfoYYd_:I_1h;sqPa\2FmC^i!ikP5C`H3e;&]boCHBT=ffno3?BAa-4lWOm;m5p.SCX8?mFj20jQ!JYp=tcNLT@?s6J+=c_rRa:D,3:'nMlK"W>;[)qqb_%lR6#`7]XVM#p^Va,><%#:Q<Xm9F3r>_>Tr(Y8ua4,8Kkt[IO58[4^s_^%S5\>"V#W0[)qt/Due-?<UH7ZA0iF)p0@%OJTWV=i:]4<rmRM``+(X5j/PA(C4/0a9(="&5L?MW`_=`V:k39MVEU@^>A6me21p;dDc%A1*[BjLAG#a3Ba6(YKg$$.*"#`WV069WY"!f[Ho+1^q,[7d.mpaBSZ9~>endstream
endobj
43 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 735
>>
stream
Gatn$?VfE1'ZJu,.F'1)_8OY!]bO^-1c.6NCjSE6+Z7cE[>XFZI/I9Z"Yi8GL*B8^A32fdHggJ67mquJYK[\>Y&JL*_$-iCn:W*dc7uI+%g0Q'RA;AadO7DQk:DM6K\iJ8()8#gA$EJeU:^KL;c+k]p23.QjNfSD6FA'JZ.BO2-lc4ZbsK;&U+t@pmG/qchl&^BmI)mge'Fa!kf5c1Na`qNhl9JR[.9nj:3kM]3@Xi'*k'oVCG0>1WL[9B/TGoPEeYg_j;Q4QRFB[9@0`[>k_n]R8IHoZ=8L2ScAh@8XJE5+'8ZF>/`$XKagGB@eI.fUniZ52IOrK<!H6L5Y(Xl)>7I@d2^T5/24^f]rBCcf+B\J.P_[<6mC<OP@JEadR@Dh&'(c/Umu1>U=%<4Z-7eti3G',:1M,e"c=GBi^Z\c!K].U\Kf+eHdl-uEm6Yf9[cq8Q/FOBh`%^jb\c?8ATe,l2'1\A^jkHF!g;?idlBQ:i6o[Hmh$sj-dT]5D.0GR+IVMm=5rjf!;Z<]@7Ur-Xb(gmKq<0p%5L*E%7m%?q^HlD3fP_nN1u`)dnbW4hn]<.5nsrFj"CY&"CE*'e(R*&,olMr1s181a4?jboX0[_&CcU7X*%.4`+UU`s4)BkhLXMQK:9di?6QI%.'\g$rQ*Hq3.,SPpl3tqm=NB::c16PZ4N$L^Nr(i'--Q!HrYNtXPTjF14[dFjcAQOM#D2qTfj?cWquPZ.mLT~>endstream
endobj
44 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhNS@cJ`sQ<)AT7bBX2'SI1sre63!8eu#Hi*12+:VXOqE!h>Xcq$8qnjH_CLV:rJP%rsj5>UUDD.`Liah"L%cVntog).//WF]OI2_e/&`/?Tki+CUX9Pb^j~>endstream
endobj
45 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhN!`Q!btAh.P+,O??T$:5)Js2%0!'c(Chi*12':B,^cE"9mgcpTunnjM9CKRM'[P%nF[hj8K8<cdi[ag.prcc><c[4u7=;Tm#&O;KE.i_Ac@E&[+g9Rn-*~>endstream
endobj
46 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3345
>>
stream
Gb"/)m8Mb%'*$6aYqs_]'\]9`IQ)XH")YU>!%$TADMB#uYsmXWa%gIVk^S(4^Vr0]c*d<-DUK0@>-4UVea@?WTci<L-@bCt^o&'/5#\+0bT;>87"s;?SBh[o*70XBeVJ*XOpZr?'3S3B*-^ncQGCiSJfb6=R21u`"_K9X'%$i30r$0EP`ehPJAZI(*1iS]3\5FV*u5gIiU@\;E!3M^E.FGg3+NuK%DWGnDF[i2`p42'mo7Etc>Fb^6dA`:%YL/'JpVXqrScr2a[`iZ:VM5[T.bfK9ic7`6stU&JK"Wm.3"$=9SWB@26LmZKm8H]:1/u'nWH8DjroY80Hlt"LI6F1m3g5>@ZnJm@=N3WVlgZ-?CnG6A6GRG<M3:9JU(+3;VeJD4H47)a(KmnPEk_ODQiSMI$6[Rs7,UWDL?^aqq&a[n\b!H3k`&;_Ob(LV8P29g2%at73k<#>6on-8S/?]653^DRf^R&:p$-N22H/7<XXIN9O3rg#\5.$L>GUS.`i!sB7L>S+nJB9U0Z@&9uo^$A)g$rbbK'4l]t#I\s`%=n!M/@H+TsYRdj#NA)@Rpf)^Xk]/G`>0]8X_\F8nu5![2+mQU73rhso?o"u3I'o1!&<Rnt)Z$g`3.#'U;U/PU.jt)7#1QQc3pio(=r>bcWHj/p_XKga04l4)tn8Cn.q.Apd?E>Lj6Fu8752Ro!^2Z:`Jep@P_U[>Kbb$/aA$I@[5j\=TnBhb/F1>OpU=")-q5a!/EupnE=K?<SC],3P(59&'EQjsm(:)Z%946jSa5Q%J;="9a:.C?d]'D<o,muq4QZ\h$RRBeViC[14T1oLiJ"Y7&hMZZWW(6j\]GH$QN#!RX4T5C0CqW"u4n07:+VE%ic.-]+-[;/N:TCQJ`0.OjA#(W^+;f>q`g\qQ6#m4m/E38eF#;Rl"cS*<_i!,?I!'qg6UB3EC9`M>Kf%N3mDaplcm]/JQ[931!IO*?'q1s5PP2Bk>\B7'][<E,g-gF7^)PD&!QW7?>m0W_?pu,hf2oi;dr$rM5X(69K(+W8+nMIO&B87L7*:uC:gR_<0F.ioG>6(5FQ+$Z>Xl^WP5j)NP4Lur^[&1<c(]l+7W[A39SqsN_-g3P%f=n4+Vus,[Yk?r^iQc6ggO`\ME_7-_]C#\_pDh69#QgI@^_eG%AUJ%&Tg=&?**e37f02TP>?B=QY/"cRnOB;I(m4o6[-cG+P$?5jP9291,R5uP,:*h##3YUJq:)g0&e'S`ZeB<^c;oZS=kPQW/pu+KS8V<mRDD-]O9$t@e*em]4.oRG8L!Dc,QZN#fmQ/WL?sn#a%e`d1d^\V+ZOLkilYOV8E(V*/:Uh7GZ-df&7HC]l8MjOeqh`,`5Sl65"Gk<55b*8DD*"hmSXmR>dYfF"6XS0fYQ/T&9/kAIP[$,Y\>)%Kin3JeTB/A4Y8mX=j[F'tHjUDagr;<N35.n#Kh45aFnJ6YR="D"a6WQKOb!!Mipr_jO;!-oriNBXbq@>.5c%>Id6ZG#%VZ*>s.b=I^jNMeb%G*/R'<F[ODh!SSSHl?6@U;t1^b.U%3k+kGV9eN&^lU#o;G([;lfA/d2)$MGt=Gt#$+2hsVOBL*N8Gp89n&)sQW`pME\B%Q'[oq7)BrcX^\iSUq3jf1klGI-UmlonJ3/!?/MRO"6Q+W?Ch"fSS,r87&E?O+N6%2FLap&"I+!Cj,V4@lQ^^)C2s9Toscr*F^@>2%Di.-fJnKIM%O/+:8SW<<1^*>gD$*S<tGW2?B%(,H\b@O=Ol;alQ2U60SJD[Pj2-tJ]7F/;7C-R0iQ%%bJ"0tK`!ao$k6:q,<@j%anAZS2Rf5,.7sA!1+rq3#<a>k*Dbj%"X13jNt(-$p9H<Mf+@6%D,#B/cjAaI3d"b0^$\*`u0;AR]@o1FcC%DE5Nu/9f++\L4D"h8d!l%M9=Nl_j%LJpiCLG#`20AY_oq%^JGB,qq,.f9D.-U=^)3_dKfQ-J>UOF<otrD@!2>C2#'qLOf=HTWDP\-L(E3^=e2*+KBbAh[.eMROk7]H_$NrXi@B1nT6hhH@()7jm0h;q5:hX<B.Buna`"J-rI%S+[Cu'\kYm)[FiuJ9JcCtKqHp*X):d.5%-2;Jjjg[4+=H1Lh,:8i48R-?\rmM>dj,(F:<<qr3[90Dfn/^RjVVE0[a?$rh5,ngjta&iqTARAtq=R0D3)2.qI=*74Mn!)I:-E_>$LEjt`0q;":no\=&/"V]CGPl-J$$b>-S6Kc>U3UDcqNqFjMbd5'@!W,3=)4"$cZaN9ae),I;4ii;B"967O?pAb>RCm*kQ8RaGEkaZ$'+:o?P\?4,+9i2NI,8#=`QQV@&h<U8!R4.aWGAHP@(-Vb3-s)mb?<)-b]:r[.4MJVI0`?07;q7E(,PFKi54KJ![TILHWZYH-d4Q_f\DUrCCtb8ED9U3-CSeG\Oq/l.[=FU<W`K7pSOeH4[5;q0;F.hL%4O!:D/%?<H=7O<Q,/>ElSoj;*fMtQDU;U,79c\X"@6"LL-h.i)YIR=`(Vd?p>DC)Ft+="[5kds-_>7;8T(l?&_LpEk-!mec#HcBbk+MMO*SaI3(abdF`BRY#NrI!cCMY",,N<;64*%Qn_n;Bg/"c4pK4TU8#^k)c0HtK3gEm2GT(:>,Z0d=:Bc3a>d1a9H:INFHtWcI$<VrNnQ>3[l>Wn/fre8U^RfM?ff_aN9<gsu_+8^-`Pn(*f.p-cT/m[D%Cn'rPFo'N*$5PupX-BS<hu(;:)L':FKVZs2l^ucHoTa/\nnP=?d,t*p)ZQaV/<?bMJ>rW/Pe"F=)OP.[*W<9WK,#[f.;J[AL"/$W]IeQh0^UXXUaOJ=`MbFq\rWRg>,+5]sOggK=*cI<c^rT*16=DHZk&2'`;?c<&o$4^j^%AgAAhb[sQN6'g%q$?Pbkqo@<Na3Mo5OO79c:0R>1Vp(Bf//)o?;_.juX&:tS.pu7&U*(7oV>.dVaM6?0efS(KYjWAa8<S%e-9"Bn2c!HZp/Ra'AUWc9i3TVl0(1#@XnqLi??'rNoHE`ZYBQ"5"R^0&h]\/1*0>O<MoningNU6eHW?`gX>f:1!gKrRSId<BN;t@r:?dXk_(m9fG]TMqI(0i8Q70_HCMe:EPrH_c:ZTHM37%hkSA"MA2hoBWtlH!fA$aoP3p",d<,!p3Wi\'t5RO*eRbLFH*(\qJEhGt)[8s['/%0(>H2E2n0C<kZC:&N^!]71:#h9"hX+3o$l&IuNSOa^i42eTPg]"b.\/-Mj\\Th!?O"9i[I_G!;R]<@<').bP$?l+(k+XrJh%N[[]OTg>\o[%*$l*VHL[+Wb5a1IUo$/enU]O7F#W:"&alo.l-t/l;%Q,)Sr^PU\n8D&oVlT~>endstream
endobj
47 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2589
>>
stream
GauHM?#uLV&q0MXkc0&.Fq_e&?W-HjaRQD2Lt<RrRho.CNF4#o+@]d)Ec.`ADr2U$J1q85SQiBO_[J[ah)"5aD@#J$+mE?X$h/<?j!t1a_I<\ee4a!B!Ugd??S=t,e"16a5qHtKMZ6@EHn9,7T4iWb@OK>"e!b$9:`E^YGalV9k6l-Ald!G%qKMoMp+7@17fLbk?+eq=78G:c?1PNfl."sMM;uKs2VI@/Ui6;tYq6DYeaoQFoE?d0_r><?l7`("jp5t6$$tSC<r^r$ZILQbW+PAh@qL)=Y$jA[WFNU),dVi4:07-e1PO6:^mSU:=mYT;pa\nU(gi\6[ui"+IOBVa"M9I_*l`,K#Eg1,1m2ja*3WHU/=HA=G!%goPdY1\kDO,i(9u1p&[eeHE!m-bVU6F.iDsl@SDSN\o=5;HiI%H[8iW/o+69,I@s$!USdtJ+g$SOM7f/aM_.I=%(Os<X-kr<Y\9lW`3"6nfl?E<s.!5M[P(%po"^UR%8]2Q;r!e-??YC,<Qkk8LpP8cRBGMRcK[aG"iGS_*Gb[MsFhbF7Re>/,H>smN2##%k8d#&4)\@uZ%="-q&>YCE^1s>#U+f.&1lIQ4/hW#n__a.kX6/CcDuQdQ&C](oM5;GY(fS\!LnitXgjrQrLDgRrd$#;$1<G'._Go?i6K)1%\Hq4d";:H#,'a<<#p/!q5TlelfeH"VZuP8n_e]+%)O:DmOjYCdN^]jX6$]ohabgjNlI*MW`jF341EgtpD5QO6DG&=K$q4B4O5iX/a6BL>'Gt_0^>TSVE.H4V6SW"EHK]pr<^3V?l*:lU%1Cc-ieW;/-__GA?JZZ)go<PX7kNbcbHq)MR,>]qO#J8>_2Xi;S0Nj3i8qGkX:iYpA]m*aOtM5#M3to[0+'A:h(J3-"MBpO2%TX6jS*Y"a[e$155_KKADSq,StHlPNu/"kcdneOZ0t;H)f^B^(KB1B^$fqA>CXiT(LTjPiHOO^kN)Se47>D*TKdC^UMbqHj0._$,d>'kLUaW^U]\'d!O,R_r@mH,gorG-,?DbA$GYP"#D6VV>kDeYieeTVnLESIU&fhVdXYD[V;c*ic)8o\VDeEd@@Ge?VD]_hLV[MIWPNG1WIgjBYu@?+5n=1-/>k78(P@lGVDBT\@F/n(VH%6JMnrr&rs1A"D"MFPBK1WqX9TUQ\,$jdpGrpYk`$0&&.9*(6Os2AQ/OaI@u+B@k^r.4V1Ms()fQPshp)74+*hk;_EN?+f]rJJU\k\!?scg7L9#N>`H'!]A';>*q?Be0Z30uY7kP?gQc8-N*7X>-f@GT0cD!K4foWQ"K%pf_noK8gX,UPOA@_8d.@dMB@NG^pM]'+RHf["#B<Lk$b#\_Pj;YQ%EF[d`eCK/U4>Bag-4H#b)P&m=B#k9COIe9rcI5I$#*H(:J6)p!SFE"F&edDO-;)Uj#s$<YQ=Xd[Y\>VW=;Jk$O4`h?W*XT@g9bcH4gL'YY*.&-%>uAF.#<(%k1Qd6Us;<mDCroY/T'3(-I!u7=5TDOSXb^4Zr1J49r#m0SJ<(uCB8mVWq049[]gHjJhaJ$?(TJS"PIdKPohD[;_,_Yb)(f?WEoCLNdkq&5l7_ZQ#1FHD=kN@_H'FjmY06Z&9DTo"ejZo<.jL7NWsa6jQlYO9"k)1P,n%KXk)Y1o"k1QZKB$aDHBV:o12s_!t/UaIB89j*W%g2@Qo8((atE-j_$Hm4b'#<FU[gNF"mDF(\4V_oD`jDb_bXiY'P:O?QS6n8[T9G_>&=7ruGQ$j4A8.a:K(79a<l-A5mV@E?>3]4P4h^MoeE3\+Q;N[.B%p-MK4+;'e]?8&/ZYJG7f*'<:<*h(C`_9.r=77"H;3*cWDHS`I*u;__,K2N<AnV`TQU`,T0#"EauX8M%;bHe7)NiZhlk5t0KKeU5'N9F'g=s!)]Dr(!b:Y*LHp6OtlYRf1if<UX'1q=jQ9bm6)%4YuEi6?K5OI@GE)?a*M@mSn^7-+;eF%pb25>iZo-`;;*EQqn1C[=BMj+:_LGqR'I=[G(JIMg$(b78S$ClrYA=O"i0@mUA.l0VV'>;aSqHLN"7gO3;tae'1M'RY4VM_M:W??.`_r.Y,>Cf784ph;D8#)^d1%d>5/3W14V%W]F"F=8/.26&):,ld7TVC!gAIdJZ3rT-7]\rE+W>Wn-f5((F_P#4+krRqnuN8R6E!oLHUMm%5j&.M&-3Fh\u;qrq\4'>(`@>s3Emdm%7\?9V%i:QFDp]bVdsMLkb<`VuX+E`f@$feW-321G_/"9C\.FiR=c.:F*??cF2Ebq@nge$e,>((XDCB8fQT^k^\DA]4RJdi0@AOpZ4c3-`5*=5:Jhc(Fp4'P1%b4`=_h)2nhiJGH,3,0ouI*9Oh[G@\<u.P@`QFA^B`!HlC[++i;DR+k%B4C9QIj5F=V*m[`7`+_=_iG5RmSPAm:IP!5Jrbpo9I&,>HcThi+g1G[qBBY`/g#h</ns)i"I45i*YU$@4/:8ajAXWAGG`Z*PMn4V0Xm=u4l4d=!f@A)<E08U<W*\1-kS^;6o8jqLa!AU.U&J>L?tp3XRA4/$q3KuQA:ar<9$JPjP.G+5j3Fu,`ds%t!L:2b#6~>endstream
endobj
xref
0 42
0 48
0000000000 65535 f
0000000061 00000 n
0000000146 00000 n
@@ -249,40 +300,46 @@ xref
0000001989 00000 n
0000002137 00000 n
0000002253 00000 n
0000002552 00000 n
0000002658 00000 n
0000002864 00000 n
0000002942 00000 n
0000002359 00000 n
0000002437 00000 n
0000002521 00000 n
0000002727 00000 n
0000003026 00000 n
0000003232 00000 n
0000003319 00000 n
0000003663 00000 n
0000003738 00000 n
0000003833 00000 n
0000003967 00000 n
0000004090 00000 n
0000004203 00000 n
0000004371 00000 n
0000004481 00000 n
0000004590 00000 n
0000004718 00000 n
0000004822 00000 n
0000004940 00000 n
0000005048 00000 n
0000005151 00000 n
0000005226 00000 n
0000006138 00000 n
0000009481 00000 n
0000003438 00000 n
0000003644 00000 n
0000003850 00000 n
0000003937 00000 n
0000004281 00000 n
0000004356 00000 n
0000004451 00000 n
0000004585 00000 n
0000004708 00000 n
0000004821 00000 n
0000004989 00000 n
0000005099 00000 n
0000005208 00000 n
0000005336 00000 n
0000005440 00000 n
0000005558 00000 n
0000005666 00000 n
0000005769 00000 n
0000005865 00000 n
0000006852 00000 n
0000007678 00000 n
0000007906 00000 n
0000008134 00000 n
0000011571 00000 n
trailer
<<
/ID
[<0ddefe241699114217c6a77061fbf8ca><0ddefe241699114217c6a77061fbf8ca>]
[<f9cf19f3d5280412cbf1fab060da5943><f9cf19f3d5280412cbf1fab060da5943>]
% ReportLab generated PDF document -- digest (opensource)
/Info 24 0 R
/Root 23 0 R
/Size 42
/Info 27 0 R
/Root 26 0 R
/Size 48
>>
startxref
12113
14252
%%EOF

View File

@@ -1,5 +1,24 @@
# Over-the-air (OTA) updates — deployment schema **v0**
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-20 |
| Last modification date | 2026-05-20 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
The app checks a **stable channel URL**, follows it to a per-build manifest, then downloads the update. Version comparison uses **`major.minor.build`** (packed into Android `versionCode` at build time). Deploy never computes `versionCode` by hand.
The client runs checks and downloads in **`OtaUpdateService`** (a standalone `Service`, not embedded in cast/receiver services). Launch checks enqueue work there; download uses a **foreground service** (`dataSync`) with a progress notification.
@@ -14,6 +33,17 @@ MQTT is fully supported for OTA sources using retained topic payloads (`mqtt://.
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 13 0 R /F4 15 0 R /F5 16 0 R
/F1 2 0 R /F2 3 0 R /F3 13 0 R /F4 14 0 R /F5 15 0 R
>>
endobj
2 0 obj
@@ -17,47 +17,47 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 716.2874 85.25304 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 762.0394 85.25304 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 705.2874 83.47704 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 751.0394 83.47704 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 694.2874 83.46904 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 740.0394 83.46904 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 683.2874 182.189 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 729.0394 182.189 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 672.2874 102.141 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 718.0394 102.141 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 661.2874 143.501 672.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 707.0394 143.501 718.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 59.68504 650.8499 162.4425 660.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 59.68504 696.6019 162.4425 706.6019 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 640.2874 107.941 651.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 686.0394 107.941 697.0394 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 629.2874 78.13304 640.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 675.0394 78.13304 686.0394 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
@@ -67,27 +67,17 @@ endobj
endobj
14 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R ] /Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 31 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
15 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
16 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
17 0 obj
<<
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 31 0 R /Resources <<
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -95,9 +85,19 @@ endobj
/Type /Page
>>
endobj
17 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R ] /Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
18 0 obj
<<
/Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 31 0 R /Resources <<
/Contents 37 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -107,94 +107,145 @@ endobj
endobj
19 0 obj
<<
/Outlines 21 0 R /PageMode /UseNone /Pages 31 0 R /Type /Catalog
/Contents 38 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
20 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190938+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190938+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Over-the-air \(OTA\) updates \204 deployment schema **v0**) /Trapped /False
/Contents 39 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
21 0 obj
<<
/Count 10 /First 22 0 R /Last 30 0 R /Type /Outlines
/Contents 40 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 34 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
22 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 23 0 R /Parent 21 0 R /Title (URL layout)
/Outlines 24 0 R /PageMode /UseNone /Pages 34 0 R /Type /Catalog
>>
endobj
23 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 24 0 R /Parent 21 0 R /Prev 22 0 R /Title (Versioning)
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Over-the-air \(OTA\) updates \204 deployment schema **v0**) /Trapped /False
>>
endobj
24 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 25 0 R /Parent 21 0 R /Prev 23 0 R /Title (JSON files)
/Count 10 /First 25 0 R /Last 33 0 R /Type /Outlines
>>
endobj
25 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 26 0 R /Parent 21 0 R /Prev 24 0 R /Title (Optional HTTP bundle \(.otabundle.zip\))
/Dest [ 16 0 R /Fit ] /Next 26 0 R /Parent 24 0 R /Title (URL layout)
>>
endobj
26 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 27 0 R /Parent 21 0 R /Prev 25 0 R /Title (MQTT transport)
/Dest [ 16 0 R /Fit ] /Next 27 0 R /Parent 24 0 R /Prev 25 0 R /Title (Versioning)
>>
endobj
27 0 obj
<<
/Count 1 /Dest [ 18 0 R /Fit ] /First 28 0 R /Last 28 0 R /Next 29 0 R /Parent 21 0 R
/Prev 26 0 R /Title (Publish from a release APK)
/Dest [ 16 0 R /Fit ] /Next 28 0 R /Parent 24 0 R /Prev 26 0 R /Title (JSON files)
>>
endobj
28 0 obj
<<
/Dest [ 18 0 R /Fit ] /Parent 27 0 R /Title (Docker build + staging channel)
/Dest [ 16 0 R /Fit ] /Next 29 0 R /Parent 24 0 R /Prev 27 0 R /Title (Optional HTTP bundle \(.otabundle.zip\))
>>
endobj
29 0 obj
<<
/Dest [ 18 0 R /Fit ] /Next 30 0 R /Parent 21 0 R /Prev 27 0 R /Title (App configuration)
/Dest [ 16 0 R /Fit ] /Next 30 0 R /Parent 24 0 R /Prev 28 0 R /Title (MQTT transport)
>>
endobj
30 0 obj
<<
/Dest [ 18 0 R /Fit ] /Parent 21 0 R /Prev 29 0 R /Title (Checklist)
/Count 1 /Dest [ 16 0 R /Fit ] /First 31 0 R /Last 31 0 R /Next 32 0 R /Parent 24 0 R
/Prev 29 0 R /Title (Publish from a release APK)
>>
endobj
31 0 obj
<<
/Count 3 /Kids [ 14 0 R 17 0 R 18 0 R ] /Type /Pages
/Dest [ 16 0 R /Fit ] /Parent 30 0 R /Title (Docker build + staging channel)
>>
endobj
32 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 696
/Dest [ 16 0 R /Fit ] /Next 33 0 R /Parent 24 0 R /Prev 30 0 R /Title (App configuration)
>>
stream
Gatm9?#SFN'Rf.GS4D42f64n&`n$ht@th)BSp2uH+W:*EP>HD:ISQPL+M+BaMNl3P[ElDH?6:t"o<@X'B#&bElNm[R&1]H(fFUu/'SB`p[Z@d9iqa.miHZK<<a_D>B%eeHLV5g+$n`cJ5e1[M+p-rp:=g-hk-TIKl>t.R5chbtSe'g@4Ko^q)T16/l)QjG=#/0*$tj%^(niB'=fVl;c94Rq9T-qbjYa%l<ggmlNZ`d;]YW,QYT\L/SoY4*5j+4/E@;3"L=<>4+6R5JVp2AEam2?hm>i]N'4#-&>Y,\o;>CI*it:^+*VT:/M]Dj-\S'GR-HG>1)rF_9Vts62AZAS.&/KP.7&tVF1rXr)^@`b2hat^Ho^C\78EF@/e3.3=FXbrb8lnTH-i*W=Y\q60"oJ+EG)K@`WZE@rrbIC=(3Wa0-<ZbrP7VddRliG@?OTM'bM@^H:<LPS#:GR=MUU0=+])sB=(S(P']4%b90pmnAXZRQ<pcTFcmi&$;Ad`poUoX-S-H=9s"Xf<m&Zo@E`7W1V+j[I1r<Hr[9T2u6l=*0=(r1/Q@C>d`b!hL^a`JG>.+mh".ae*6N7UtE+@&=V\M090([c&roc+,fKS4.k&$ZVpO1HQ:qbW\p[43D<7jfr1s%Zk*X]SHP%/qs_)>.$`a)E]dTf%3fs\AXX-IQuTZk<`ckSR_&q`Dt&$s"~>endstream
endobj
33 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2909
/Dest [ 16 0 R /Fit ] /Parent 24 0 R /Prev 32 0 R /Title (Checklist)
>>
stream
GauGcCNIt7p3V;.REjTUctsM%[c<`:HshN;b:]-I2V_)r@?a/O6le@sP]dGPJ%nMEUOFO"0[S7fere8TWS1b=QYh2s2ZUTg@/(f_C^Q@PfIh/PndaMM:@:mD%+=giB^AkSq#6X_:>k+q>fMbHEL-"-A-98/4M>#B37d7qjssTN@'\q1[Tf-&q>=7pK4cn6N.<_g*(\%\+ie.076H6afC(JFm%hHX/E8FC+!_*q.`N.14LpjH7(@aVMo:cOFUi02,?Vkp;&HWne;pig/stW$rl5[$iX"]:B$1f1n`*AbC!]Q!&/-g40Q#J*3$B4QiD4NDN=qTg[VUE9(EanIjCP\h@^3ulb"oQDdCkDR]Y:!e8Ej/a_l(fd]]Rs&IY<O;-:?ZcEI#KRZU[9k/P+.pWp^%=[AhOEIn5:b;"."AZAW7eb%OY8\;9El?RkcsW8NCXpL;u%IQCkeg5d"#N$DZdh7i+nU0%HRbkPXUoDiqZeM,s'0!l$u\k?es^14cg^<W\%,rFQ-h2^q`4N,@D2Nrgo]AUQY7FOYkEPbdK]L.-Z(FqB.O_o:5(sQiHdqA.me6:UG'!Dp#V<19!`LJAVE?@>)U]#MOY__BF[XNJRVpt`qQqTb9=RO&q&`diAN>%!i7:tM!ne,KG92L]u&eV5giJNHtQW:[5F4de=<9k"52g7kW*tAT#FVtYS)V1Re'io*G)r8R#[tkCQKlj>J1JJraSX]Ysjsm2S(Rh0\*h[#ch+Z*-1#ot.kn%U?^6WC:J41I8ZF^.9:HZ[=pAh_A\#f*@!1Sp;UHL$l!0qGKSH,Fi?NATX_U_aRBkdk%4I>F8""o8n1#AnI_A]s[J`^<@#tJ4Q0SN]@@L5-<c`H+rq0JJ2XnRtW\C=-"#D9E^>HRmIN"15R%:dA3=V_jO8V)9/=C!n()n]b@2u.1ipUAR@r2lah[inCSoHtY*4uLs6<tgY0&NjlV]D<h`5"W#:IN<3rnf7I@V)cG,M&Q:9[M?,`2(FOZ,H'9Z7d,C["/m%qQ7b!OY!$cBCAWH)UKWWW:8na3PDqL^cUl>!)[9I1`A"dZ9=>4.?Dh1alJXAZ[f0&KghIDGQ3u)I%88:YPsZSEZe,_do3u7F(PYGNQnY/h>CAK;Jfe"7/$*nJm7.KsDSk]gpBsdVM_-_V*[<_"KieX-lV&J83^9FJaAR[R@N40eQ-`P`RoiuQcQ))toDNi=&'*8&o#([b"3lY1)iN66U2M!i(REiDj,IT70_E:q`=eqc-XpMamsDn9#DDW;K`oR5XL=DPFjX!W4n$4N1G3q;RkJTm,@@*@',,:j=@Eo[mr[oA@9;;'cCa%+6B?o@PT/s\]H6`:O9+-Z&57.k1XY8u)I0,P6F&rZ:C!Cu/W0L^!Xi:R'En@[LuQJ^kUjU\!LEQfGQC9uE/*H55PP\H(t3,FH>7s'M9kmO:WH5>pahKQ%,bfgIe+*)Cd\37&H`=p=?#F0frM)[9"e(:ZrfA`bGrN.]+IPZ6kS$p\jUNdMYqU<q;)65f`R3m/l^81YbcrqYDD7Y&[hp!*>OD-)CddL];9s.S/L6A9uX$ViUktf4YO#"Q-I>peB?YoNF`Xl%+(q]bhHlpFBTg_G/shlXR4i+2<o8af60]H!?CJ.B4j(H4_q%ZT$/kjhlA+C4OMV>T\*O-HuDG^XMG(@qGp*+Htug?R`L,"]uo*R45XOof*G%YW8bVhrQ":JlN=.7l[&LWQrm5Zf2)F`It(F&iqY2adFbH*6s%f$JN*L'.EkRld+k]?L.mS@8hI4]U.VW@TQd.Y3\!lG&R`^IaXaCu%lojOI@QmJHA&KL^a>h,#+`Ita#:1YJ=ke9eOJps5BDI/Q<t@;AQ="G8CefDJ9nS,ZFWlT!03@]4onD+7PuWm1tOPO15Rq!a:<(&K-(!VR8=qD+l6V1TZ>%#_98mo@EmjO>6QI[nBl3S+Tn#lh;cQH7,Z.@JQcrXYR[N+bH2ffZ4R#*9WiCs)r41\J,OI+dWh-IHQ3_,5GZU6lP#C2*q=n4IXu$7@(Ri=FcC>bs2H&OAo`1qVV-dl,!GbQ_be(74p,=%A8DsVPpae3'\h+FCr&J%!phP/8)n\RANP?t4^sDMj#K@E9RQgVM!ra,[C,m#\.-8Z&)16VNo7ct&/-V@n4<MCJN,q7#VjB1;#d)'6J+ZginJl(k(\V&72g#Jcf!saNCb$]Z3(.A8_uibH-C]15+F'[Oueh8RIE@!?H&&D^:nc4H,!C02ck+V"/B)?fK/$WAr3rSg%sJH%q.>Z^VRKK:S)ot@r7SRa@ET8H"p"Z]D603qgKVOLU!TKNb(XdR^!ST(f5Q-VoS%Fq=O![U+jDmV@/S'*.QrIcR36sIFkg!rqlPQ'+B$pGr4/93@-kCE+9Zbnp@G.g3S?$6*q_dTqo&G:\b&UPnrjN?bj0J>/7%XJ^PYUR)W)fA=,Q&#(?eAH%,K^JrN3TSH0_Q%()Vj?g4W"oYtK(#fUP\*k;3;O#fmA5JQ[cNlG@B=;^aO`CcHl%H9L\p+Gtk)k!sF'^*%%l)$.4,##2.,u8VN<CiDA;'+@l*csr_IM:HInEV'B-=^=.Zj9_alT>qW6j'e."E]Q!K,V1Ke-CTf$Js9X:Ns[eY/2H*Y35"X.@O>mjeeemhCd6-6[%q$a-C,?WI!6TBs%"W34$@A0Xof*ND,m*+n51R=gFI6e9A'2c_\&TQm%H8Jh?eal(Y.;VnHq-WGu".oq7:*R4IV.oY<QIG<:ptpUC!:[o]OiG-i^0Xg@C^[]#<F/FSnrD8#;bJ$-U#-'iAMlL<>NjgP'I4^NQn[mas1G#nA,3]?*^FuKd4Fq+:k4S*u<c:5*1j9CNBZol^[4+oqe]-V_=*=n;H-XBd1U<]Ks0g-T(CL?,`K:@>!'m@&U%l>A_2jLU<l9>HNTn8L.!uu);Du~>endstream
endobj
34 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1862
/Count 6 /Kids [ 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R ] /Type /Pages
>>
endobj
35 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 857
>>
stream
GauHLCJWt['`H=\\5H<UY[mZ&S-Kdo@"I^R;+]H6W_ueQYpYAEgZ+hB6dcMDmChQ4!@B]aW*2WA`0o5fpRH<n_uUfa:B&k+!R<'#>rgiQ0U[RB-!cmsi,Wl-mD(/?G!47mG]jo"K)tL'__06PYAp;C?-=N89O_sWrI:'837&&eq+E93FXn?.,m-_K#/>VtrZ+nJN]7J5/nrHR:^Om1-KAU'AI?k%(56e.B>jY96^W8?<Sbp"/\r,1',D:CMp5E:1F_Pi(ZPfMSqatt'rZ_O.Xqb?SdDp?q2@D9V*)jI:Q@9a5O_YV\3D*Z'k!!OgPDb&^L&$%f?-l+IoGXNZBeaq'5'#_=:_jZ't*rc9bJ4E;UJXcaB-Is'3dPJd/"VPnCmqtdbNuMAUL'tQDb#GHi<5Gs6nl_gEM=+`A@na9WJ'=QSW\h2*g<s^Je;DA27C8qkMTGRNh%j^2'n@?$a9<$]Ug?E&R^?g.[4R=u"\1=Jo5kW[=&'kE7,<0&3$HO\*ND;uFs8$oA:;JAN^!F22D@iY\I(Ts)7=1B1ZmZ'?\k-$(\d(8I19GV#R>7#VX8Q6XdnHq*%K7?!u8jbokV7?;PmLW:7*@V*t1%X,<6%Z[=%i4>C#\G>=N;&C*M3Yrd<<$*q]&*Dm=D0po5D1<N5L?QuV0m7%VkWuc"bOZ-$H-mf(l*k^Sg(C^iA]t8OYQF'I0NHP)Y_3=_=;u>0I^"Z6Q3V.:X*tW,1pumf>!,_tL4bRb<e1Y9VsWJ,_<8%%.[A(cD>rpmc7'P:LaHTC/2QLVM_J;H#Y8Md*7F:;I3"@5!Bkck^e@\i%CTU%!>V=BMl\1hY*VW>.ggu%gNaVj89AR:[OQ'D1#]X:@Vd:Yb-6Q$eBXG\CO=Mt!k2krp0GY&ERlIGSm:e[?%-<?&=dOpP\GAG@jd,0*MF:;$OS5+oY=u><V=^EC=4sfggs=)C:N6n;naloJ'UMk(*?-U_=IfC^:DuAmWS2:/\.^D$?RSB>$i,!o@qTdMn=njn`]g&&dJmB)/hLiDV8"7:;99ECm>CmH?+1QIeMmome177>36,[.*:7NXU#`$$<7=Vm+QaO['Ha?+#"ti3`gbB>qLPV++VWOL0cX3FNF+e2IX+bSDAS(S@k\.Dhni&qHC"]]q2\RYc$<KV5`mfk2@LOh[5:1s*@j29Pa<=4%6;K`7'/IpM!#n_,D[[=Obi5EgX9J'U@#)37O@f*]Du61Y<bI.8O3PL*o$qKd]J=U=39tfCcqJ'RGn/Ic]S=IebNgn<rn-=jF%FEO@'2HGo4Cgj0Uc*pFICp?k)HF*csY?Jr\i`sAsr5iN]RI_d(-V"7YCHJ?bmL?th@f6]N'q\<f(ASH\&;I\'O'@T=$$On)\47osIfc0O=/Z?FelF=:)4VGOUW)R1>_'9cjq&PP`&.7R#Vl!e@D,-j>7fE32&:0m.#]FGOU[IWU:c5a'Fh<;#PJ\P_T#GDdUlaYLLoea]Rei"5k(;7Y"mf2Q#o[43&?n1>+sjLM2aH4;]UpCN7]m,rm\-mkIb'MHFtO;!82S\S4P4AsoB';2&%Dbe'M!?Sd0?@g1B_UqrOM6%9:tTV.r'B5j'n-N2FrQ#*?FOE-qsOe$Zq@ak3*c:%*\p'nt.Tn-8l55(A;sMYtO#MY&PZBj-POcLP\?KDd5#*O655m=+:9bJ>k?keOi&E^Y:ZO]6:Z9+!+e,k7Q1<a+=PaYNu"@M<k)f"JT\;*X[Ds$Y=H:B77Qj?\NR$SW7?>qT7O_lI)2#[nGNmD\j"lXYdN6[9C%\6M^>s^tpB90g88bs&%:;DhO3[caMQXK"`br[o0t7WNGd>dRG>=eQi-'OGUmaLhiIb3!S3nFD]dn"s!OG\1M3'~>endstream
Gat=*gMWc?&:Ml+b[Xf_f402Za6k6(XX[=f;4m]:&gs@[O9O'4rdG+#KZc7V,*Z3^F3^9n`qCNoHEd7<`rOuu\=4Y7J7&[3R=sK!IKl!#'E#5%MJ5k+$-!h%?!e5)Q3i?p/d"BJ)O^6.d.AA15_tTfDC,?`aj%=C>ic$.IEd`VbUDFCKPUh@`t+Y"`S*@]Pel,H0t;_FJ_bJ](,gq,+UfpgG*D?(RhUt1f/=,tKASr`%`'_VD9!q$M4UmP+@C8YJ16Mm7d,lcWZ@SP<#Ju0,uZ+HQP0l`SRlLDUm8oWUQchWatVeBb'2<"H^%IOO;?i_:>3u?CQao9<tVdb"B*SVTed)">N.3+UQ+2=fs$?16?bPdpgn(;)IdcU='riq0CubV-).$@g,9#FWZ]7[H\Nm'_l)SG<4AgETqoW#V#3SC7<WadP#,#@F4Aeq^P85Km4^KHASq0p_S#s[Z0Cb,=00ke5V,u5-UjK>rA%'`HuF5lG96NHo$lZJ[NA?fV9*<-=)_Z1<&6QEh_Q2e,SeHho!7-B%KmfN%Te\K4hC=M1d$G:!HG],QI1(R!963O$:'VII-QAbFkZqD<LN9#0>SYLac!"m0e2m`rJg!#m3:9'4W2,a)1!_9IF7T';$,K'?"Gq?HN]C)_2i]PX#c/J^E&to1k/rsl\)9do*+l,qRo[l-]D$SJoo#q?dtpfhp\,<f6:-g\q-2_M)Q5qCRR0j)^]3Rb+><;,\jWj0k`30)WeFnIZ6'6LoCutL!V\D[Lf`6\1NBgd++G)7%cAlY>sRW0?71ec?3h>2:LdJERurj&WMP5fXWngVEaOo7PQ=C0_FSe'oFG.YNd=0#^;qGK`I<db9qYU~>endstream
endobj
36 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 612
>>
stream
Gatn$;/ao;'SYHA/'d/ZOr$3bSa]Ys'7rM3ApEU!RlYD"C'Q+pJmXSfFq\\W#ZG7_:1?<B\bB>j'N&OcJ'E2QCP@Zs$Hf"Kd"EZ@f6F>Ch^A%U1Z:`t4A$`m,Z1'X@9j]s;9E>hK>a16A-sM@b7Y/sSqM%1#7QTbG(IJi%*!V1RF9:$^_Oq]D2iD%F/X"R07*=dBW(VLH3QSti$m*&KQL#io(a2hroq";!&hs=_L=AV.@i'XH2oiua25R*SUEh%<b=mcflKhNM4N16#Zb#OVpl^0cE;cZM_j?rI<ZmLb'J%k5SFlBC&3(L'O%\W;`d4^r.pDfSp/AXCc3]SgHi`Hb36iQ3re\f)'\s-))M@=r*G6HDi=R3$sG8h^,8*!;H><\7+:FD-q`P>D69cAkXguCdP@rjrX:3tFm!mS0E^Mo*fL#0A+FK@AO%[M+\=40g/CdCi.@cF#sf>fBI5,KpJ5>UHPAgg*9pl6Bt(8:\TrmsRZcJ6$cXG1PP6Lm<SD;B46O($/`rC$pedKlE4V^ukS?lopZ3F8>3#K#W,97g^*-:H,Vl&m$9[_e.Nbs]&TR_%r1T\%P0c$rS8lCp:%rXt0jI!A`PLUo2[OaD~>endstream
endobj
37 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhNS@cJ`sQ<)AT7bBX2'SI1sre63!8eu#Hi*12+:VXOqE!h>Xcq$8qnjH_CLV:rJP%rsj5>UUDD.`Liah"L%cVntog).//WF]OI2_e/&`/?Tki+CUX9Pb^j~>endstream
endobj
38 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhN!`Q!btAh.P+,O??T$:5)Js2%0!'c(Chi*12':B,^cE"9mgcpTunnjM9CKRM'[P%nF[hj8K8<cdi[ag.prcc><c[4u7=;Tm#&O;KE.i_Ac@E&[+g9Rn-*~>endstream
endobj
39 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2975
>>
stream
GauHN>EdOG&q6H[d5=q%.a60dZ@%Qj`<-L<?$84:0]>-jMGb'5&`_L]>FF/qikM+OHqA]Y*2"EA&mK5G<S_"TZ%1iW1@MP,_!bbMrl5(u_0?!H6Q?rXJQLm<]/(t8FBmgb>j?h]G_Ar7a61b)[hAIR8T8m.1Ku.]bD,O*/4s/1^ZIN(%&nLu9,NUh!r-@0Z^$p6VSM-sN'AO1b6S?PimU`^0TRCi_T*1*Ee8\9_'LYl0T7)OO:"sG1MfI"2;QDo%Vm--Kh0`?W0N0H*^<&$bibt>K^EBsPp#Q\Oeaam?l#q)4HV(Ah52ARCrR:4#o,:ef)0TZOL:&:h995i"=Aa1TA>Aba9Vrp*mKmNc3o>`=me(h0B0O@5L1'TE\"[9P:$K>MG4pP66u%D,MuOYoRmOKO+;DCP<p)Xn,!S2]$:hsE#)%X.7gmE>.QJXmo`mbFh+[js(GYV,EdC6CC!-BE'Wk^Eur>`W'B,;cm;)b!jS>Sq:t`GAis)27*L>62GCHT;Jk2JHlL=2\[7'E"sUY5MQMDa34[RJP)+US>*ug5L?KgV`%m1YW,LCd8kjV2S)6=tZPqf`#s:bddP791b=&/*ejh@RN%9!i+$\KQ@6\'q6Ckp?(Cu:kqVV&-0ut%EgG"#.FM$5EM*dE#Z>_sU%V`RMd#_oR)(d!DMTZ9\<P4GMf^Qr*lOChbG=k"=%LF;$)\)*Setd"1XnJ=r\rRq>,:g,;b,H#i[<t)@gu9D>;jfIrdAYW@J."0h:=E>iVkTM@.C";9FltsN'A%Du!sB,(.30EOYfOoW%^</=6>an/5i<5)n:C`F2R,Eb%M3"n0]21CTK_lIG(9a=aN,CTSHPP18qMA"=unE94;3Ur>jo]W-@H0qA%Yg^*TjV(alZt!&qTSajpE?n*DcH50kZb9Xr1;6TOZ<s?PbcMhS<Nqe4,5O.`N`S:PZ47_n6TkZbf*oA%a:S7iOUfpd`&eipgmS.t6bUnnlIS3q5dSW_^lZo$u6CDZhHBgb+'_Y>;-&7__^+:IUiR[FUjW`^UJfOdesF[0@A#76nJOLPICAjogt-7XW1\i&Zs8-^O3[W]Fu2&]T3c)app][5Q"H[H<R;In[7kZ/FA5'j(dKA<5h=h,:SO,<0NGc5-g\DiIFPZW0@u>k7^lg#C!9E\EE4\i=.n^Sa4OEs)/,?1J%/(IF0R@F7k=^$L4\8URr)#&%CE@5+$@WRA@U.'KdN)'2u&:df[_=t1c:.^]P)S$fDSY+FIPlg`c!UL,S34kM`hp0aRW/GcpY!"no8c"\NIK]>[@U8Ac[4-=U5!Sg=ST-0)*4<t2t&Fh8"lDC19H.kV5/C0#FIHuUKGLR!/C1?bY1KnBFF&1tjB3+,cd<nI9Q$Q]TLs9$\HuLZj%lqI3LVU!Q2`FIiVSTmG?V.\>i5n6'`5C40.A40b]ccNO6#)_foX8._!V^mXGQu0PE.R$.5PP\H)7++kg9k=Db_KuVFkpqSKif0.>t/dR9Y^FZY;`/"g;ngJ\^nYY^NOBFQn[-mP*SH_FF(@MA2WpKO"B;#6'j$\AWa`FY2>]/QM+_H32K9Z!d5*9q%])5#@RiS>HDAj2c,ps&ZK-\`=-^WQ/_D5E.1U/0D@sDAFhM^ol)jcU"6HH!"B?HmT)X%H-,.%YpJ>$n^tqOmSN6m+F[()ne/IBW!2ES$_#h(@8;9u:X%_<dlX7*>o:;bUG1<X!3P,.)$fV6Q+JC7i*Eg42d`+oZ+OiV-3mLq+Fa@\36:uIlHC0Ms+Cq6@=N_!0B2^r,uU8j@3urBRR&cnrX$0pQO5E2Ddd^nig;JYV[9,9.n*HE[it3Dmjb:rGsm5f%oZ=C9ggCS.c/1u%-K">2<H,?Y_);F;WdeRC='CRo3H.6g8LRPc>9tSj]CQ][-G:;/8I'$]A5Oc$ulp'`_X$YYm6ie=k.>Y8R/I.M^2Uf-p)eW%smhMmn+=_&`PZk$@9U913ifdDclOOKoJDK&b]nL/;sVG:A4tVrdMY>m=H)"%U0sSo@Fqp&'736F$+nQLtQHQ>+4d5A11mt$%9;Pp+^LJ9Qr6E73iMK`"bmaKrngqWr#.#lSnNWDoUBN?8\46D5;C4ok(:m:S%Q$"DM]-Ug5@m(+ltn=4htWH4."t14,d4+4"Ei:-1d4\.EL"G2Q5I"F;>4/A:TuHj[tP/n5[gi6&?f&M,PR7fCJ$m%B>kR->ThJ*%7bmBLs,mNE3aK#D\W`Yulfq!^S*a0IOb:Crm=ng[PZA$HU1q_J&7eChX4hY6Ma&P!14qV'HrcYMunCNZH%Wkd2EA*`P`[n6gVk.F!B^M4@1K9/H=I.om8D4GIap6JM%WNebAX\U\I:XJ8a=#Ag6Wou6#^(^^VBb0D!R,-JgrBgc99Wjat9[^f<0DtkG%%Cqf_=",uq;IAjb]OFb2H]D`-!l:E@g;/rI9O0UGBA0GmF,Gmfc.`-@K<V*#4Sf5^q?m1J61D(@mO]\c)J@s3PFlTqog80aQYlVYV>MN3Phu;_!5M1Kg+bE%ZD`e:bGi760S&PQX_]7(WXeXdBf`d*eo*/@\q0D#'!LDHXf/h7V9[tMMk*>4/e+&%'rn#<$XN".[2FMJIP)"2DAoNZh8t/L4N\IluO+]OO.HA\Z"grp(%V\7M=)(7?)'76;l\K1qs#E+E)HLX[*[;R7k5I/f1g=ZG,472!3O^3cUtO:Y521q60n4I*&ctHD/U]k6pEk?)s+";^;KPT4CSY9sO=rC>cYLnGlLP;/]d=@`('8C2VGU[`m5\Wm0;E#"TL:)ZdY(SVXn[9_.4RIC.euE+8J<Z)F'I,4AQg9c`ok?]4DAaT\<93dp[']BqTT^oG-8gE/6X4/"gMN"+LrCo<uFQ9cV<kA+F[Z`u%g\ONZXOU&I9LJV`m]4^T<h*H&?Uat_7gf_'?VS*WHoJN[sE7<rHi]EIfHVjati@HcB<ehZ.mJ5DBI:A0I&F5Y2Z:61Q%pTN,YJLOirX\Xs<[n~>endstream
endobj
40 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1936
>>
stream
GauHLgMZ%0&:Ml+$r@XWG%9fHag+j@5dEtigU^*;l_#Y61nZ/Kejd+pWEf;HDsrdRS:m1@,q'N5CfqrB4>UWq%-<#!+%Lg9.DX=FXA]?D(T%RZ4Q=2!![lHfD`^]OddtS"jP(^Y5sXeQfY`"0(ahA6[2]FK.CcOLCn806s$ArXJM3_kqrd2X,c@%YE\;QEqA#mrPaTkmBehPfM;N+V+"1?RXaVXDo:r5'/d2?f@N]@,i7BVpIm?<gPFP)b<jZ69W.86Pe+5_iQP,0rT#>*7Au+^KhOMHU=7'uSBq2H,\m63>6-=kR93a$o5itKT$=&-S8?!#!E1`I:/h]D^A[rHN*<>tSZYqQP0-d&K5u;J>f?u`S^IbtS=fYfKI:kAT=?![R959/2RUn%TKV\3mOfotT9Pf-*U\?Roi&;.)Kk]\;A\pQn/F*pccY8F5rsmno/OINY9!`cYKR>rZHD]h)#@mr"4,((/-K8V1H;nW[=%'4i?"8Ri`V&e%BK3\Z_t2ceoi.=99-u\"_ell]gWR,+>d;MkL$"6QV3!5h^gC\_TNQpL'IS4Q&Y#-14V3dsTnIC(_J<#GQ4=>H(-)n.MRfPAZ%UsW@_B7;*._Q41'/7C@2-+F08_6GgsUO,4@Kc\/!H=u0FUEh<Vc5Y8f'T[.9.>;qnZBV0^CrjrUHC67#+Zt^,r6_maO.dmUs1mMfSVi>qV@W-dW6&Bcb+f3tNQr$Rr/'b8@.?oe@fl)k2X`]qHLPg'7X1$;5`pb"Gm%3!^C5<OhP0kZ?@=n&%c?66MJWq"HY:<NuY#LtJoS%-lq0cB_6Gdc_15"G%47G;KgIGae_GQj,4Job9>5&KP5E25sQg1b)j4-qr>Iie0Up9'`S1=::&oHOU^"j+1itAaE00NL@>c5MIK'=m0DRcFDTS8jpmobC!T^DqQ+TSu]f/_sjnM<Y0%,67jr/j@nXV%23$Q$H(7(Y#2#JUH5NsCG%iilSoEY)6_!<I8(l0*2$r(qr<4:)ro2RjOUk@Tr[G,qna0i?%/4^?QGc/:X8q`C"/iKnUnZtACkpHJsLdrG<1l3VMA5CLL3fZ/h\OVFdt,l"^0K%G9l@pL9-EBn+ta^.^PUc5@R0^H_'ttG?+JAquCg^dIi)_WEcU7Y]dq7o^Ll#an2Dlp&f+2:tJnB(i/AJ^anO?YUEJ3[>:.ql;h0?r9(uWHGja1[T2CgN-MRnj<75g_=N7u)-8]g;*)pI)(&@NVeN4V4koA>'6!5T2Un!>Y2@)0(#CDh8BI'Jem*+YJJBW`+t<JZo)nmS]f<oVcBEUD<=e-D8DoJEiXU]\.g`jr9S.#pX*]m`9i%nL'eVUo9VBTR,d*j*a6\O,.Xj7M2uUC-V#AO1LJK:9*e>MA=[Z@B"U5ug@^^&kTn=P8_st_qYJr\59,cYGF^1Ee*XQ3e<6.$ji&9cMq@#n<ME)(+6W:2d[\-2IVr;b7#_ScZ_FqH:6$7ESW&gH/4P,!C3?/)jAQgp;$;#-HaD)]oW8D<b:5Eam^eXPIV\(fs&R3U;OTLGc#NUpBG)Ed:\LNuHLW4N5;)c)B\_Jkk:d@8+d8la>Rr]Y.i"ED]3N?#:176j@6XVuoO50e?qJtn(dF-2V#E,mm6)s#7h7N%c`EARmOfEE@*-D=PUR7]LrY$*f`(j&EN1IG5d3J-HeMs/7ilsiQa-jjK?`RYUDU#`\Sp^dh"]Jg<VS6r_qfnS%Ci=iRDP+i0'2t[PGoi6EWos7+Y+lXDLoSR3./a#seCDg6oc?2C))%pd]"H8J:Su+['6?d8Pr9:/(D4!U1ejoPXkGcf6[O;nD\LV;+(lGj,j?u5M3)/lG.4"MlE$XSV-tBB>K*A8KKdAM\U&a%o#u33CRZ9q"4c.N[_9op&pTEM%)MjI[k4'q`ai2b>(+=)+"N.'$:_V)EL`0:L>EK\Fnilbm/.)AiK,\~>endstream
endobj
xref
0 35
0 41
0000000000 65535 f
0000000061 00000 n
0000000135 00000 n
@@ -210,36 +261,42 @@ xref
0000001536 00000 n
0000001685 00000 n
0000001801 00000 n
0000002076 00000 n
0000002182 00000 n
0000002260 00000 n
0000001907 00000 n
0000001985 00000 n
0000002191 00000 n
0000002466 00000 n
0000002672 00000 n
0000002759 00000 n
0000003092 00000 n
0000003167 00000 n
0000003259 00000 n
0000003364 00000 n
0000003469 00000 n
0000003603 00000 n
0000003712 00000 n
0000003872 00000 n
0000003971 00000 n
0000004083 00000 n
0000004174 00000 n
0000004249 00000 n
0000005036 00000 n
0000008037 00000 n
0000002878 00000 n
0000003084 00000 n
0000003290 00000 n
0000003377 00000 n
0000003710 00000 n
0000003785 00000 n
0000003877 00000 n
0000003982 00000 n
0000004087 00000 n
0000004221 00000 n
0000004330 00000 n
0000004490 00000 n
0000004589 00000 n
0000004701 00000 n
0000004792 00000 n
0000004888 00000 n
0000005836 00000 n
0000006539 00000 n
0000006767 00000 n
0000006995 00000 n
0000010062 00000 n
trailer
<<
/ID
[<9884c574c7519d156c7454ca12b46b44><9884c574c7519d156c7454ca12b46b44>]
[<827a83dc9690f5d03b0df195af7de6de><827a83dc9690f5d03b0df195af7de6de>]
% ReportLab generated PDF document -- digest (opensource)
/Info 20 0 R
/Root 19 0 R
/Size 35
/Info 23 0 R
/Root 22 0 R
/Size 41
>>
startxref
9991
12090
%%EOF

View File

@@ -1,5 +1,24 @@
# Pro / OSS split (cast-core + cast-pro AAR)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-23 |
| Last modification date | 2026-05-23 |
| Co-authored | |
| Severity | medium |
| State | postponed |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
Design notes for a commercial build without forking the cast protocol. **Not implemented yet** — complements [COMMERCIAL.md](COMMERCIAL.md) (dev-gated Play Billing placeholders).
---
@@ -10,6 +29,17 @@ Design notes for a commercial build without forking the cast protocol. **Not imp
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 11 0 R /F4 13 0 R
/F1 2 0 R /F2 3 0 R /F3 11 0 R /F4 12 0 R
>>
endobj
2 0 obj
@@ -17,37 +17,37 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 716.2874 66.58104 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 762.0394 66.58104 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 705.2874 136.381 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 751.0394 136.381 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 694.2874 127.045 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 740.0394 127.045 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 683.2874 101.253 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 729.0394 101.253 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 671.6874 99.48504 681.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 717.4394 99.48504 727.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 661.2874 165.285 672.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 707.0394 165.285 718.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 650.2874 162.629 661.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 696.0394 162.629 707.0394 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
@@ -57,22 +57,12 @@ endobj
endobj
12 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R ] /Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
13 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
14 0 obj
<<
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
/Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -80,9 +70,19 @@ endobj
/Type /Page
>>
endobj
14 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R ] /Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
15 0 obj
<<
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 26 0 R /Resources <<
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -92,83 +92,134 @@ endobj
endobj
16 0 obj
<<
/Outlines 18 0 R /PageMode /UseNone /Pages 26 0 R /Type /Catalog
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
17 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190938+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190938+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Pro / OSS split \(cast-core + cast-pro AAR\)) /Trapped /False
/Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
18 0 obj
<<
/Count 7 /First 19 0 R /Last 25 0 R /Type /Outlines
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
19 0 obj
<<
/Dest [ 14 0 R /Fit ] /Next 20 0 R /Parent 18 0 R /Title (Goals)
/Outlines 21 0 R /PageMode /UseNone /Pages 29 0 R /Type /Catalog
>>
endobj
20 0 obj
<<
/Dest [ 14 0 R /Fit ] /Next 21 0 R /Parent 18 0 R /Prev 19 0 R /Title (Entitlements API \(in core\))
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Pro / OSS split \(cast-core + cast-pro AAR\)) /Trapped /False
>>
endobj
21 0 obj
<<
/Dest [ 14 0 R /Fit ] /Next 22 0 R /Parent 18 0 R /Prev 20 0 R /Title (Module layout \(Gradle\))
/Count 7 /First 22 0 R /Last 28 0 R /Type /Outlines
>>
endobj
22 0 obj
<<
/Dest [ 14 0 R /Fit ] /Next 23 0 R /Parent 18 0 R /Prev 21 0 R /Title (Play Billing flow)
/Dest [ 13 0 R /Fit ] /Next 23 0 R /Parent 21 0 R /Title (Goals)
>>
endobj
23 0 obj
<<
/Dest [ 14 0 R /Fit ] /Next 24 0 R /Parent 18 0 R /Prev 22 0 R /Title (Build & release)
/Dest [ 13 0 R /Fit ] /Next 24 0 R /Parent 21 0 R /Prev 22 0 R /Title (Entitlements API \(in core\))
>>
endobj
24 0 obj
<<
/Dest [ 14 0 R /Fit ] /Next 25 0 R /Parent 18 0 R /Prev 23 0 R /Title (Migration steps \(suggested order\))
/Dest [ 13 0 R /Fit ] /Next 25 0 R /Parent 21 0 R /Prev 23 0 R /Title (Module layout \(Gradle\))
>>
endobj
25 0 obj
<<
/Dest [ 14 0 R /Fit ] /Parent 18 0 R /Prev 24 0 R /Title (Relation to sender resolution test)
/Dest [ 13 0 R /Fit ] /Next 26 0 R /Parent 21 0 R /Prev 24 0 R /Title (Play Billing flow)
>>
endobj
26 0 obj
<<
/Count 3 /Kids [ 12 0 R 14 0 R 15 0 R ] /Type /Pages
/Dest [ 13 0 R /Fit ] /Next 27 0 R /Parent 21 0 R /Prev 25 0 R /Title (Build & release)
>>
endobj
27 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 640
/Dest [ 13 0 R /Fit ] /Next 28 0 R /Parent 21 0 R /Prev 26 0 R /Title (Migration steps \(suggested order\))
>>
stream
Gatn#?#SFN'Sc)P(%9[@2q<nYn(iOqW_&aR+dY_uQ5H(@`6<C*mGI@X[*UOpZ3j%CLOJO`nU""@LIW0Lm_p(]B=OCLE.Mg3*j>Xt/ZuFrNra`j$pk^UTbei3A*3T$5jN*PH&;#X+3[M*02B=B:o",I=Uf%?^6=D9X[tj0LTQ4@XT8(u91)nE+Y,:;)N?9&c0);M<B2Ub7;gpmToHtqFRL.U)3&6dM[O(QOhJfsT6h.?4^H+4,L4.hG3JHQi])<,@f%_3K(J[=A<#1NggW5tHB%1UmOQ\hFnpX\&,e1o,)JD[irM@$"n_PSHTP`VhUl8&Io?u+M*ffhf$<shUpU0:^AhY<db2N"oc'I&5)Pq]0#d/1<DLYYHW5s$T;d"6)K"U&9BA!$P_sO5I*lLmcE$l0DV>H30mTbp5pUBjs&"S$a^\R)<RiTNQ%&"l*db*?s-D=*]G!>cLZ,bB</GfQ;T[_:*nk%K2Z'P?a^(`Y==6%n&n%3Z9%$39D+\MgAKj[j`A<]mMrQXqX9jDnZ!'$>5m$A),?VktI^4#_^0pk!i!lg55A4nTh3^NXI+@&W&0`J#U8+TcHF.qFjq76H9g;AAZ]\,4=La.A_)@dB2NHpi1j,s_f>WA#Q5uJ0KAXiRJm8~>endstream
endobj
28 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3291
/Dest [ 13 0 R /Fit ] /Parent 21 0 R /Prev 27 0 R /Title (Relation to sender resolution test)
>>
stream
Gatm>flGh,(4FM1TPA3g9#mgJ7@X8:aA0mA\F&uFo:i66LkI$!,f'[U0/_;[h?Vh(;5?T?Yq'uG?3#14GC`K:a1%K9F9=in4cklR-8@+CYTTfQ399$;\U8Yrk;tJtF9]a(4Qnk;1`@<]HfAER?=T[3mUb,5+WtCS)!L(-_m/(%T74s0l!6!^QQZZ(bS41c8LSRI&2<?hlB?M1I?-M^GU8MT^])'e-&G]^\5^EmOs1[En."r>4FG3C<jmGFG7bK06p:u\(c.5cZ8ec')<d3NAW?=Z3KYN7S*TC`]BRlA2^@h5XQQjdj!D\0FQLDYUj).R=7V4F^1JS[WQS>ZpR"pd%n8hf%K1kH7P,&XX7)"SQ<FPF_]JKqG(S\k(t\q'#Jnb(p&!bi"L^$+%X/q%_Na2US\U\Y"Edq<g=DRT=kZK?X/>k?W388GWUD[9!*@tA:,?rJW]S,CrB8AmIu+'P&%2EW]0`eAna&W<UD0;C6ln"!:EHCB,aL8dOc])FOj%D7M9.!:=9sC!/6qb-*>)@N[DH]RL6#W4_p^GB*5dIE$&$@W]XQ#<kA!HK5"ga?UR+^lb64D36SES3e\TXfA,Fk-E9[hM]G;MS1Gs2nIX]nC7YoCN4Q)6UcWq;9`:Aer5E:PU@P0u8I3_t2P5s"p0iso.?6,/fcs->Q1WT`$Z/kLEa7g7F=N-mDY2l$8Z&hpAR'&T5,4[/h4fB3$:[i/N"6^:.P";Y2c.7#pjPeJ^[0jX'<8d!<p1mrL?r++Y8ntB(;,eq9=9S(kHH@480:.'&Ug.-2,c#DePoNK;4CDg_oC7MKg`n177oooDM#r?S4^*O<CC9Dr`Q>d"<RjCH=MjL@'oagr-UI?*n-:!Ic"c[Y]+6e)JE#SH@b4<a/F<PU>3NgPH=%PJOQYU<%ck],Ee.1Vo$`F^r(G%-mjB7\Y38gh"Ap+8E4V[`_/N@/q9N9e!$D<%&MLUmdMA]#Zeu`glMiIno3aV?Ou:!QR!(iRs"CKFn22$!B+tEI>:F0tWPH@e\5E/Zqf&u0M(M:a?g_qK<O6#&U=bD#^3E\&9F3r2=Fk>*`-i,n`qfk$]=5;2-)1JXMj^&O<2KV16a_o274KD5m<Nm53$lBo6&5oWTSXc.8J,mI&#])>WeK8A3)JEpc%'U]%BY#^[a&>7N<ngOV9iW9$iFDhP%bJH`dO#'5#Vf-o0``&-23Mc5$q&\IQsHR-"=-X@]qDYFJsD>jah7fUDBE^TlcsU@,HBi!m*Vh+YJo(13LEKJ?ZUo7FEX5f1?aE;'Og2e`i#:U$8R":1U<EMD&%e@@me;';c3i]AbmW6H^)B%K:H(4mN86j8ni9JkKB#;l'iIBjtI0cCi[,-C+1^rn+L]2DOR?YWj$>@l1D:Ni>#GZ#&KOER:3+O;u0EJR=>mYbh?E8VUgjM32]=OS\EnOYbk+Y<@-J^;pQF7<kcuRl3E1jr:2*ea_9_3'5BJ)("0JP$6od51?NQbI3@<J,#=X^S'/Wm9<kt?)(\a6,+RQVPd+npr_W,*FCj"*g.(jE1%KNAX$_FKHM[Y?_+_#93e^*;duXSnM^74aOE,Q7i`'nWs;l3@JOnoK1NddM"IoYPYNTCLf.#m42e@n6cI-0>M?Anfo8+#m2)MG3=Y[q8u4Vf1!N))\NgJ^M[0NLlhpa,Pr;G*mGqHRf%P(@Ulq1ITDQt,<FqEs@/bGj[OUQ<]&6"KZf"L:iptRYQ[1Us=^Qab7$h:T,!_Nqdj%YS3HO0.AWpO%`kV!2N3P6\"t$>L^AII23T.G5j^='hGk/t)qP%?q]YEuVIna"<B\irT??q+"iWW`%ncDV+$\3B]"eLSf^u3?C4Cp/sCQb)]ZVWjH/H!n]3ZVjH9I;j@)id'<S=H74Ie==`)Zn3ne7V75gY#W,TOR:J[49*FrAPKb[!>lVd]&S2:9Ml\:XVj%Z7!qhcfuGmTW8Oo<h5t@9L@R,l-T/;2qIo"+^R\OPeHZY?-IDh6Cbd=VQ#!7eTKGM6P;PhS+XKdMRL,i=(RHDk3:U(R%ot%V//:j8GVoh4\/-`=.debQ*3\\pTIU'FB$h&$l4hAASpI:.3cl:S3E/>8")aYhL,VSP++NIfQnh%$6d)<Y]U=\h7YclMGRBO47)9"lk,ZpCM^J+]0/PNSJ*"0m@(_qY;_cHrG(cOU&@C4=Ru3-"atrqbo32HhOg+RIc&8n*333s^P]AlXpBu?G^2#aQdP`%(/B!5Zhf=K>Q%Z"1:3teOj]=Tp5"alpC/pf?J;Q;eF01JUs,I<f1e!:X)Td,lF'[%/b&ArPE9#?XTL+[+"D+:[9B'Yh:f*WcG=#@Q#Y.2'=u)"K'JL9edQ65(CXSO!3eHVBM@a)a+DN\kgc*YgRW43$HhGdp(T-Kh;(=Zp%8;f5Hb]$eEo)"[`4Lhc0S(4)e7Y,lDkDml"cKCG1^h-dia\Y(76JjbP,?c&J9o*\pCMG?(C$Dqc'=I%r!SjJJJ3s]t:qkHG$EFXj`fm)EOEpBT%#V+=O8=d0$r_^>N\hb7R)mI^&;iRl%'Y;*]NfU2YO7TVs[.CS[lg&WEfu(T-KtQ6i`:OuBYh1qf[:*YcLN6LjF.5u9Mn#L;)KAfHM[!@1&r#%a=hej-@aR-6i$E.:.PFl/k=V\]5:-WbMl)>(^IN+7s=`<&YC"=_hh=U$qpI?0Odh+#=M[0X#2KU_&sPWUL42rJl+M++`cVtNPhg;T/'&Qs\ISS+@SdEcE\s$6+%I77#_[]T9,F:F'GZji?95gT'0"KM*$cZCI%+qBg_7D.';XgqD3esrD!;oVbUPqle\ppGN3fYAI;J$tr9?Cdrp.Gr*,]2%U>Q1D2mNB+cPH</mTl(.IBZ?`4B9:jK\>X@i.7;gW@f$<be.ptG&;RnH6^AB9/QrbW7MRenh8fJ4#d3<-e(]_9TJR!sH@_PBt9@MY1'HaZUR<4rWRnbItmHngO>UM[-`@TGi<g>5&8FBjh\V&!V`Kk5G-IGS&mIDP-VSn8LAG>(sErrLs8RIi#Q_t0r9!&&oU/Ng$c,h"kf`@j=K`C-H(eXI#S&Y8W&Y]Dto=A(Cc;qN0dT7)<bH_if7FhJqI;oS:=I,/[iS>@>O5Fh$A?i+EqYZf-:Kp1HD_/6<L-Rk</Ibk\/EDkUg;9V^(uHZ<.k9MRjkh0(H9RTerC7)#pl^`0F>=`3[VWNrh6.LQ`,fjta?=BmV"B96n10uhAW8^:*#2*OWQ(^_cu6PC*>hpn2+7iard+S70`tq[Psb]+VQ7"^^G>)Mn%k[>fg//_Sgsmm1`,t4^+r&E37Wf=jPA_ngUaE~>endstream
endobj
29 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 344
/Count 6 /Kids [ 13 0 R 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R ] /Type /Pages
>>
endobj
30 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 846
>>
stream
Gar?-:J\hm&B4*cMK^Vke1MHOX,;aj#QH=]#;3D)@*Ed0]3?K:hP!t:1m@97k5F.`aVn\NVL-K)\@&hm0JFa(2,'V(YYUY@_<8W+b']@YcR)eTl#`5'j-s:64Y(2@?=jUM_dr#mL`[(=8&)-pAqT09p>l.3)@U%=<&+5H,]=rnDArr>[?8.1nVGn#eE_FY"KS?UBTY+Ao`QoB&$d+*"4k3&@L;nZE3;cAJ/<E#n_Eo>/\B)H6\NP7,A_eo.YPmgJOJI[:_pYCQHn>nS5m'L6F<l!D!&$3q:Bo<KpkDiNk4:ELlZdF@*=g%#WigL<4t._!JU,3l#2U]_M\m.hb/BFNW~>endstream
Gat=*gMY_1&:N^lk)lHKZa3a1O^:qb6:q;[T-@8NR)T`HWA1CCpDo_??OFeB(+eh?3HOo\XEP484]m(b,Cn)]gta3J!,i=FQi_11hn7@/&Uqr'RMeV:"kHksV5jkl_i-ZDC'dSFL0FnMe\Y;ll0f4(i\?Aq0;9!Z;!0!Ta9*P$bghC+i2pDbQmQbW%uUVX[[St'kOI!XAWp\g#4MqVhclO)S^*jGDSUT&mhR6E%[-`XcRINORBC(9NikZ][r'f]l%<s!=$Y@+]OM0+q_X/fEW5Hce?EUdb3=_c/JF-rin#OpLYO.RN"F&":0Z`u-8dNi9V=(MJHg..I7p++;pH!Qe/VL#.VQ:;MI0t=Y9C?@H-J4Zl8#QUb(srlikPh=MPLg`T,-^VLTTW+=$*ZTGohjMEXt/F#+P4PKGp9<BWbeCl#68]Mn+kno=JK]h!#C^lN*p\lm55MXQ9fS3(m_JY5R#1]a+H+-P+ur4uKk5_-=DWPPDHQ/%DiOWZ>onQSe1fOpW^(CN&SH]u'pX0$K"7M3&ahc!VK&oGWK5=bZ0\3Fi0.,P>5j)K'pXnVc`DHCRuPg[BImEpu[:_-<"Ug&'lU_muOM(%.h,LN'IbMlbNj%O^*[]53tT*QF;T6V5$>bC()C).`3j*i]J:B>O-bVHi#Ki;Q$7f+E(W<LSf,<]g=VFUJ%0hY9rj,NXD6YUG6NI=O8fH#7#-ar-qd@]0foMC^Cgl9i3N\IFX)@;H$T.thUZ9SH:PKW5ThJWM`p9j&bDPs+J7N][4hfD9Tl7Pe_F5mPRhbH+%;#23q[dWCoQ\2A'DTVZ5`ctc]rV@fAnNZ98Y\>GAo0_u#mOE_]~>endstream
endobj
31 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 576
>>
stream
Gatn#?#/1K'Sc)J/)I=hmR!3"&)"Qf=BbtKb>M[OL1`$9=2i<-H"$`%-[#c$PCY/K?suXXo:0kQ$#jXRIo]c]?JtN`5Y)T)LmZ.053&f5r0iH%auEgDQLG_`.E8,FVXJ2enOuDD";^)J<uIAtA0),gc%Pd)-]Ht3[`"7tL6Mq[Zm^D@%D,)@gS!<ZDc$@"nc$?'7dUgQj_s'I"(!,9,8<<>_3S[A1!Zsk]PBkJN8>UB`GG&NX(g$\n4p0)7YjIc[7%a]\tdK=nrN/>=Zj4"2WH(D>O$]8@R57_)e5=[K=.u]&Tj/LTV!H`SPPpYlX;jC)H5Z:S2RtNH3B]b=%e%LEFig"$Qo#d;ZV9Tfk>]2@9p"kQqF0"HnCte2M4c/n@BnH8rL0U)[8lMKMIi<89&Xr\\*H1NpO9+HkS.'<8_nKk0&q(3.gFTq-efD+)U0jr;hi<fC-'!P&5!9Uf?D^p"&b:4aZOtHNp%G`Q*?'DY.6sO76*QphmRI0$mkMXt:+*[X,7)Za32jMM4kU?MB*:.?undO146Zs!1K9A5j&,YXF;KO(Be\MtA)$-@Z'A3D.s~>endstream
endobj
32 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhNS@cJ`sQ<)AT7bBX2'SI1sre63!8eu#Hi*12+:VXOqE!h>Xcq$8qnjH_CLV:rJP%rsj5>UUDD.`Liah"L%cVntog).//WF]OI2_e/&`/?Tki+CUX9Pb^j~>endstream
endobj
33 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhN!`Q!btAh.P+,O??T$:5)Js2%0!'c(Chi*12':B,^cE"9mgcpTunnjM9CKRM'[P%nF[hj8K8<cdi[ag.prcc><c[4u7=;Tm#&O;KE.i_Ac@E&[+g9Rn-*~>endstream
endobj
34 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3360
>>
stream
Gatm>=``?/'n5n\^eCYcEb!SR-.u(Slt"nif8c3k75GsAKHqfg_$a(GVUPS%&)9QMUdQMc-ZLOU!,)8U!Z=DHO-0D,7tc8;,c@7C@[Q4r:(1@5al?HCom$,\O\ns/Nol?Ah'U%EX-pO^`4D^^XTV"h,5CI03uc^YL.*..@d'8Up/`W%e:Dr>,8Og/8L7TZ,j$P@ABkAKLsMiP$D2SeRB9R.O;F38q'oCJJ$=/`dNp3R-W?06SoUHY)L5+"^LMUHhgY&B:C2rBO@D'%BgCNg>#5nA%*6pTL[(gi8<V*^c-=f;jSIl:('S50#jCm%_SbYTjl7FnE#3h=j<G%"`C(>b5$d_5TL)E2CF'QlpoR1^VIg9[UK``G=E?%6hEg(76X:f$+L&58lg?gNcudHM\d=mhArPR9%K]/,>gqIo?tt]^FLqkGZ0%(k*Cnbb2KD8f2Z`ia,\[%DU&5AdA_q$2cZOI/be6j@\!9#n\"A1qg$@'b@lS9cjR'he>cRQ1&nE(6+$T5*TFKoFqc7>]^&=<\?/D,9:@:Y&]N?LcUrPl"T<`)ZNesPdI$2j$_.%^aI,W0n?7RdYm"Z#+Y,Kb_DCeAt",[)i>KoJ]Qej9h)6jOWb4/E86F;#XOG0@oiU!^/qRm6+KNuru6\j#^K:H1Ogio\/ij5utqI:-nT>hLgZD@J\A&=FonJK?2#TBsJ"G@&Z02J4CO3'ld0>\ISa<d%L@'c-8QtPPi'mg-qO;mYV`h]KJD!aZSOH6G%J;U&n'n/j^!'\80Osp##q79mGinD<-X5F4R"cb5'^,35%p([C:UnN)f8XcFU:#LFt/_T1MeWLHFP\Z1XKO1+`2$9$kMs*1sFE/fi$cjbod?UVePscPTHSgf$[k,'$RBC.eXm-DE`tF-uZY4G\3sh@jL-Mo0-rp`5h0lMFBNB7p\a(RIVXf:O/Tg4kK.iH9aL17F#;Y@20h48L`T]c7rWT-dpQLsG=&_3aK#ip"38;cTj&d%[J%lX2!"sQ+ioSH!?3erf;0!*heUQb>Gq`MladV)n9Y7":s&N/GpbUqmU`KZ'GCiTq'97dME23&JqYkkp&mLO?HbD(/<)*ZmMK1@'%/GgoVilfcKb`5U9KX#.Wi]V>Z$VCa<)>4L@k%*BNU$09gJDaf@ZegRH?Ys'/A38&/I6>fkM@[^iM;:=l2.f!3&SS@'-*rbT6<KN(7J,b=BfDmhb+5i^'.SG)fkjDK*>6t@#oE8MF/j>i9$GHO:)gHds\frSGmdgq*Ok(?H6APaJi#)&^-2c'!+H57491T1t[#EU-Q"[:P_XhZs6o+)Bc,]RZV^7oQ?VCA[2sJdSoDS6UF^O6+R]6,YPRJ,)/H#Z!Ng[ki8-#*!e,0pc%tH"oWNSZ'[u$VfO1a_<sltH;5C]W#Du4e@(n$q3jK&/]T'(20SZOLhN_Aa0q[$MQpu2KCQ3Y)Q$/&i7YoLq&e6er=gN[d70jAgY&Cu]3&U)p?l]V5Hum4_0Q\7)Z+-;R@3r,@;`Ja(3+OCIVtBZK5kLc$i!Dnc:uL3>i#@HI6XLXC$]&2XB_N)$qG6XR+WqK4MH^J=N?bcP/gQ27(CBsgF>hd3'n0U[BE2-q^!jtfI=(2QZsJJG@YHH=Ml0b)"duKJ?\C9`'G[,3(A5H01rF32FM8V],b@Jp7YsVaXq:2o'Ai;Y4i=Ol^S`;[&)1kiY]\/i`r2\$@)]*Lin/r]$?bBmWNV&=(cA0/lP?ZeM"cUmnMr0!au"=8[g27O/h,,8MauemIKQ&e)t=&E7%pB#"4_a<$4H)CsjP(<]P4BHAa\tre\DIO0k$0ZlOcUJ)>`>64S5h;)qh?*1fLfOM0$,TBdF<lYF'M7Jeuno\'[8PqN-l[24';?N@0C0CVrT!!_%]i$j.aRcE1NMM:>h@,Y<klEk!lO_JtLBl)8JXFd+%Ia&L8)Zm(nfI,r-\'qHW6)MeE)HB=)q/=ClB_/Z5AWsSgSmGdZSS".?T[/S2S2WAn5h?t=XZAl`Z&2P.VF!LLq5N?Y%Im]mW9Tp<W+)Vo'k30q/kta!XD[V.)Nq&8iH4QlG\F_dFB+X=2G`4b`>EbT/62"]8ub+*;hL=9E=LSpGiJ*Mn,DD]JW@maMSZS1Y,uPH/9i?U9s]UikilXiKm2DTM<+@O"h#=@pmd88$>e80f68m/8.sF;fadnj&BdM+JQASqgFX?ZF[9uN[k%0X^0Y#Sp1q0BO7q&.`YF!<<m[0Mg90E!i8%OIm!$/@bT+#@k'(h=cKC<JkHD'miA-;*ZdPhuVP`dogZlf`Jtb]!Lm44tYt&mu^MB7J%C1.?p;1->0h/omYM4)NfAN5ne8:Um>Mp<DcWk;2[goWaF/ZH'eEUk)GABPfp'r.MWJh'3T$\R-jdmrY@EllOfpncEMZ=M?JX:[WhG[0]/.S,mn*Nk/'a80S@!`6IcgG\ET&t?LCfjYn9@*&a?T*[7QY,rfL5dqU*;*<me'tcs:HNAQV4j#!#n+sXaNG*$Se)Ksd\_>n@o]$6mJB;F1lK&3$OnWcF*E+VF8^40cs*\6Z0CJc?"f.=;^3]jZdAld"?'n+l)PC`b(%e531i%KH;Qpom\=`LK:o/!`ET(6isCYqPo"&ts-b==XcbTOas=TofH(aE2e)b!W^0HGfkp]Nc":[FL&iPf4U,JfX4BNgd?pju(&*2CrcR*@dAN</>q]8<lP]?1=cBJFg\Dg]V$&6s7p-$XEcmG+:#1OL5d^m%&%KA(mRgVeeS`1iW"4g+\.be67:XofOFIg=KBD!&NN?L3&H@@Ag%pT#XDL&f$+r,@DU>gs;?/kd.hJX7HokDp'M0-853(m*BsutuH!,3G>#&hY3EK*OGn`11m:1dBq5a2,jSCF>9)6bFq/o=0X-=.FD9TuTQh0J`9^SW&Q0fNu?1Pp"kmD1'5'!E)f6;ti=omCJOi`$neb9R[NFoSTWhdA%WDl?>:6\:0&4V1'T-MtH"eX%@deC'%^C24UU7(YD2B,[E54.`U(gJFM9;XOCK3#Nd/<JZ'$??@dI>TVokY._adb<5e$;=#%`QA+udH1R:"d?MO/MBmG\s-0B[A-eY0Q^rgTBq)*,f5$e!=\YN<81'(#pVip2Wo53_2L!H$)OdOVP\'!#)^%qVX!.RQ8)+GBZ#0O5.36l[EXeZA[.)blMQC^cT4G(BIrbuL58'4/WFK@_SqSb`kpcE(uH['92E>pX7%-(#GEL\l:VA'p_"CVF>C-X>Q1-fO:s:!XWmM@$^.e'ikqs95#aE%9JBEsID-k8eLc3BM`P$J>"t)FGds?[I)s.VIj57)[]-9Cj-re\qUUD0@16Gir4O0;B4m8_\!ZL5=ELX<ArMHh<1]Og(o*&GJV0];h)L00r?'lic[#~>endstream
endobj
35 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 439
>>
stream
Garo>b>,r/&4Q?lMRuOoEoT![DLkhT@K@d?=EG4>Bkue^-$Cd7pGck8I=Nm%o$#lL<uuGXDXhTt.c;qsBZ@jjA1R/2Kufi>bm'dBhH,FDMpo`XOX(8)a-4m7>hTM[YnuTE.Ki$f*mK<)^?W!fl8?47akR6*?o8@lP%rKWZtp4<13SK?"5-D,IW=[,HkcL:+1HL_ZfkeI,<b3Sd#OpY3c)iN/Tqlcl]mmW,:Zts?e9MmYk7dJ1NK4[+,()B+^#9u$s'sZiXPPAi1_E,%CD:FL?Da,:!k+c2%cp/50QJTZ@oJL8s")QJl(N4"/10Mkh!\"DJ[lPU"3/M(@''6:?8R7'in4&^4juNmsAk=ksR40Tp2=`>V4#>QWb!5RKQ8McBB*3B>#AY^Sg*d=PWqIPM&@aK^glj&O\204H8&\GqhdEcSubh"1#2:E<~>endstream
endobj
xref
0 30
0 36
0000000000 65535 f
0000000061 00000 n
0000000124 00000 n
@@ -182,33 +233,39 @@ xref
0000001227 00000 n
0000001375 00000 n
0000001491 00000 n
0000001752 00000 n
0000001858 00000 n
0000001597 00000 n
0000001803 00000 n
0000002064 00000 n
0000002270 00000 n
0000002357 00000 n
0000002676 00000 n
0000002750 00000 n
0000002837 00000 n
0000002960 00000 n
0000003079 00000 n
0000003191 00000 n
0000003301 00000 n
0000003431 00000 n
0000003547 00000 n
0000003622 00000 n
0000004353 00000 n
0000007736 00000 n
0000002476 00000 n
0000002682 00000 n
0000002888 00000 n
0000002975 00000 n
0000003294 00000 n
0000003368 00000 n
0000003455 00000 n
0000003578 00000 n
0000003697 00000 n
0000003809 00000 n
0000003919 00000 n
0000004049 00000 n
0000004165 00000 n
0000004261 00000 n
0000005198 00000 n
0000005865 00000 n
0000006093 00000 n
0000006321 00000 n
0000009773 00000 n
trailer
<<
/ID
[<dfaa46b9252e64daf7c85ea1894037ba><dfaa46b9252e64daf7c85ea1894037ba>]
[<663b5886a1b00b1f8a1f420abfd25fa3><663b5886a1b00b1f8a1f420abfd25fa3>]
% ReportLab generated PDF document -- digest (opensource)
/Info 17 0 R
/Root 16 0 R
/Size 30
/Info 20 0 R
/Root 19 0 R
/Size 36
>>
startxref
8171
10303
%%EOF

View File

@@ -1,5 +1,20 @@
# Android Cast — documentation index
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-16 |
| Last modification date | 2026-06-16 |
| Co-authored | |
| Severity | medium |
| State | pending review |
| Document type | internal |
<!-- doc-meta:end -->
\newpage
Click a link to open a guide. Section links jump within the document (GitHub, Cursor, and most Markdown previews).
---
@@ -22,6 +37,8 @@ Click a link to open a guide. Section links jump within the document (GitHub, Cu
---
\newpage
## All documents
| Document | Summary |
@@ -51,6 +68,7 @@ Click a link to open a guide. Section links jump within the document (GitHub, Cu
| [ROADMAP.md](ROADMAP.md) | Implementation roadmap, alpha definition, deferred work. |
| [TICKETS_ROADMAP.md](TICKETS_ROADMAP.md) | Tickets console, Gitea, attachments, agent queue. |
| [USB_HDMI_CAST.md](USB_HDMI_CAST.md) | Roadmap D/E: HDMI awareness, USB-tether transport. |
| [VPN_DEMO_GAPS_20260613.md](VPN_DEMO_GAPS_20260613.md) | |
---
@@ -59,7 +77,7 @@ Click a link to open a guide. Section links jump within the document (GitHub, Cu
| Document | Summary |
|----------|---------|
| [20100611_3_url_shortener.md](specs/20100611_3_url_shortener.md) | URL shortener service — SPEC (`s.f0xx.org`, post-alpha). |
| [20100612_1_scaling.md](specs/20100612_1_scaling.md) | Platform scaling — multi-VM clusters, dev/staging/prod, cloud path ([PDF](specs/20100612_1_scaling.pdf)). |
| [20100612_1_scaling.md](specs/20100612_1_scaling.md) | |
---
@@ -68,7 +86,7 @@ Click a link to open a guide. Section links jump within the document (GitHub, Cu
| Document | Summary |
|----------|---------|
| [20100611_3_url_shortener.md](DRs/20100611_3_url_shortener.md) | URL shortener — design review (auth, slug algo, task graph). |
| [20100612_1_scaling.md](DRs/20100612_1_scaling.md) | Platform scaling — architecture options, RSSH capacity, task graph ([PDF](DRs/20100612_1_scaling.pdf)). |
| [20100612_1_scaling.md](DRs/20100612_1_scaling.md) | |
---
@@ -77,8 +95,6 @@ Click a link to open a guide. Section links jump within the document (GitHub, Cu
### Infrastructure and deploy
- [INFRA.md](INFRA.md) — FE/BE topology, nginx, ports ([§1 Topology](INFRA.md#1-topology))
- [specs/20100612_1_scaling.md](specs/20100612_1_scaling.md) — scaling SPEC ([§6 Target architecture](specs/20100612_1_scaling.md#6-target-architecture))
- [DRs/20100612_1_scaling.md](DRs/20100612_1_scaling.md) — scaling DR ([§15 Task graph](DRs/20100612_1_scaling.md#15-task-dependency-graph))
- [BUILD_DEPLOY.md](BUILD_DEPLOY.md) — Docker CI, builder ([§Docker CI](BUILD_DEPLOY.md#docker-ci))
- [OTA.md](OTA.md) — OTA v0 layout ([§URL layout](OTA.md#url-layout))
@@ -131,14 +147,3 @@ Section links use GitHub/Cursor-style heading anchors. After adding or renaming
python3 scripts/generate-docs-toc.py
```
## PDF export (markdown → PDF)
```bash
pip install -r docs/_pdf_build/requirements-pdf.txt # reportlab
bash scripts/build-all-docs-pdf.sh
```
- Renders every `docs/**/*.md` to a sibling `.pdf` (skips `drafts/` and `_pdf_build/`).
- **` ```mermaid ` blocks** are rendered as PNG diagrams via `@mermaid-js/mermaid-cli` (needs `npx` + Chromium); cached under `docs/_pdf_build/mermaid_cache/` (gitignored — regenerated on build).
- Dedicated diagram PDFs (pre-built PNGs): `build_git_flow_pdf.py`, `build_graphvis_pivot_pdf.py`, etc.

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 15 0 R /F4 17 0 R /F5 19 0 R
/F1 2 0 R /F2 3 0 R /F3 15 0 R /F4 16 0 R /F5 17 0 R
>>
endobj
2 0 obj
@@ -17,78 +17,88 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 716.2874 95.92504 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 762.0394 95.92504 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 705.2874 95.03704 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 751.0394 95.03704 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 694.2874 99.91704 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 740.0394 99.91704 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 45.68504 683.2874 74.14104 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 729.0394 74.14104 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 59.68504 672.8499 142.6425 682.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 59.68504 718.6019 142.6425 728.6019 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 20 0 R /Fit ] /Rect [ 59.68504 662.8499 132.21 672.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 59.68504 708.6019 132.21 718.6019 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 59.68504 652.8499 106.38 662.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 59.68504 698.6019 106.38 708.6019 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 59.68504 642.8499 107.2125 652.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 59.68504 688.6019 107.2125 698.6019 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 59.68504 632.8499 125.97 642.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 59.68504 678.6019 125.97 688.6019 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 45.68504 622.2874 102.165 633.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 668.0394 102.165 679.0394 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 45.68504 611.2874 109.701 622.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 18 0 R /Fit ] /Rect [ 45.68504 657.0394 109.701 668.0394 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/BaseFont /Symbol /Name /F3 /Subtype /Type1 /Type /Font
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
16 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 45.68504 600.2874 158.933 611.2874 ] /Subtype /Link /Type /Annot
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
17 0 obj
<<
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
18 0 obj
<<
/Contents 39 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 38 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
19 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 16 0 R ] /Contents 38 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 37 0 R /Resources <<
14 0 R ] /Contents 40 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 38 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
@@ -96,14 +106,9 @@ endobj
>> /Type /Page
>>
endobj
19 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
20 0 obj
<<
/Contents 39 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 37 0 R /Resources <<
/Contents 41 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 38 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -113,7 +118,7 @@ endobj
endobj
21 0 obj
<<
/Contents 40 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 37 0 R /Resources <<
/Contents 42 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 38 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -123,109 +128,145 @@ endobj
endobj
22 0 obj
<<
/Outlines 24 0 R /PageMode /UseNone /Pages 37 0 R /Type /Catalog
/Contents 43 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 38 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
23 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190938+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190938+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 documentation index) /Trapped /False
/Contents 44 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 38 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
24 0 obj
<<
/Count 13 /First 25 0 R /Last 36 0 R /Type /Outlines
/Outlines 26 0 R /PageMode /UseNone /Pages 38 0 R /Type /Catalog
>>
endobj
25 0 obj
<<
/Dest [ 20 0 R /Fit ] /Next 26 0 R /Parent 24 0 R /Title (All documents)
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 documentation index) /Trapped /False
>>
endobj
26 0 obj
<<
/Dest [ 20 0 R /Fit ] /Next 27 0 R /Parent 24 0 R /Prev 25 0 R /Title (Specifications)
/Count 12 /First 27 0 R /Last 37 0 R /Type /Outlines
>>
endobj
27 0 obj
<<
/Dest [ 20 0 R /Fit ] /Next 28 0 R /Parent 24 0 R /Prev 26 0 R /Title (Design reviews)
/Dest [ 18 0 R /Fit ] /Next 28 0 R /Parent 26 0 R /Title (All documents)
>>
endobj
28 0 obj
<<
/Count 5 /Dest [ 20 0 R /Fit ] /First 29 0 R /Last 33 0 R /Next 34 0 R /Parent 24 0 R
/Prev 27 0 R /Title (By topic)
/Dest [ 18 0 R /Fit ] /Next 29 0 R /Parent 26 0 R /Prev 27 0 R /Title (Specifications)
>>
endobj
29 0 obj
<<
/Dest [ 20 0 R /Fit ] /Next 30 0 R /Parent 28 0 R /Title (Infrastructure and deploy)
/Dest [ 18 0 R /Fit ] /Next 30 0 R /Parent 26 0 R /Prev 28 0 R /Title (Design reviews)
>>
endobj
30 0 obj
<<
/Dest [ 20 0 R /Fit ] /Next 31 0 R /Parent 28 0 R /Prev 29 0 R /Title (Development process)
/Count 5 /Dest [ 18 0 R /Fit ] /First 31 0 R /Last 35 0 R /Next 36 0 R /Parent 26 0 R
/Prev 29 0 R /Title (By topic)
>>
endobj
31 0 obj
<<
/Dest [ 21 0 R /Fit ] /Next 32 0 R /Parent 28 0 R /Prev 30 0 R /Title (Alpha and QA)
/Dest [ 18 0 R /Fit ] /Next 32 0 R /Parent 30 0 R /Title (Infrastructure and deploy)
>>
endobj
32 0 obj
<<
/Dest [ 21 0 R /Fit ] /Next 33 0 R /Parent 28 0 R /Prev 31 0 R /Title (Backend apps)
/Dest [ 18 0 R /Fit ] /Next 33 0 R /Parent 30 0 R /Prev 31 0 R /Title (Development process)
>>
endobj
33 0 obj
<<
/Dest [ 21 0 R /Fit ] /Parent 28 0 R /Prev 32 0 R /Title (Product and codecs)
/Dest [ 18 0 R /Fit ] /Next 34 0 R /Parent 30 0 R /Prev 32 0 R /Title (Alpha and QA)
>>
endobj
34 0 obj
<<
/Dest [ 21 0 R /Fit ] /Next 35 0 R /Parent 24 0 R /Prev 28 0 R /Title (Agent bootstrap)
/Dest [ 18 0 R /Fit ] /Next 35 0 R /Parent 30 0 R /Prev 33 0 R /Title (Backend apps)
>>
endobj
35 0 obj
<<
/Dest [ 21 0 R /Fit ] /Next 36 0 R /Parent 24 0 R /Prev 34 0 R /Title (Maintaining TOCs)
/Dest [ 18 0 R /Fit ] /Parent 30 0 R /Prev 34 0 R /Title (Product and codecs)
>>
endobj
36 0 obj
<<
/Dest [ 21 0 R /Fit ] /Parent 24 0 R /Prev 35 0 R /Title (\376\377\000P\000D\000F\000 \000e\000x\000p\000o\000r\000t\000 \000\(\000m\000a\000r\000k\000d\000o\000w\000n\000 !\222\000 \000P\000D\000F\000\))
/Dest [ 18 0 R /Fit ] /Next 37 0 R /Parent 26 0 R /Prev 30 0 R /Title (Agent bootstrap)
>>
endobj
37 0 obj
<<
/Count 3 /Kids [ 18 0 R 20 0 R 21 0 R ] /Type /Pages
/Dest [ 18 0 R /Fit ] /Parent 26 0 R /Prev 36 0 R /Title (Maintaining TOCs)
>>
endobj
38 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 717
/Count 6 /Kids [ 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R ] /Type /Pages
>>
stream
Gatn%>Ar4L'Z],,'^(TRRVP!)SEp[l8<[5ZQTXiu3X.>P4**_AhgS=n0G(9i'LbWipt3@]\_+q*Y^8q8Q6j=+L$KTW66TV7#uLum/POX0T)mVJL($L*_]a!E&IsuNc#^c.a#%0)THK(FNra5iPE:<#%c!L`O5Z1d%RGZM(-uXB+G:ubET"jc%#-!t=d*K;,O,KqP]Fj(gltDiU</CL>\E?h$I[gnIY7+0PF^80pRK\O&]>0*)(%pCi:MAr2aD2[R'b:I9Q9mh(5=V\8pHkd-?iBfAfkbO_)%*bbWG`JK7N:tr8UB<5+qNZcs\Dq$O(,Cdce[SY4`Fjdf"<;n.D5$M[o"8US?D=b_M.0^;s*8P5-;g?(lM9UP/>pSu=\WC9ZtL=0FgOpl^#s7???"0i]hhT`"+P&d&#E(Eg0B#9EW<?<F[0m7&uQX$GkW10#(Oh*XfaYEXli;2)"'RY/a$WG8%NY^T$"MJ=HK0Kb:Vk[D6uZ&ib_fV5BnI)"UTq2Bc@:$1`6o3RkZ8KSBUpNGaOgWVl$e$s]<Pm86UIBi6/m[@(WF1m8!f8YRG/;a7UhbRjWhC<#@ZQ,:JXu#[LTp'FY$][pDPXW38j#+V(1;ECB9i4;fo%u(>@Z&7Pi.<R#SoiX5Za!F,3&K@VI@sWH]*T1^?J"[]m+P_P=s'D#I$Lh-=c!@J:"=s:,tD)i$<N[:ASd?$*/249'2&ab~>endstream
endobj
39 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3411
/Filter [ /ASCII85Decode /FlateDecode ] /Length 836
>>
stream
Gb"/)>BALj&q801kbg#q/-q6<O>e%fLQ)TWiFG`LX&NR`J79Z6?*M#WIX<=c99'$EWSN?c;m+%[HC2FkFFVb&"@W/2l2T$Ei,Sk3.fr+j`<qDF.'U2^F7J5P#BH32W.NT%70W=4?Voj8K&8r$R$,A[#@)foMb8R.Mf$%95@%.I+5FZNcuYaJT]!B[,K'Tc46GRBS[_<>JAn&2%K)G/_2i-=K-rV7\3@hM#0XeR[`jfkro2Xk5:6s^(a`Z*KH6`b'"1(?_h<c*bM^Kt?-)^lH]%5U$6N^H!u?B*F`-a4?'SAT(DWLAFC]tKoQ?99T:h(\KV)7K&Ah-b8R2;PQ'@;1OP:3s%*pG'MiPr[o`\2>.O\c@`(1I:P,ueKa9,/dq]P+&1f+JPLQ>f+jZ\P]&0rH6cm:H#$s%l9Rf"P*,H:.V&^ggtGl'T&(@IE..nbL\Mj:-QG(+".DR6VqSmN?o6&V">jo!76BsY*ihLf@c`e1(:hLe43j$BE2pE3>eG`^#04\/*_%heEF#7#)cW1WgVf#E.'H1/kWNaE7Q^$E7=8t&?td*oKXrK9Z]N&^[UglZ0._[;#QD2\tpnS!03A4b-9XjuE3ZJEsujiuN@n+/Yb66C5/(Zq-i`)74&(ho^TccpCjgbN`iqJ>W;?l)5\MsMjU8D#P1.,:?ieF,$CQKQJRD1e2VFW;/cQrh%0pJ@%0b4QSgZgmua."jXQ7T"n&+#UKWhNb7&/dgWbh/2Y3I(M4l2r0`84OmBF3GXh"K2iIHd;\@HC\U!F@I6O(83-P1TgWQ$lKpJD[Rh0W2g!A@i<U<b<kkI3qR1B"qeXokq04qB0?0kh9C7>iYC$O7d*SgQ@mZrXL$2>l#i57ZFrp<T7YP4dW4"+9HV)Wi_D<+L:UUcBi=uDD(.JS9;Od#d]K'I3?#=G=90<XFr7cI0=uL7qg\"VkX_3j[>VAg-=L`Pq#$\\)^n,l?1>N*F`AC=dBC"h8#ErhmF\#lbkcRLZFgi--e!Sd_]?/8<R?r-Lp%3.InS/QtB[ebIF:1_O[%eX_:?nYag?D&E_P-YPC!<M+$6g'n=?PR$I`??GQFU3EE+hqY?k'WHFa.@+E&[4SfS6POP0g9)r&tk+.r&?6QFnd>Q/=BSX>Mk,HJ%POTuH$UnQ[g(\3)-oN;\ZWi7<G"?2NGc[HbPjX_?_5-_n3tafX'uXf:ieSo2e5=IUFliPtX";*Z5>feDU:_jJ^/3,5i18q&n%*"a,?pW^Fc1N(3j5ODZSd^6+GoP6TQF(Rq;1jL%:NGlW1%J:a-??L0b-5V0TIMnbs?i*KTiqj#!ZbtQ]O6H"liJj7rF=J0X_*uo4GW3>S@2t`l9`M2jD@7KkllK#X+eD76\8.[qV[K7%%uKUl4e9BL!X'`@[e#*;P7%"&j.P@Q1,7t0Z#N]<^#g;(CsTb%a2785`Yb!)14gR+N>][NHL78CRGJe7%-IfragjF$c55WUSlX+H(k1DXCkDkCCIk30,j62YjHsYj6SS0udAR!7FIFIiA&NIP?J&=<e*ltZ;U5B>?]NuSLrXDN3"A.1,5$JE[OH<E$^Q,.At%&;j#<1i5BcOhHAk<1M)R`5Eh>&l-e(4Cmuo(r)WR7O\T)2.2=,a%#Or!QRuMr0\(SBU]lWp6>gIN:q$mu`#?s`e76EP8LNGt5MW`Q1,G&)JW:!5gji/ETr:Of20:0+LHklq0,caDSGQU88na[!h0dHu)>a`.cjmlL@,uq"W5PlES04T6]9="^^b[QAjI#N0W&Y`sF3ZS8mA'd*(R9sgL2t[U.I/RK"j=sIe9YSRQ?-M7r#NF+,CBbWp;8E]76Hm`XF':`30ucf8>8Yp-bJqdjqclqA(4:@83i:;7`,cGb]"[d!D/bFE',KRRnk=iY1^5thfpu\Y1Xl9"r=&eJaB6q\)D-4$P,N$\(jj8aI5dVVQN=bga+lF_.@IA)l]e:F`g@*sHnE$8Xc,SFhe+!ToHd%;fS^c_hYHRH[k-slamEPg-S]m3[5O+I)G]Ln29%JZq:%<]HJ,e'l42sNXqMqnmm6e/3Xh)j?Jmq):-0UTe/L#G%mf1NP\OrC4>SoDdtMKT6bLWGp38?nLRaehqX0+)3hbLFp&s1<cGNA&*WmmOThJI[L52ol],T?tSmck"L+%%OL.Z#G0A'-.P;uoXC961>(eorlc$E:Jm#+V1mjQl>3CF";Q;Fk*&`,<LhrU*pcH3p7dI1!F5+]cI9nc].LL88ZAN*Jo"W%sUD&hZ(OUbWkmjP1Sa4/e<I6/FMq0hXC_NL+UXt^KuZS(XkUWM.0)V1XS0,nhob]bc+R@f$$!r>;PL,V`S$i,!V`k`p4Gj7d=_7Z](5OdQk%mjXO'pZShht-.EJdP:B=*"2l6Jt3AXHXur$"E"+Yr&^BjiBd$X'$e.YTOOW6Gd/+iZ62TM%9tl?`T9-=HIX86Gd.sdOGn#@6mf`$42Ik8QI;d*#9fV<(Ju"87KQ>I$g+BLTj2+_h-CA=G%+lP#egl*u6-0@LYLP84pi>HruKkMDb15+H_O=poklt'l3;I:)[)j0mL*[?8705C'h"O#jp.PC;gVHWtj]Q&`hB#W,@ES"f_dJop;I?G!<GKMF"sjDi_S+:dbb*9$5PZ#Dso;\u$R!]HHO9R*b>>!ocSf?+E]Kj3KqbONF06l-//jV8h8C2P!^Eg_n'sj7_P`Z9.khDb`nVHBU`22*u-4:.!9eGi9BY6!1I<hmDZh2nsoq8(!;fX7^]N)ZEp!M1h/hr%&!0qG")Ghl[P%VZ>dOnYnsh1,Xr"'0C5J$ES_='k`<jmH)0ZnL=gRE+"l4@[hVIg\j#2a%LY+.cRCAh`I&rH[#]rG*!IbbHs?t$[-N>0cOE3Di=Jf>,_X'V.R/::+,AU13,6PX/0?.c#kB9WH'>Gb![&qj"Z]FJu5NfUTDt3M?s`EkU8$E^u7T5fcVcd@YrQ@61k19Lc2ag<.\d%17%$-a(t9<]]h]B-#:/fXb0APgr]t-s'rm.L<dg#2([Sf%<a1Bl+l)[5(c4HeA7&d=o5scjZCjbl=7WW[H$4B;?^'aO4)-8cKPe5jlHk'\@^&^=1`]#3PqP`4[1:lSB6;2;!'OqY=bNK9X7s@X(GL[W<QR,'1D4U]bNoUdJ(u]"OV5G\B),EQ.`c+M^Cg=)b<$oG]*!?Ar%cpORGEb&5Z52mF"TlrY?dE]mG\oRIg#n5\OCl%2Ld*Zab&RC5FIA^M2$A]U#dsH#?CTDCPA2&5c>Se"Uc,l'YqUk',\Nc3,[([=gp2npC)RMXd*.]R7F0o?)>*%aQc\#Bf)FLaW`dS[:DDLPC*Np&S#BJ!O3sq7_U?H&q!dk./?_"^Y?/-7JPQ1HV,p!;Gf$JG]/33c7:ko(I)E)erR0L97!B=qWu'+^C'sET"/cW#0F[[D0cd+8u^ug7]5~>endstream
Gat=*9on!^&A@Zck"&Rjlg\V.Uq:H>MB3P-SpH6Lfk*[9D$XtRpN6N\+,,e!$`r!0Dk>#0nK:Z_YkVQo!+.m6HpL"%hAT3%!T"f.hWW8k:Fh,Eb)oYRes]G'$B)7>KK>&b%YVHOC'TQ\bS:EJgW4Epfo-+gZ6gE]bY9dW)aMn@CWc%W(Vk86#AFeTnDnLDpr/VT+Be(U'5)b0-8C0n@/bTUmiB%GQo)W[l`4lhoI;,ldOQcX$DH:bol;7;MD:H8I7!OV3K.=n,_F!OqYXhmU7bK7@:!]c**nr802R]%U323"loa1ic8^T!Bpi8DO=BJr$)rLKKB:<]\VAL)CIg`>T\Yq_HCNU$LKNHr<VQ!?gV!G:7s+><(PRE=`!#u;QInKP4A&cc[H!.0pRm<lpD?f%fj'R`PXkpGFV"(>J$Up_juPO6muFMHVh[R>)k??%hauO306^75REYc][3,;#K@sPFH/SDd;hKF*p>OT"R+oLHi5Q8+HE\?[;KL':JY0?2p4D/["rLod6Ic3=LMf!%%J)]]7nF8p_pshX%(F`%"(Je#PDNX7\*7m6V/GIC!IXB3Q=b'`0K\'u2k2rb6+Dh64G8>M[*3iek]#Ml'*htDAomK+1nPeW#CGG*<+%t7puilL0RjpP-B7uK"mYRMpHBc2dmDbLUt%-4fhqu;c`_ds]h8+`#+!4BX\[<`0Wcq./\+34<t4gO<fuL?6%+Vk.(94t.u\@2FG3O#KW5TXJIiQJ2\<X!X!t);T[:`sb&QU*Ej)[ul843P.!2]+[mUU.@4GsbXbY@OlL],J@R5$/d'9R:8Knb;U6HWB4@1hM_<;tifm$6~>endstream
endobj
40 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1820
/Filter [ /ASCII85Decode /FlateDecode ] /Length 614
>>
stream
GatU3CN&2l'`C51i_#tOd7t!nObE.h9nB`dBV?T?eOW6aO;Q%q`#7<OVYf]R3eaq85u!86+#ql_a60%@Cho^'7k9$Y.tBDt>3?f;3r!dC9Z7-a#^ua%cVN7AdVLG"doK2I*DKCjNf!As0i$6@G<&87r"Wn*SD?6XTd'g)`H)dH!ZGsF01-#O(iJ+Rn:,t</CWD4B3-S+<n_,bm9?1F7)8Y/;@250d&V1p#`YfqgY`R^Q`dWO@B/WObS_T(OWm"c(0QjHk:gaHFjkdB`Zpq9ktqn#D>P1W+%I)?7dek@hU&q?:;a[QVTU[>+!;*5Z5+_'pip)i_W["&/!uIN8>UG=X\78e-^TD9+-/P!n!+;L/EBH+k:$l#)E?6lTiDqhqq$B\*g?qnCdGQ2*84BN[K%NWl;YUb3/:Dl&%Z-FrZpu&DXY^gQcMRH2%gnC^dTG<=9FKA*(nP2kFT<;DK*o(.[GbX@)9^-H(XRK:[Y21_%jj-MSU4Pm,sAA'@7Lb$1(6b"YsB6/_*aAeBk\=2sCP\e5OY+:3i5tJ?N%TO?Jj'(g0^eSKC:Ro1`dZEj'uo2[/'XT9"KW>#i!@DL\7ALpqJ+;cQK>![CgR1uM$L"N^p"ESl(0-q@]$mWZ.uq\-`Q.,3=HU?m0o#2A`ASiKO68IT:8)>m`LIjHr3[?)@(DP>Q7[5"HH3YI/&7l3]LCF%C>[Zp4DlDj;q#O\fA-B'sl@,R&\!)O1aOKg_O>kc?>OU&\j.(M16d@BUL_7">F3=@Hd=+d13:Ab`[*'kM4@8da%-8i"e#9/Bo/\&?6LBIR'E.e%)Ikhn#Y"MIV2^$d/bTa>:RAbEt*It"rX/7HLmLEprAO&]#RO7RjqGtE&qhrA?6:.,<._%`jXT?F\'YV_uX)dM)_RX`=9cIQ>A:j^pka7lr'E!KP?]kG$0k$t;0^/5EotF]c9nC.R\bC2R'BnU.>s+dDA/'pfXn+I'Ea%MQ;4Z!ED"FY2bUJ_bcY*q]+W#8pVQJMnVbL7N@c.LS_pL[pl5;rT/V1$&;T!P/WqD=UGG[;5n3_ZVPhSbb:SLcI],_<,6*EKoNkQa4P9&hCPPVoS#nR[tD_Juo=<H_Q,<5p^3X>DRJ*g#WOZ?,k4RA_6OBUlX`NW?ZD]>.2<X-4C%Bi)dJj4K8"Fnq';,PfL'PDWq[sMLL,.Tj'RUgU^esshAhW9(7lE2#&XNAFK8s#AnQ@PdX.,tYNg,CWRYm2,f_Nk&6dPRR\=$*;P3oj;b-65T@=D'Kr^dKR(1@W>O&a[Y?-j5CI+Ue%c6efbY%G'Q??>T"gr';lJB&Md0-+Vs9KfiXoJi$sUnYVtAP!?TEZkJLsT\RfjqG>Eli19]]pWe?fcLKP>/qn.`(XlaEQ;_9,r\tpZ6Z$W17">"8n25@4b&Er&en):rO4bdKCZcm8;eRqJI("VhSd2TEP/](CI]a>bClH#`_hu6H!T5bK9<L/^B3Vm*RCotF$WP>fi_(@D,\Q]0>88n5>qlc:g05`<eeDa1nA1lMLK@`n_Z74pm%LHU@eId^X^cIFWr*%>NKGTpF@S\I\@u_U[))3oSA.\4_E%0cNL&bV9'!<.<2-9\2=/\'X*_D*N&jq',(7]3D[#$UT^%]M)E(6&FN7ajNtH(r83Pf164W&A$]'uXYDatApISImr84!Q2h1>Jp>78m?B^lk'#,VNbC<S<^Hd"bkUK`=VFQ,%'Lk^uZBg$L<*!Q!N;a9:TU8_27\*GEC8pM0b-jh",XTD,\#`0)OI+UiOetMq,c,aX3j!F"/0S+@,+,;#QX&(l/"bC3Z=hUDHiCaY3t;Mbl$krYqpt~>endstream
Gatn$;/_pX'SYH9/'_Y6#8\><@;j8N8s<;X?$Y4`CRg'3fZZ=WqX8'1>&A+5GnI?t#[dAPot<D`8A_%[?1!23L!(tRb##3+1QnI.MH)P225A45N0Cp48Hp=@8^]@%hh>X)'J/>p86Y/4-pRoJAObW:Zg^ceMP1?VI:09(K<]uH;9A]9_lf]7n_3d;"0.ul4q?r60M_00j:$M6N2J)D%-^<T[k2?q%f8e;<_c)tla1EXNKV#\-3g"V;k]PhD`.ep5;`3k#0kGmpIY#:$/TibMLa.TLXHTin/&5E*nOoZ"nEJ9G-^l1T_uW?85l;7?#-&VUa4D]=m?7Jg2?+7FNuAl7hd+"V\Lq)]<*'^iH?8.0;bR!UtY(KQ<b;jq\b.[0D^[7Fm+H4HY$up@Pm0AA>Z[N.XuB=&,dog#WCjEZ*._KI(1*$61sVd9]En[;N]<,IQAT2;fN3Ol?GY=SDrr6:>JQ_;MaMa$nhfpZj3N$-[]:GQe*anYOR6"JR5Cn.FC%cfAk8i*?'R"jV7t9e#nJ`8rrtuFk6Amk-["N%5h0jl[&+S;'Ibf7?4kKZd@<P.nP1P$3-+5;aG(/p7?9@.4rP=/f64's2Dh@2fRZUg&~>endstream
endobj
41 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhNS@cJ`sQ<)AT7bBX2'SI1sre63!8eu#Hi*12+:VXOqE!h>Xcq$8qnjH_CLV:rJP%rsj5>UUDD.`Liah"L%cVntog).//WF]OI2_e/&`/?Tki+CUX9Pb^j~>endstream
endobj
42 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 322
>>
stream
GarnQ4`>s,'\rL!2j,Y2Gf7VIg8H)\3`Pd>,m?5I#W;ibrdKEq;-TkXak$(>48Fnu%%uk//)XH<EDN5Aq@1@\LYgra8+.%\Q!COeM1e5G`Pcf9LV876-G%l#K*,CQ;^S0<a\kinanW)+]KY#]`""0\8d#Z3)`N`Qc5)/n`T4j]2mFrp>udZ/iF!\C_4^:C<uDgYN?;t]lsAjWG>7Cm3HhPjjkG<`>uMNQGGlJP@85WsB5@d#KYA>a4:eq?8MHQO3C`j8O>8*qqA(d,M.D@UpK%llfIN8YHi29O=@u%T.\qY&+uM4mF"EFOqC/.7[9I6g~>endstream
endobj
43 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3277
>>
stream
Gb"/)>Ap9-(4P^ZELp4q=dr7,eal6CP4iu;41:@0OWks#b;Rfd(bSRh^OAsE^rC(uTQddom3nECQOg6?X8:+CV][,A+3FNNC]H*ME.1N3:m`neaFXil>;564rqo1@T9L'VeJ1pc:"'5B)T_\8']T]q3>WhmhZ0MNa62&2)_X"H#gj")%*sPpi1q=S-h1i:rrM^u\<_L>gM'Q.S=_2P;nAkt&9THO&dZoN'f@!79q_ZWi4P\0r0a@"'*eRb</!Mu+C_SQ"m=rr`A<\VUM#6r65^7tMdK?CoZS/^p+t16i8i*]=1c\X8Z-3%`@`sig?G"O\]`4hF9\_s-%f`I3eKihP!Ph6c6,uqA<=m11J";o)'n9b#)UtYK7hVZe@O^:4e4d59D5.cgTOQDl;O$X/Hm_Y>5A85-'2Xla1MI6X!gV$aHeUjp]P52n#1OH<2i7h<E)%S5"dgR4*iuUHiNiQG1?:S[0A,&^.Kk!4K0O4VWOX6SXJ&Fp;IB6+:M`6MletJ8D#I338@j;f^CKG`qC49\kS8?YT8M<0g)"T]/`AScBk]S^mGP&5!s%KE7>T/J]JiVT_7QWd77\OYJ1C8;/b>ePBDB>"Y\-UDm.mUg0bdd06X^Ar>#5Nj03Ra,dJ(BnB]K+%#+)&CE#0GSFkG,Q9BZ!%=gu1#!fYVgW:8LRS8Lsl#8gCB?f3a'RnOf.-QLgALA]a:0</UFb@b0hB;H,5>tN"G(smm!dUM>*=/hc'L1D9Z`",FMpJ--#C0!04'C0jKBddGE*V=50W0uL964_('"(to);1!YdR!2Q#r.@HY/=XWLHX;DT"E'E!Q9hcV!.F:q>k*G[OupCn>mi2m=aqsdb4BJHtjQElfqn8Z*)</LRVn)\(>jf"\^cL(bp@>Mf]V!*&=GC09p_PMhkq2S%7!O;-t#*,"aP=_9Mq9E5`S]>%;O<`:ecti2YAdKg!>kYfF!X;sU6A=3:8:Ao_6XqaB5_ZH-\X;+Tb6gQ5s8]ic159V-+I-,YG[CN@AG5?SNb%>`i*h[c$r*\>sl:;*G=c)IL^Em'o2NN^TSCTh0T%\a)DNB;puq`?cQk'Zn7ZT4&@=.<SNO1!81WO6f.f):5@4.Q=gh4p1rCc39j2=n.NFqgdp+\E]7_#1V-4,ibO\BgD0r@S%'I`6Hs0+c+30uC97gau$<2e8NGZhgJ\-G68aNXs%^/&\.'mJ-Efm^C_u`9o^uE/AoS!I)M`nT\sDi&PpCm\^`nEI_S1_*Tf"X)j@2>4\E1nRuH.08IPa,PO64\7/\)"X/g#.m$$rZ556c_pFc9'!,,?IEIB&RbD"A%4%*8F#'?4c"Su;g1rG@^jk)A.=u>Ga(n4#2thiEVD(Cnok\,5rC).&,[,!'F>KFkf=0dYc.p`B&YoqAmioVc[q;-8^[iZFSJQ,ul?#R_cJd\9T=lQV%m>@/iC<L-*?u3#K4O5\+pb*TpJ/D;6_q*O1H/7mg:/r?D/9Bt)EF:@KI'lAh:N(jD3-R^?$j8O8<\Z8ABJ?k:,e<K[!`nfXlIF6Zu47H>%csJ,\D:F4`+4m4%qhpJjns8X<>=m&2K'N?f;243=+Qs/2FEqs5]"dC,PtcpOIB(i>F8l*e[Y7OEpVWFLVnAGeL26!3%j?)GeR=$i*N'^pKa61>D@*e-q6glG40UHI7?jEpXSD6ud<fc-cluZg6,Q7p9u(be:PAq`;'&Ytr(jF0gLjOC@;=pj:5#%kkN.o9M%K`.nq_n.9jPil'D!B0:I,=gNs!rkj%M`c5S6Ro54ub/,u!T7r6;,%s2G9o@s2*r-J807B%Q4/u<Dl_$,9_D:#iYtd*MdC/L"%m9_@8/'X54ZqZumLg<fY0PGnI#`P.I7C]sOS'N,I+)<+R`TYf)+Lt/gO=;NX&7a\OQ)m"p2<VATK53PH#<\rY;8JZiPP8L(9Zq-;d2&HWAtmC:!:&bj4qisN[E#\;gUsjgkad^G-lcO!I#3'\4BE%5c$?+WB/OLf<n\(lh]ir>i#r6:>LSs;gI+*6CW11l?ne"1T'Eh\/H6K7]s+jI>CJ::+?"t3C44C2,Wos&Y:gbhrU$feB+Ejq<prfIBRQ/[5DDW]_lNiB3#sQ4(rVrdO&sR*9k9Kk0?FtPJhXqfmOqP<rBo0B?JX9['$P)LY7CSj_?WZ/rePs+ba^F<:]Cle[bK+E+NFlfFc#"-$k:MoFo4N-!#<GO#`,t9k.DpO-;XfBTC*`NA6i(msQF[@;Y2MEm\h#h]JHnSSGGsi:(f6o1;d:V7]U[m&i)<d">IJ'))Q=j_Jl)_7`@!9Z6C0pI.%m79$7BE*.u'Xb^puM"l\hSqmnMOfh_Q3%RLe<"\)n'WDi-q61RT>"++^;C'@!&IqGGXb;rM99E>5"s4U)IY#$WiknZi=/*NdV+@^VK+CV;;MbT"Q6NjP%6c=3;C*6/=GfWq)LPYE`(Dl]YRh6n_&2NJTiFFQm386)!ho&ATN&e$m%PV&JfsH_M!BTEMa0-"L&[AIndWQj:_&BUI"/C!b1@qM1(Z:%BY."6i;lpq8B9hT/f4)EY?N,lFkihZAEE"Hq\G>gG)B&.DXfr;FkWd7FhB_O5PNK1S@5V!<$WYg#%C/))L5B-S&/:&U/j^fGt7(,H4-R0ntmhI8\d^Iji9hf/1ecl=!<B##CR_DnjfRK;54g!7ic)+/Rl\ZSMC-D@,3pL2t^0l:gZ'ZmAMn@#;&Na#M&`_H/o!+cm;gXrdZD`&%%"lX/oY0q3BrRfV0kKe+=GorVtkXMZZ<M[kbU"m&rJ,W_\h$%q71tiH]8ToWhe)hV\/;TDmU?6ua7O!U;*2:dl*UM&lmU9',VpQM>Rl`]N%[F#6<I-),WXM2iH>/OV8!%/:Y9C52Z"N];kn-bHMC?)tWOF':6E21\AB(V.%mBl3rYN-_pr7K*I/dh>H.ipIrH*7s?KKj"-FbP$>7XN/$FKVon#d_#;=Erue-FY>M@/3LFjbmiL@/hLs3F7W!i,O8>%BB,>&Df_[u^ND%BXk)8KN^3CVN=;!7Sj=qEdeb&#G$Q.Y!Ip<8JOZ[>Gj4WY0,uShYZ$sD@.--3O$ilBU#+kY:bQ.mi\@6*gdj>\+jkctWOj3Tma/uH=I]LX.lMrud+N2Df0JJ1'h,]FDKCLO)t&^7Wq6^[lM/0:&/=Trj8m>/TulpCYL$5m&N`;"RKPnipOgiKZJlUggq<2pR,"PlFr7s,^R]T&,[()&]NjN!r.#\MDDjeE#m)4hIdX.7jrW*jGAagd>`giDiEaJ2-RcL#1IKG%gbrn9%t+3iFWtWQ~>endstream
endobj
44 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1270
>>
stream
GatUsDf;C1&B<W%;iJ)p;tdXGR"R]k4#`jMZq3W9p9[^D7);U--CD33kjn+b9G=kh9i\c%PQ6?@IuL"Fljtl@6gEQF$#gqQpOWCM+FXIA2u4)H_2jYk+-CE`^25j$D>(g=4N$TXp@1/UD:Z28lj.sj28rlQ_hND=pZ^46RQ<-Wc96/Q(ka`W8jYb0L9Vg=b8fq%bCrWcEXo-b_:/<<`;`.$O(Po<cTVij1X*`rVLa5fcsY?7']k9F"W2jgcFqbPDeg11\Gt=ca`.hc9fs>Ap#@G,VfXnl5sqN,m"m.t?f84d/8`44]8*9H18G`YRO2g<E&D8p-8Ucbo5u4?W`X>m^suj"Fg)$Phg(?\]g+Z>#&M>p-*p:g0ce_0%Gghgj<kQ)W=ll'10qshY*R71C`5LRQ<Z.8Z]%JdS_9+,%HtW&c.i'kq*80/EmHa&Za+&.lrk_j9o"h+Q`S+LO`N,h/"((\Do4:d;2>:'Y_2\F\@!_:qbU-"_[jWp_^<]m0@hZZ?Ek-WYHY_J?HQ=0-J:$d'>1GB]P!L3E2j!nFV4tOY;-8qR7"u8bkLu:3o7]=171f`IQ/1lEKcbHQdCEu%9`bA#9-2F:(p6LRO[G#n/<U^-s@=_iuDkS\']JA24TVg!KH)n6Urg>Gk4<Xm3XDem"::LhBb+iF?GGq,r[Z;r$WIXY8\g7#HXGnA]C%;<3O!.%:IM$c+^4ZpG]<Ie)6LC$.8[:[1fdYIYgj5)X2fo,o,-L$Q.>MXCeP^1M=EbEV*+:dAC"pV.0HTFA0g+0ck<(.n\_DBB&9+#5cnql[@Z_0Ohi]qBD_"f0&]s"eTYY8P0KckhQWR"oVQdbVQr]D/@s,#9LG&"YY+_B;njI9ZHdr5>Rb[^uZt>0#l@i)sRZZJsq<o/Q`D(Z!I5q`]cA0c[\!?:FCHK.3=E6%*ic]j'a_8KCSRQ&fpGo:E6iN4cb/nb\6MZNrA-$$sCP8T[&*pqU]__'3Xk"`6Ae'"D]m-Ab9rHGd@hGT%Psq?l;^;,f)/%$mD2Pg<:tM%<)8Sn(0hC1;,feU*uWZX<c9L]rT[NGH_^CM\E'J$\ipuEt+q!`e?6W>J>A'`>T;h9UGVR<RH3joX\MC^Gktjc#u('I]t<V\,\S;/d$S,JmhY3;l*S;U`t4S*b6W/1pZ;@]O';ReOIf/f`RY!U/J9Ye%:N;Z'1\jnjN#lW&DC%mH)/?e*?Do@CU_P>R+RWT:),a5;etu^RuC=G0`%%kB`eF<J5TSFiV<\3ko(<d17^l2?j~>endstream
endobj
xref
0 41
0 45
0000000000 65535 f
0000000061 00000 n
0000000135 00000 n
@@ -242,41 +283,45 @@ xref
0000001683 00000 n
0000001831 00000 n
0000001979 00000 n
0000002057 00000 n
0000002205 00000 n
0000002321 00000 n
0000002620 00000 n
0000002726 00000 n
0000002932 00000 n
0000003138 00000 n
0000003225 00000 n
0000003537 00000 n
0000003612 00000 n
0000003707 00000 n
0000003816 00000 n
0000003925 00000 n
0000004067 00000 n
0000004174 00000 n
0000004288 00000 n
0000004395 00000 n
0000004502 00000 n
0000004602 00000 n
0000004712 00000 n
0000004823 00000 n
0000005050 00000 n
0000005125 00000 n
0000005933 00000 n
0000009436 00000 n
0000002095 00000 n
0000002201 00000 n
0000002279 00000 n
0000002485 00000 n
0000002777 00000 n
0000002983 00000 n
0000003189 00000 n
0000003395 00000 n
0000003601 00000 n
0000003688 00000 n
0000004000 00000 n
0000004075 00000 n
0000004170 00000 n
0000004279 00000 n
0000004388 00000 n
0000004530 00000 n
0000004637 00000 n
0000004751 00000 n
0000004858 00000 n
0000004965 00000 n
0000005065 00000 n
0000005175 00000 n
0000005273 00000 n
0000005369 00000 n
0000006296 00000 n
0000007001 00000 n
0000007229 00000 n
0000007642 00000 n
0000011011 00000 n
trailer
<<
/ID
[<d1eb6aec62dda0de1b321db25aa5cc93><d1eb6aec62dda0de1b321db25aa5cc93>]
[<74d094b45c0ab837dfac111b102db2cd><74d094b45c0ab837dfac111b102db2cd>]
% ReportLab generated PDF document -- digest (opensource)
/Info 23 0 R
/Root 22 0 R
/Size 41
/Info 25 0 R
/Root 24 0 R
/Size 45
>>
startxref
11348
12373
%%EOF

View File

@@ -1,11 +1,41 @@
# Remote access — implementation notes (v1 WireGuard)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-03 |
| Last modification date | 2026-06-03 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
See the full proposal: [20260602_REVERSE_SSH_proposals_summary.md](20260602_REVERSE_SSH_proposals_summary.md).
---
---
---
---
---
---
---
## Table of contents
@@ -23,6 +53,8 @@ See the full proposal: [20260602_REVERSE_SSH_proposals_summary.md](20260602_REVE
- [WireGuard data plane (UDP, not nginx)](#wireguard-data-plane-udp-not-nginx)
- [VPN process (AIDL)](#vpn-process-aidl)
- [WireGuard third-party (Android)](#wireguard-third-party-android)
- [RSSH alpha (reverse SSH)](#rssh-alpha-reverse-ssh)
- [RA control HTTP (:ra_control)](#ra-control-http-racontrol)
- [Tests](#tests)
<!-- /toc -->

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 17 0 R /F4 19 0 R /F5 20 0 R
/F1 2 0 R /F2 3 0 R /F3 19 0 R /F4 20 0 R /F5 21 0 R
>>
endobj
2 0 obj
@@ -17,108 +17,97 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 45.68504 716.2874 132.389 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 762.0394 132.389 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 59.68504 705.8499 174.72 715.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 751.6019 174.72 761.6019 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 45.68504 695.2874 209.309 706.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 741.0394 209.309 752.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 21 0 R /Fit ] /Rect [ 59.68504 684.8499 100.125 694.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 730.6019 100.125 740.6019 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 674.8499 159.315 684.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 720.6019 159.315 730.6019 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 664.8499 168.9 674.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 710.6019 168.9 720.6019 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 654.8499 145.1325 664.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 700.6019 145.1325 710.6019 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 644.8499 87.19504 654.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 690.6019 87.19504 700.6019 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 634.8499 95.52754 644.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 59.68504 680.6019 95.52754 690.6019 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 624.2874 185.293 635.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 670.0394 185.293 681.0394 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 613.2874 117.701 624.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 659.0394 117.701 670.0394 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 602.2874 157.709 613.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 648.0394 157.709 659.0394 ] /Subtype /Link /Type /Annot
>>
endobj
16 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 591.2874 65.24504 602.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 637.0394 142.597 648.0394 ] /Subtype /Link /Type /Annot
>>
endobj
17 0 obj
<<
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 626.0394 151.485 637.0394 ] /Subtype /Link /Type /Annot
>>
endobj
18 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R ] /Contents 40 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 39 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/Border [ 0 0 0 ] /Contents () /Dest [ 22 0 R /Fit ] /Rect [ 45.68504 615.0394 65.24504 626.0394 ] /Subtype /Link /Type /Annot
>>
endobj
19 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
20 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
21 0 obj
<<
/Contents 41 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 39 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
22 0 obj
<<
/Contents 42 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 39 0 R /Resources <<
/Contents 48 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 47 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -128,115 +117,214 @@ endobj
endobj
23 0 obj
<<
/Outlines 25 0 R /PageMode /UseNone /Pages 39 0 R /Type /Catalog
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R ] /Contents 49 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 47 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
24 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190938+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190938+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Remote access \204 implementation notes \(v1 WireGuard\)) /Trapped /False
/Contents 50 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 47 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
25 0 obj
<<
/Count 15 /First 26 0 R /Last 38 0 R /Type /Outlines
/Contents 51 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 47 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
26 0 obj
<<
/Count 1 /Dest [ 21 0 R /Fit ] /First 27 0 R /Last 27 0 R /Next 28 0 R /Parent 25 0 R
/Title (App \(developer settings\))
/Contents 52 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 47 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
27 0 obj
<<
/Dest [ 21 0 R /Fit ] /Parent 26 0 R /Title (Android VPN consent \(WireGuard\))
/Contents 53 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 47 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
28 0 obj
<<
/Count 6 /Dest [ 21 0 R /Fit ] /First 29 0 R /Last 34 0 R /Next 35 0 R /Parent 25 0 R
/Prev 26 0 R /Title (Production deploy \(no new nginx HTTP paths\))
/Contents 54 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 47 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
29 0 obj
<<
/Dest [ 21 0 R /Fit ] /Next 30 0 R /Parent 28 0 R /Title (1. Database)
/Outlines 31 0 R /PageMode /UseNone /Pages 47 0 R /Type /Catalog
>>
endobj
30 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 31 0 R /Parent 28 0 R /Prev 29 0 R /Title (2. config.php \204 required keys)
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Remote access \204 implementation notes \(v1 WireGuard\)) /Trapped /False
>>
endobj
31 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 32 0 R /Parent 28 0 R /Prev 30 0 R /Title (3. BE packages and permissions)
/Count 17 /First 32 0 R /Last 46 0 R /Type /Outlines
>>
endobj
32 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 33 0 R /Parent 28 0 R /Prev 31 0 R /Title (4. Cron \(session cleanup\))
/Count 1 /Dest [ 22 0 R /Fit ] /First 33 0 R /Last 33 0 R /Next 34 0 R /Parent 31 0 R
/Title (App \(developer settings\))
>>
endobj
33 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 34 0 R /Parent 28 0 R /Prev 32 0 R /Title (5. Verify)
/Dest [ 22 0 R /Fit ] /Parent 32 0 R /Title (Android VPN consent \(WireGuard\))
>>
endobj
34 0 obj
<<
/Dest [ 22 0 R /Fit ] /Parent 28 0 R /Prev 33 0 R /Title (6. Browser)
/Count 6 /Dest [ 22 0 R /Fit ] /First 35 0 R /Last 40 0 R /Next 41 0 R /Parent 31 0 R
/Prev 32 0 R /Title (Production deploy \(no new nginx HTTP paths\))
>>
endobj
35 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 36 0 R /Parent 25 0 R /Prev 28 0 R /Title (WireGuard data plane \(UDP, not nginx\))
/Dest [ 22 0 R /Fit ] /Next 36 0 R /Parent 34 0 R /Title (1. Database)
>>
endobj
36 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 37 0 R /Parent 25 0 R /Prev 35 0 R /Title (VPN process \(AIDL\))
/Dest [ 22 0 R /Fit ] /Next 37 0 R /Parent 34 0 R /Prev 35 0 R /Title (2. config.php \204 required keys)
>>
endobj
37 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 38 0 R /Parent 25 0 R /Prev 36 0 R /Title (WireGuard third-party \(Android\))
/Dest [ 22 0 R /Fit ] /Next 38 0 R /Parent 34 0 R /Prev 36 0 R /Title (3. BE packages and permissions)
>>
endobj
38 0 obj
<<
/Dest [ 22 0 R /Fit ] /Parent 25 0 R /Prev 37 0 R /Title (Tests)
/Dest [ 22 0 R /Fit ] /Next 39 0 R /Parent 34 0 R /Prev 37 0 R /Title (4. Cron \(session cleanup\))
>>
endobj
39 0 obj
<<
/Count 3 /Kids [ 18 0 R 21 0 R 22 0 R ] /Type /Pages
/Dest [ 22 0 R /Fit ] /Next 40 0 R /Parent 34 0 R /Prev 38 0 R /Title (5. Verify)
>>
endobj
40 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 839
/Dest [ 22 0 R /Fit ] /Parent 34 0 R /Prev 39 0 R /Title (6. Browser)
>>
stream
Gatn%;,>q#&BE]*.IOH7_i('F8bWFrCe/.'+Cd&qa<YYm26i.3[c?-2dQkEE"U,T/C8BS*rU0\Mhh?Z;(Z#"d-,=3rT?\l^#0@Qm5QXKr0M6X%4o2NAi$=8l(I/['`:F375)7>"Mj_n>+T<MUU)6G>fcZqqB0CVih1gb/.5:r-b3KUteH%WS5)l9Jf96X>=0g>@"HfS03OiWOK"Npo/>]@7Q"pO1f5[Y%U@9\Bo#jq`m.TWKP2D@KJE-[eL\O+'3g;s%$/_Sp4ZWitm,.P9n-O#rTQN.@P?7c=LAhqlOR!Id:`3fl'`.>;obBA+&JdkU[_j&3]%t_>J*Lk[?onJeM7>2akUE<2<QOK0!+L5d4hgqI?+c;[DPEa?K4\_9,n"Rc"Xg?#=#7=loG%f'm2.Y[p5b&`2`<QF.^M1^i+DP^(;lg_aEF6!?:G8,ITOZcXNm-rVKeQH5o-:_aYg#"Y5Z5g,aj/pe\%/L@Jk;Sf>OBdL8#=T_T<S0UMb]?;B%I;B>i"gF5F!G=JA_3/EC<!&e;fsM0oB&,BP/9L`,oaqRC#qQaq0N?lL0D/PeXib[Thlp79tm5[$^PQDRZa"Ppq6!]SQidh]VMoXbPQU+]QNS[9tX1Y1+8h9CQ\%geUi.#D:.*)8]K'<F41XfS2aC%V_!lF(<+DC00!jC1)d"lO[^Mc.f@RiNGVX1G>pp"_M_4<AT5P=X;;eoC&G+cY`E_jFqPUJDicnKm/_I7[]0V+p&a\/JY%:I]OUB4n"*lar(uadA;qe*<H>`^5fgKnHeA$cj&VL?Ge`j]YiCqMGX8dMQgO>cXZ#U;3XjcF%e*059YK"YPj:bQ~>endstream
endobj
41 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 4052
/Dest [ 22 0 R /Fit ] /Next 42 0 R /Parent 31 0 R /Prev 34 0 R /Title (WireGuard data plane \(UDP, not nginx\))
>>
stream
Gb"/*=``=W&q801kbg"F`hn!:+skjjPVREB.4:nc89Sd^V1L*d6:-eSJ<[.hh>b1u?K*,cPb!6VX^pE7!B/:0]"`-i2,Nh((B<^%!T)U!n#Ze_%eg@XqFVjtDrCKkeXs%PFCsE0#.CN)_6Rps1kpGV%YrSZQnMei"YD+%.jj&TA!2"/;3`ePi9ZJ%#Zh]UOm>?LrP05f*J(BY"*L:%e(a1Af=,tUe%<6ddqi,[7C6A7^/NU(jYbhCKDV;%hEKtlKDRG>9C5r(Igm'5`O8b5a95L?%C=qS_6Ob\<UJoTpj^tM5KfeK1as;JQf@5Be`5frA7C4uE=fqGfplrYlN`Z,TOGpSV0ICDJTX=Kedj<iH;.D&Bd-X'IcX)EZJZ(D552PC#iat,%c_89=%n^D9BYR*o]n=.=*<M(`p(*knCl+,1RH<,?e<'&7;^X('/s#*GgpjDr$\*2OZ*N*@c;n?IW,dg%ppZU3lsfl&$)J;>UGsni&fcVE^?_q:/Oqg:=jqcVo3SR&C\$OVfd/4T:q]"8]n#f+'#1^i^k0)<7_Qt*`Y/fq&rrr.cAQoSIlHs0G:.+no9YOEsO5R!i/O^Fe+-jrBO>YGT0:p*"27rndTYR]*JVYiCh_TA@j]:/::3Z4>oNgm-bS$YqSQLc6;])RoN!nBXn3Qf$(1X8tX@cCOFXV6$[3/<0c#A72jH"$'em5<69&]\>juhmK,EN:--H1^&&2^l@$*&GdtG<3TY(010SXH%1Xap"]=4SA0-f_biqu+boR0nmhh*kcH!`+?YUR)BT110E7]2,]oZYN!d)P9M%CP^n;UWe1jo_XKZ'+.Pq??04L?U[LG89]l@S=``-$8E=>I!JQ8G?E7h9:F+s7ALYO>l:8Bjn1N6a-YPl.\n77NU6/6ia)c@'lOT3&`J,n*f:or>(*oA:,B48#Tf0fC]rR.+B*"cVtY\qB;"Nk\U1rmR'oDTa1I*,U;m0tW)r6#%YN1;Vt:?H@OoU?$_"iTbshIJ=G"7K7FfNW%Aa>__rLj5q!B+$RLBPrh?^_=u_*YQa+Sit-9##JD'G':Q.(9=?W90pF=`GTr95oY#bV&@bSJ4*Pe;Nfr,SB@V13b83M=+koZ/<N[QD'coa[jW!;e[mWMte#tM4FdF;NYnODP$[4hl+7FEN"J"KAToYV&.b]LVpF@T;^oIOP!"3=iOuX(?V;*b83o>!77`9j.M,C&-"ua>"blkB10Bc,-D;?lT:lO?u[;8Yj;]k]jM;:>mCga!S;9t[pJ.#=,8!*]`P*CIE.AhQ-M@u-=6hP*gOYL[KM^,.K`HfMf`X.WrkXX*;fo,sonH:11?W$sC=R-KID3VPB%MTWife]Sp&'3ea7QZAB,<%5ci)/##R[#O*Va&C1JQ4mj&nP\c0*Ttk?'Dda]WA5>j?d$\ZS_P_#JRSihg]nC,%PHr@Y`oa%<L<Z^MK8+kpu]AO_^IVi'566FoAFaL;2_H^Ko-_0D?nj9-d>9ZPYn`0*8_5.eUCjDI:TnQe;Wuk6V#kAu@:,A[Yl!QY%?d$JK'6qD+]@,Jl_WFs=K+Om?=!mL^#29<[5*S<K;M:_e+dR)ndq(=$HHB--19$ONjf&d9lqj4."[#XD3P$au:6&&TZDPZ(U_P%YWpkn68A].ot/_]%n0jO9Q/i%^0$<kd1UTC'n+`C4K@(\M`)J^B`tAeeI;R]WV2/FZWQhV[3dmZRM8kC&aaH:lu5%$BZ1oD:WKp[+5TlW2omT_e9Rh(&U8gFTG/pON[D>e#[seDbh_oNL(s/'KtH#%M[^!2$OtN4XcEI*)Z_WA&jPZN1K/K`QQn"uOe"e1%kg5NH$&e3P:*3Li=0_k3D@V:jIbTj]e0i(O8XrH(BVKT+LSm='b7\HH*-%jD>^T?DmSqYq;"@kJRi6M19j>^=&-_0n^Z.68IMnTHX-a1RId5*p@2Q_6!=0Vh$'Ef+FCTl_ereVaZGD=e/+aF]1.@Z+CB.ll3:9bMF\[Bb#ieE>?#KUX'8P%;Z`E\Q7ih!,i$6GPDl.4=(/Fe$Zc#RSk)SV'>VYlml7c3jMQ?9jT'D%X.n`=F"^3Q_f--g!ND66HZ4X97^C;Y3jPQ@j,?7R<C53Pchf8UcUq$$3WT@smrh4Aj[-GC9j^.M3qK[LT.lrc"6/=k/=3D$Y4EK2U"eQ4u,oc=Z1io9WRRBRLrXK"#:I;q7_dX?ZG3Kb%fUn6O+]'1dahjt]="`]u+0fn/e&%WG["*Zf5#jRF3iI0O9;C*d]hT0[[o[F4HsKdjUiNUC6FPm-]pj@/A;[7Y_aK[D#%<Sc#eJNA#sAJ2/;SN(;\A"8Tra[nj-Y&`!JHG<!Vr9<q+fa=IOW`H[CYMb(DTN+,mKA=nj(C],9EsZg3:abgFL:G\_QIklSjd"B6XOtEh3ViL]diOGqm<iHO)mNhdM@CjNH*09G<@6MY0UZ9F?7HOk%FrSf;Vn7dG,`KN"BfHAHupq0#&A1X33JEp3hC_4(J%$/]0Ls]jtc*jXh74:V9=CLbi91/A:?XJA+nB.pJ/Y"2I57SHoR0k[&KY>`C#FJB2lLDmahoCgL!Q7YA;B-)oR<.BElcP3irF;FgB>=1]FMI1VNSc]8<rd<N+ub_V'2L#aN.q+=F:?PjPmC1G[9/g4!!Q5tVDlZI$PrZ3<u]Jf/QC\sM&hl2!3q!r#u'^,hGqMS)Z+r,j.RPPG):icqn?/mVB>gRA*/1G\seGaAEbQK$NP\AMG\MI$ka-(Q)@]VT+gB`rXB?](AWWJ;A3_5#@?,M1)+YuXDTO65O#M2.;c+sF(YA8B.8]96dhH$07MMaQcY$]'?A,P[K4+S%)mi);OakdFSJd..4U["SO.H>[.Vf8#1paBds>R2?i@J&AXY_;Ik.NR>3MD9u0PcPhc7b1015CjD6b)X:`Lj^=+;7%tni1eX]fgF00%s!s9L?C=L@Mr=IdH8>.T#G]7fpWB4`3Z;J^;6E[/5Ib,G9PZAW-^#5JdA%ZGKlKDHa;YPpkp-lqHIV8)8`l'&=H(7t,DDo#hEM),6-A%133FnAQ'TAcqcg6B%l/FC1t3W+q)FW&*q3qbIpK=@\cqIZY`7VTJaMM^+U.p21=X'3TLK!+H6Ap$b9MLrrNY\VD>#_k"mDJM;4!s$JZb4E;Yo9&`?1,MD7+QC<Y]tK,aa?7i'Q+M;u8X',lh+E2To_`&sQH)Sh9cRr\Tr;K^^PBgOeLsR',\"7_)X+!!-XPI`1lJW7P4>S9S_#:E_)NS@IK%msQ[M'8k=Y\\HD&crl=[AIhD]i$Ku2BZtFB4hgc;S^sqUQuj`Zlhr!$NL!a8'DQj2OeKZ*L>AZnp8YX"5[)a#(DYq;\)BR3$3M[=Bt]!a4a@utaU8ErN4CK-%l!j,hI-&<oCQW>DOhg0n,H[UGo-#8G!UL'ntmr.l7iXm8AeWc=kP?)%pnQ^j"u_)=8R58=M;U$mN9Y*?"uMggFQOX>H[)<8:EEpq$c0@nnGa]LAWmoq6j][n-KU=i3ns\'qX2l22EM<D^.@o*d)57q&*kMU2/i;Q*#pt%a7SF,9@keEEqD%'&'L%buFmLj_u,>.t7kN<4sdI+tD,h^8^eq(aU3Oac/=fJfi?pG-i(_3V6g/P+.Xp#C-Y7<$Z&3%RSTuK7Z7Wkft5eDe)7%Fj6]6>.QO@CA-Si>#+i5#k[(3?Zq"P)R%%4&>NPBeKpH6qXgTYHmt\6KkAhKHF_a&0*lo!jhBc&=Q\S+pl%]/)BWscFgf!$($+DE)ji8nEaBi*hd#mgms]nDd<%A&IK=)ERi=EO_"DoW(0eGmQ.N;QODrb7GB,ObmX>5;#B7<]jf\[O4@`^;:Ynln^Y_V9,-Rij%>GiG8*%onFE2aNCA5eOX4ek*q$0SUI5dEEHh</r"2s\cntqqsI2BOT9A5q`'o1;o^m]2qm`0Z<eEbcDq(/3H$-A-^0#(&R2QkPeJb'8kC+r[gX547O>Y`Cg-XFG:qap95l/?0j?tO@!R_+CQKr#k-5bcW?Lq?N_S::5.#-i`4%[Z[IE(7"eJ6;W04-/-nV/bQTR';ZHI(k@QKC&-.9YRO`)d`IJf3Ybn~>endstream
endobj
42 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3325
/Dest [ 22 0 R /Fit ] /Next 43 0 R /Parent 31 0 R /Prev 41 0 R /Title (VPN process \(AIDL\))
>>
endobj
43 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 44 0 R /Parent 31 0 R /Prev 42 0 R /Title (WireGuard third-party \(Android\))
>>
endobj
44 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 45 0 R /Parent 31 0 R /Prev 43 0 R /Title (RSSH alpha \(reverse SSH\))
>>
endobj
45 0 obj
<<
/Dest [ 22 0 R /Fit ] /Next 46 0 R /Parent 31 0 R /Prev 44 0 R /Title (RA control HTTP \(:ra_control\))
>>
endobj
46 0 obj
<<
/Dest [ 22 0 R /Fit ] /Parent 31 0 R /Prev 45 0 R /Title (Tests)
>>
endobj
47 0 obj
<<
/Count 7 /Kids [ 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R ] /Type /Pages
>>
endobj
48 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 861
>>
stream
Gb!;e>BAQ1&UsJXfU;FQ.i2'q;c4s5EGQqDlQhK8V[lct"-\fLLE_!Dd'E]M=n$$\&hWC=p7^'i15WtZZ.R7/$NkMK(ti8G%Idd5K9$3R-;54`fU<8u/!s"+IQK7k9&%bKTqgB#%1Q%@7Q/Q0@@V"1]S;jWdkqt021+i?KTUScaMrA\9B_c^]RoB2%O*,TeFV^6_3S918rA17<Y&f>klI]sV2Wk'IaTU+d7dmtdD"RPT6RqOM>,1NVi-qGM3Kj,-CgTjP&/>/3k=0@.Q:]sgHt@ndrd5+SG58_iY:8L%K9Xjcia2+h(7_G$BgcF1)iF=6mG8I["\MSW5X-EG)W,oT>!bR_#TYj/n@0$?<kAt(,@(L3_j-:@Fk<8JVu0odo&EU[NmZXE@]:NNPL=km+%+mK(9/hkP9FF<*_-4bg`1WQL,cYCpO8LMDt=4(K0sH(;pgUcO]#Io'Q/AAob/_(@Iaa"n?<@#')\O]1nOZpji_e8+VC3Sh!_0PjV.APD2];3nd(lI6$f7=O:ofKk8J*"<#8=!Og(7dsGV*Z37U4lRZbG2S*KeY\:S\K"t;d;G.nQF7tp#l]'/k)/^r7_d!]_Ua3@=I<$_\5[rY>;@(sE8Ot7bJ3G[eH%5j>]4L5RmG-,Pcg[0imj2pCQ=^m8%6l]X5Ln;.m]"*@5<\1'17s6[_WHfIT\&hmI?rHSZ;-)VoKds1Ei&L-5^1oFbup</BeW[;nd/-t.7HEbWMiS=a1+AZa[dg&ND`(16E6!!;\Biq(#%W6iOYdB<?2Q`QDQbi+oY9C7+"O>Vut;g.?6Fl/Cue\`Oc=*_eTQ\,l%`l#[i:6YtPH7qO(tQTDP,#cnf_VBb3WrL!=5Y%u;M(BQ2$(?!Gp&N4A80BXeendFtuc39PO\ZX2UKi.mObC%<88?;Rcl<%E/nD2W"KG[5^p!!Wse%o?C2:"';jGk@@*i7D<:Ze3V)iH(;U0h>3VV":]&U@K;rql;^<ik9%Je?*V'T&lEC\ogJU49`PE-T@JhIOfR]1#"tB'fRW]_-*/0Ln[g"8/fW6o6)*UW8i;YVC-Aq1@tJ8%+fK\L@cL6]`,"rG+&">aa-I=%\E$s__uo_[P^R-+-a+N;hoKhVcp"!AQ`&lBq[i?8$YlV.L&'a@YH_85QTuCD,kkt?_QcCc!t<pSBP>U@T>QUA/j/Z\iHYFTM?c3O:;hc0VkYud0<kn<ob@J^/*UhUeJ^O0\CtAl=kc'OiK$B#qh-7n$@DE2N%%qH)8DVrE#:NNDYnbrNOSYblJj6e404O])rtKAetS?BA"dNV2oSEF]mcT&8[nl7)ln(9Gma?.`.&U0(12SbWqc:Qirdp7-7X^s4OG-@^OHgVj$r0q>'+Kp\BlVX36F-l/gMMg,eHU4n`jI[[G%ij'j(jnHRr;LP7k&;X;_=lgH<_U!%G5-;>726Vg8j59YF/#pgH=)%_@4;@N!`oXCRb]f83ofXBH[]4!,89s`?3HEKp?0?h;*<#13>aX/1ILcXj12=MBU=@0B*d:8N]At,n-eNn]6l*WiSP/guSK95.c.,a`;;O&?WXHH;kr\,6XLjg7G*tOi[Xt';U+/l/*EjAeT9n[cl'sV9DWq+5H`0@$bkBWl>$qmK%o%T6[*2jdU_'E)7MfScV];Sf7eGElu_kk5T&_8_;k0&\!j%I$L;&a*N?,#a#?tUFG4EZ)))XM:re%C:jGdApch57G6$g-9l(NU<.=\/>SQ%GiH(a-[3EJT=%N&-)O"Vmm,jg>:/3V%rI(Z<g.p#\RK*j5rM)jCLq&S=+X"j:u@FE8i]r4)_-R'0IW_VLeh?<k/T!taDSQJmA)[@X6+:!9e,ZUV+c%70S*F(?648gBiaE`#Z7E=C<M^1!`/@.>.<W_Yo9Zt^j7CJLU8ltg?a(R&+a+CBK*O5p:Jb;mW[7GK,+7?TO8bl#fsF/PL=5oDfZHaB.;Eku.J3R`8d:?%'FL9p>b$jS:':ETN9k1BG)\$EI7O_36J,p(D/-4XaBDgeq^J9EeqAr#L7qJnf`kW@nK!RF-a8R('.njTf)Q*J9^p6[^GW[-A6-*FXEN)?AT"=kkG8R?A;9#Ig^lGIK0HsdOQ0oSO1M(YEcd1G@Z!k5)K=1Bi06Kh);7D+I,V#*WXA4aVXPbr2G(CUBcrR`>UbOoq:qIp61i]/$od.ec@%P,1*?XmjR(aDmFl.nGR`;Cu,5e5m="FumYA;[WRKK+6KBpNu0?7NmF.[qh3d6V9_YL6-Tf&!Q9bsLfpKmnnDe4Rhq4+oOH^&8"j_TlK7Qt[YSQ^\D!T4Ljr(csg.V/BHmpYAubW3o\#c'4Oe74Q9N%U&Ria^GH8Ea':I^E0/aj4EOo^6dL7nZh&M23=I-AB=0uiD6*X&#KR/DhbMZ@LFZc4OIA3^8-)Xofqs?r^7]oT'[BAr4_uKK&C]K!hT'@5/='-^1ROorOor<>(<EM;=%qJBW3n?:ZVR#U=oT2PllhpC'461%Ns?%%H(/FJ=rbtJ5>ukiE5n9/(pqX8iB=doA``deO)(hXUVt4Su(,+A[FdRe&A>r+?1;9,9EakXKFRf%$t(n$OklC$l)%bl2Ei8\s@<(&5EfNqiX)rq,CHb*OMkt^J[dUg6W5K$UjCa9a_"l_K]3A:,'r0mH)=R<<jdf>"5?Hk#SSo2^_"p0Q/<Old\AS-Q2GKdHo=aKLnB:B>*,<Ek5c_C","q:X\>s_?s.8W88X2C=_:=5Atb-Hl<UBG!HBIB9tUN-s%20aYk^;l^C"(Hc(]0"2J]5%&eTq2_3AmM81,\bTp4W?14d<&i/T[8[D'S1f9MS4>=(I]r\3B;)_+SfdYD.MVO2\1WnQ]d9iYs'WtfM#0SW,`C"KA<u^MNH3(]PQZ.-H:X#"3StEc(9]"C(mHSFRUYJA1DeYgMA"AWtJPf6LF0U6d(.XpSeJO;"N4"!k9!0!AqWMZl"lo_*G3M@3hXg#<)^V8F7`c[MFf8H]AA9Hl?_hoAV1CZ\!;MK#Yr:Nb4tOpHgTqrZr%JSYnd$T4^rAgoa[g/jjP""`$2VrEU_p03i;,(%(YNehd1j&s*U9.3Su3I/A%.1gQ(1L!jtU!DU?AFJfGn5U?]eW!B=B=d:/p\`\A-V#gre*EHX(4q[20(U=`5F$;nQlud=RNs;tn9/?$'7V4YccfriZE([C]*;._6EnWf+KVG3_..E0i#"B8>g.Tro08Np7Xnh@.pc<S=1Z+j'*@((FNj"9#r[-fB)R#hJQYGL>`*I9J'TF0u*O:5s$,I+u;nq#an$8!c=;Vii$B'87$13:bku&EA)*<>)Zjs3f2]4a_AWopg;8RBh>aFdiL]^B<i8nbr~>endstream
Gat=*95gRZ&AI=/bV?46fAe4u]8ourp!OWC?@"oRBrM/E$0eJiIL!03a!Lp5P$%8LqrXC<$oS0b#HQ`n!q7LdRl^`e&?GjH;\2(,pL*]ALAt:(c&AR2!c'CJdT;)H1ZP'g=oso%iRS*C[I=ntr]29!4LhX-,ih8llI(@tV#r<:6u*7bK*^U80$+G*iH"1k>Bgas6C_lC/obS;(3,X,8p7Ma57i:_\\$aQH1Z-""i38'f<FK0Oo.^qNeLl&kp?PXd5M@0YoeR.H639Ud869V3Um+@K+oG6a(0s>"HhH?Zd2h?J2V84n8+r']telWF\85;ia<j%Ip0^b->&kV'F#>+c5j!hM6hTp21coS_^[tVrNSi^o?@1[`:c<s\V+%TkEQi0@[OW>/-0'W0]N,8U.MoQ8mY6bMb_cM;jEk[e_=Brf$VT36B+ZY1m]or%+dSm@rA'bg)gTSHQsM>gYqP&Gg#XiZ!9Pb(=[Z>X"Y!lT5Jkao=uH3V[iHbqhV`2g#n&r^l8FomGp*Oc/&@F'SSu*CQI\MmQb`"(7[R/5e!/OL50_P5a"S+.UGjV@(N75!N>7>cPBqhh/5WaC>46q/!,r>H$18^O,MJbbe`1Ym_hQa/fD_A:<q4-0ks4V'?;P<o'A63CW(b]aXR"N/U-<M%`RUCK^Qt[Kj29f<:/urgct$"5%C1g9%+NO2a6'H/I)1ocMXIuPKLXUGcj`QD;^t!hHJQ8Ee:7&1UKlN+Y,2MD%ghaIL"pm(u'Vo#%9Oudi_TpTc/UN+Cn,H=&t;GAbWf:iXUJ'=<C>pdL7%+d)3G1R8o&bna)=MA(,)QhmqDi"t_DoO']Ic1QCTu\'-kL%G4E!_!E_6*/P"~>endstream
endobj
49 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 819
>>
stream
Gatn%?#Q2d'Sc)J/'_]eD(Z$OTm(47Y*I]nCKPcoWH,gH=GT[gd]EIt#=tntXX:MD8:ZZXIJfZI6c$Zm[c_H/E1Ff(.0]!(\c<Y3&CLrRUkAOFh9QKIM.5V$^c<cKOG*BM4sjV&#:oif,a$,W+Ir7!8AQh^peCT96Tmt!W8[2&I(rMqVW+bCTGN](<D-?H"%[o-qPhmANlPB#OnSnTTTc8b[k"8VqP^E%50W,@/9N6J=BX70>2&e'!sX*:"qABrm"pBS[u8h*L.12n(HL8EY8T2JRXo9>$R<E(KuomIJtt&4VFKb'X=gl3>ZR\M6l)UbaW7<kTmjm^RSKOhoubN1s8?L.1Q)k_Md"mB.ilQB^Z%Fk!jjAAUfq4+pc\p-n$a.5*7j].-&'$]M#mb!'9#Dh(/&@-W#RL^2heXV5R3l/l'EbCE+1MDk!LY'#09Cce@'D>Ppl&:L(UqXVH>rA8Fq;,,E.Q.4"H;CFqj[N][':SE\%j%8tdNMil?<?)3h;9$?ca[qadc;PGr83Q-gK3"/:b"`tqJN@FW%@or9_AQV*XVl"^+0lU2Dj^1aZ^ZSN/([1\:'E!%jr!ff9LpgJ(XUNYZT]'L@3I!B2?m=*-5Ka)t1Uschjs7g"8E/uo7Dba\37,n.J6t.33+pp!,YE5>j2uqf8E&3#H1VGZ64G)n@jgT>P4$#Bib\"?IQdZ>Jah-tZA[bU(Kj%^5BsWO\_/t&3%u&eIBJJU:%<brUg=5o!Q:?]DqfK9p`faD]-9S)g8+?*'5sH<TOD+Z`p=E2E^^6"JI%M!?C"t=VkeeS5Iro)f#N[O43<~>endstream
endobj
50 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9$AT&MD_`PtL;ZBnUJQ&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:ps&&=X(PCH'Wj;^H^&o:u0B4;^:%sp:ZE&Wa6R#'r_sXjY5-C*Ut>641HTb(JK2s*r~>endstream
endobj
51 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`Sh(bM!;,fa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#A2MA-a(rHVR:D)FhU3a#MVn+@6p(6,SFQ!,JH2MH_7OtUjbJt$1U9TU8;~>endstream
endobj
52 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 4262
>>
stream
Gb".?Bli%=ot,^mqp]V/D2R7#.C6A@XE3c>Z]=Ehg8R.PMLm*!'ZkliA5Ct[h?WN]Dc60";`d0",_--4qnNjG'n;&;mqr,3h8AFc!M[F/&r<4uE;orFhk,<],O%n><33@()IQ>l78jX7f:@>)S1li94.Ym>9U3MCFbX+^Hrj#siI3$G*6Tp6n_sY@hbaaNR_j+2GnBNh$mN`]Ju3:KC8oqRp@TN2Dsq#YmdArVZJfI4D)WDh5:N(UncJ6o_Yk#)n=SF[V^Z+[,om8iMQ3.8qZPYC&uaiN$&50Y<lYt6;,!OJm1ZS+@SNpq`ro<Y>FO+t6!%%1[b<+m,bOS>bT9(RG7Za>AFr?TcV)>]$0PAu#S6)+\t`RC;@X:uA*0thLDL'6:FsJ$g(oAq'oPa(Eq)-Ur'5';Y*&74@.-lWDC81-Vk%2$aI.BsOhORlT>SFD'>H4rhejH@S,%$k3V/"BobFqaEV7G6(Tnd'cnl\nD*/?;rW5'BKguhr_$0T7r,M=J#[QqL1HP_FoO3EPS/HMTNora[i)t,k+n31CLDSDh3asRma@2Cq+hcXUjf1?FdPo6Kq1dOj:^oila@Oo4dk;gN4VgDtomQ*KPlk@KkR,j(k0A"hgto_@9?#4JXiu0;nIch+cpg^I"umH"Ta*\id:)JARRIk;+Oo<GY.%]`"Y,;J>UO-7?e],pPsp1UrZ1)^k#00$/F[Vp^'(-aRK>egJZ\j#dn&-6LamA]kqYR_oOC!6XJs+t3H\eMU'"HLQFkM98QO._JU3A*js(HVB>4RnmJ&1T@!IhDb.\f;Dqu8pk(D^6Ce*I-><H%&+Z9G(Z\>:JRH?dH"2<0\Bb_:<=>N]2!M]"l/fn`8#o5B"e/4,1&0NF"4t`jTA,oAjdB;1NBm++PC-(\d0j?CIN*!4KLd\K]DklP@=^4>T!b)k6#_Zn,<X[G8%`5/:`EPpM.nRNUFpF,Ee=Xq82A9Dl_%JV8`MG/HP4QA?Y:P]rJI;_c1]S7e":_kP_hM1A/XpESU6Go-[)u>=TdmHj>u\[`=9ZHPn[c:SIL><R\2/Z4LAkG_HC%incaP!(5rn5r!gYt$JBOKs%GT5;S:qrbM:7*SRNj1jUFmMkl%cE)=#fU\",!MK$abKoUI)c;,[sW0#]9*k=!]\O$rM\PR1n22RN-W'W^GdO^^FDf979)b8qaRG7._W>I7DnL6H>AbF2sf>S?*T8>_YfFVpQOt=UABDFSl:Q=@61h=ZoIjl8AQZK3+*1NVZY2ke*;o/.+L0&/[cS@1K<<h-d!/K?$J.4dPD%nJ(pnNSk`\TqR[l#`C53Qj:]#JbdjnlNZm+J+0"!\Ck4OL@W_'1#.9X#YS^r*:]:(+4q3HoPo\4;*Ws_Z/*WJ'um3uO0bd2,$pMNl@_dHp&Yjl](88D2FNg(X2WAarF/h:&0X,.`Dg``;3cC1NG(Del]N+4g@X\^PIO7!M(9/uYdbHj4l7:s!j7V`<$1sufr/qY-%eDt<=+0c(7ZCCVSRrn\tR;h^ZAp`&I7_<9j8KjBq?gF5[uQ%n4cd#RVqD`kS$Usa.V(^2DL"YUO?BZiI#^@BLK2b'%tD^?iC'lMP#!JWARCI,WGn+TBRPJdL-j]Ne`Pa]&:`jK9l"^BXQ!8%S8/,>"_C9#q:C]jSJ&S[SiW_QD3*uj92Cd"aN)bOUI8M@d?Lp3`1]!m!PQhr(1K-m'7t\&3i$sBo\&$2=YJ(bM'[!/;-F";puikn0UT:J+r2=bVkh-5+t'o^]KQ/XSOAnr(_aZaAlj$peR70O>)DRj-.kdkMs&K.'mt,-u>90+5/XSD1!o,3uMpCc5eOC&R]J]r1%B>D^/r(?SdaT6-;+PVq(=lHji&lP>niJ!V^3lH'aA5b\@jj`&W.593"h:\qp^MmkLG)(XIKQ"-t.46;Jl-&Mb/_6o]f->-aDaH^L`EPUe\m!7=Qgj!fMqpHaR$*7c<X7r)m@Llu1o\.8H1r9PPL4XQ%c:"8@l)i+TYAl^-L_pf-<J-6pOf=UqWS%BqqqsdL"':'9W0uqA@=atq?^TV:m=L/I#5kXaBm26*8qol0[%ZUmg4LgRWC@Su@HEA7N'kT:T6(_C!^o(uKrGH$DT<\KF.Lb6R2LnQ00Rus@!5U3jZ;V_dJ&m\DX&_Q60q:J(_k5XL8ja<jbt38igTV(p:aY3L&aD#ShQJXe(P.ko5dV!<J;](If`*g5?nNh7&FI4<Y5H)Mj8h_XBllB>a+'8746Crd*,kr!oc1@#98695.+)Ld=t%9<](P%`8fN2s4L/@g3b0tGroQ(5-AuurbnI"hTH5H8]IB(e<h(?<o-]Z)IALfiR"cgG`''uPPPGVS!jl8M+JNL?!@3?17XLF;&-PUP$sI33K?F=i3)HV0(U=<t.$V"IKG0W`QNH/Yk*GEL1eF=&)!!?l`t^@<!OogN?2o(jUML)%$lb?Z&L;M-!HgWE1ib%G$;mu8@BSBVjc"+L0a$V*ej2HKOVC7KoB@;a/b?5^dR;[D:lL)g%Xa1&]a9?WZt#Lmq=n#VZ7!dB"2]%u>!1XTONTYaH3304h$_jn:4R,B?F\"b0LaHF_/1N+R1R\<?HAd9X-@8P0\TB&eT=Nj<9lB^::rbNE?N<B35;^5G?Pu-'q7M9N?\#Y]/SGS4%(;n[EIZ["XeBqXm4:ga=RjRLnU5R0**+*)?dd5&9gX`o(le,]X$7Mb'7qX-=>V=g4TC#+--hRCM[Z`@mbf:Sh&^V/iPoF0p,g??7HQA/_.uA8mEg_I\k1SJuCM-(3Lq[OO[3_PN+]DW)kqHq[(\Q?0`b,\=IujmAQ;Z&Ya@b0G&LliK;2g/N0!p%)RE(n<-H]E%`_S[mZ_NYulApE;U.0E7Y!#@s%`Ll/Zuiq9BK1_"Dj\DKhXP#JI`&VTIu5])&6F1T`*H9):O$:b,n,$9Ti+>uUp"nqn^RUt%p,)s?cIB9?K,rE6N25p;=t@>GJ*)]UF4F2tEQ?GqjS0:4gBnA#_!X)jDsLtblffRtG5OmaqWNb:H9d1mD)XkiE:OR`@fLH*r#'YeP*?-^;H)MMD0U9eIn/ZAcJ&_q_r9`UXloeGK?</'9K3@SU\UlZL=k2_;Sbt30m&1K![UmP^pdd0*B:;Z&NOErkf`k[9?I*)XIngt:.;`90RD6[P8nc=\`$Np0GC10BV-A`:i;s+Z/)-TsgSS6/VU:'a#l)LTtl%Io"5HSr`,Lr)u';_BdVGSu.W/2neYb>2TV<N/3n,Ha_4S-_VVS<CcE2,oj^WW+%rbGRNV5U0.[rl/&r;FG:(<'u>-5r^D:=4mcW#s37ZBOp%V4N4b:9-T)RHqYnk`(Xa'KU$C^PC=b>.@mjlNL.ZdZR`4@..1q5t6pu](uo,]0hG6%_mbgQSj]#=5[s(g?@Btcqa!BA,u+3])&m-W0%3E,7pQgo0%R4IF0=.bNqm4$d]&ETe;$[%:(EJ8EkW5']87sqeGN^_A#^#g0;l\@cS2_mI.P6"ebO!Z`IBcM"40SZR6hSBOe#;#^)it(*rN][\90NjjBNN(f9A_-^oIClF#1XGC1+Aa-\roY8$/VH_1Z+"CcL*&,*OK3gUGjkWqcYgdK+#Kc+c8?X<^*3iu[t?o"BcXf8m@kI`c0pj%L`TmmG*dG*=0?POpqUh(!T;%Y[/)u`c:(q=XLf))Ap(Uk!D]JuT@B-)uY!_iWc2jjR(,/)ZkXg?LSrP'j>+$`"FedCJ"&iWMs=-))IKf#s?SX%/L[G\Ha1JZs^pM5]]%]ae5ao9-Cd\YM.[*QBRrL4&OC*^Q_W@Ys]I['Yd'BgfIm8'RNY/!P,-GX,p(c"4abA&1lU2SMf[C_=UO$LT?h&q`LBN6U*@(m=;inFYUbPGN[d!e])VBX56LGN)8r$gd_l;cLK;H`(&;);%.P)eef7U:Bbi;%e7S\<[R^mFR_/l'dt#VF]V-n4`t+d,D(noUZfqgA9,GSF]?@On9d8@'Kpe7Q-/nPp^=iU]<VJ_(gDj#E!pUQP>WLU'l$+-hA[`7([3N&jTb=%DKYiM`m6f8YQg2J_:YNS$*NA=%F^]]KQApYj3S\O=a/_u5?0?K03?34@rEa9g`k]?/#$NH=:e:SJV/]Z:i>Z4K(eHIu<J&na;-RSd)#X(<ir$2<MmikkNRh9G083t\0BCM>VX0uoAclRs[T5DQ)C;P_=;>1G7ib&7j]o\E3R*778h'4MBB0Q4t1m(;2NH.)+CWYhOX"05lMK\.&>57d"k>`!H=Ra2es0QgSC@s\WQWL/?t,td>Ijth0p+#s-.oE/(n~>endstream
endobj
53 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3506
>>
stream
Gatm>lZ_&D'*"Q<@a<Z_)u;hpM'5%<F7Q!;fhL3XU"p7&*fa\4-oJH:/;NB&hi[iP(`Z6</Z0c#7\e@E*krT3"9UlcropTd0#l98@"N+/GRgT<*#RSKBRKBkM4%:'0'NmO_Z=[`'#PbO3"LdaU07%*&/W>:0F)?9mt1d2ojY)E%1ip2QisRjU^o:jY@.86j4A%2YP?e[P3Y!-AD2>Q6h.q=U(=[KqSX2%8fi\Zf29CuMN2+iq3ub,#::H0#Y&IQ5iXi^C^)jN(=<P"-=FjQ+F8brOt<$6+u#l)!D@s?1@"]q9eo.ds7M-,D_q+Z%R*b+l.#q_b:!g3O<tCsP/4.4C!Hf<a_*l&64FqI7?Y#SMJ`C)qCPUD!u^@Jqb]?9$PG,Q;G[*>e;Im`+P7bb(T<N>lo@'W?Jccfir.n<Y^%Kp<(]'\V1P9QP&/=tG;I(#<;gWQ]nOb2?n54RPkmR:P#HW*:\\k-0>N(8lc#*BZT-s<eAJ29&j4*cb`/5Z8L,'aNb^_rl!#G$ocR!O!q*t8X'8[qM%&X+S]-_QBEB8FE:s$S>j05aQ=OI8rDI]@,B,B+]\3rI@H*-#Bsuk4<L699Yma^WZMb:[>;)5OXRY&dV<m1mAQ]hEllb^c?b]n(NNRHU_S%`[V`r;T5Rs]1[u&ItT6PsR2iS[gR3JIufrcS8Bp_l#UO@g>QT[Qh2D1J=bq3F_,02/>%^8C)Jit<YJgKos>%bZ<[F#^b&fr[6=%Mi1Q./\9du:ur2iQJQ<ZJR`"[T#@-X)TmmQNXq&Kie6jgP7tELAoa'DFH_qqp-[9AaOJ0(D'Q;g,mI!.V=qJsr<8\Y#28bGn(99>MqKBlI)`<Aj7$B5.#fX#,rh53OYB'FOUKgLXmEB9bqT@'kgQ1SA2UN+)>``kLF81&T9u-oh_L8Ad8]O\lu*7`?KOC!n3$oe!LA<JNr19pCFOeGhfN.P-?9C27mJ_A30q*BN<AD$-*g2$>HKrr>*L_&E8]O]!q"C<rhCGLr[bCNE.s=TmOpf'@I&L?Yr]%1X8M41'fp&\$.!h>X&m3*Np(JP1PA3pG_>#_'R&R)YV_pO[-[rm"S_XkF!()XoffpbV+s;:.aBo`u_S#<[=V!V"i^J6?\r6K/@obG5rP@_npG.7E8Xk]S[6Mr_S5*7V+V&C9cKc+8&EG]JC':;-g-^*Pk$W&IOs`V#CJE#uq[<;9otdm3>h\)Y8\3o2f/H4m\;[I4oE\;Fm4^tun_gJ<]EQW\MRYBC%_iQ8662!O&)XgnSK1Vr8#LY$N.Y?\!-AKbsFDd$gNlmH)XM!B<#TZIg`7Y(Uf$JR'%K"j_(_4.'nN<qXo9p0)`r1l9UD0/\[-*'E>,\;sg`Z-GMF\&\F_ijrWr-n9e.:o$>om0j37m6N!-AmW*I#?,,e46(UeOD9"DH8eLeR,TjC5c;3l3C>?9b-B3%N490N=P1EYu\sQNm=ph4A:7Ajiqq>X!$B%1nZT:]+mYa:_B"P$Mf46+7m`u&CDBXRm_T=mXOfm$o-J60B:IPr:4lMIm<m\IWKp[5/.$eRB1!P]Z5#NVTg+SSj):&&ZlWTZrkE7QYJZED#LNb(qQ5FB[UuTb7Y-?gJ00EW2)os7$C42&Pmm,)F#RhLD[*ERUe?O-+[Y&3`=:(ao?urpnQ!KTTa13:lM?:%TW[M<I"i.JqlSF,W:"rGYg!a2]gj+"=6JNj>&!D4sp[sI2J72LRqMMWR`/'D$\Nb:$ZGE3h.Gf.X7]q.Hl/>2%esO<5agUX3)Zf&Q=6mT&l(Q1G#*ZaDXe*TVlP')O!k*4O!GEej@'A<N>f>ieD6&@md>/<6^aEK?'='J"ejN"^SS)TjVM[Qokgfcku+cG=]B:i-;TOleT.We-kEpckd!'(jSBcjAjUV5j+10/0nc%%0@9/Qe'ct"KjN@Y8\Rq"\V^rf,'m6BU,&jY:)*q0\[p*=C.2/%Y]W*\"?[07n"]YmJ6G*bmQ6kJSEk\O^3)m@LOgB[=QuJ^>TNOGcioG9P(%D:)in(cloYfWt/Lb7d\%i26p2RS7H#/85RlrKP5N=eA(THIIeRgB<[HX!+4JDa;7;#,B$/Jqh\?skbbc:9XLK!T)64Sb'Z3^0\"Bi)6MmHA@^[c3ucZ9'>lV\^VKb*49%e$[P9&)K2pq$XRDmVhWq7<<Z]Vh-I6G3S5W_]HQ:luTcEPWi2sBJm4DZZlX:Au]PW^4;6EO.SQ=a-bTi&j'd-U>Gt.@VA!Iu#gPnDP,gQW)&W1!JW_%<G;+=9AG6luq6XMd"T+UotE>>Un''[,-.9SFq0r:ifi!%!uf/WJ[c85E(U4-hY^3EDn06Hn%LPHW$MQaRu!K</>U%I:aX<[6;&YNC/#!-.h#+8re%NpX9;OZtn]9a/8TZT_28[QjsnZ0%GR(]u0=0YT"DP8/IMb5G/YsWa<j):PuT%hp+)RGrDpN!1:p:5q3a4T)8/%*ip[I;E#7BJGYY?%+[Mj0)f*V/,7PJ[rPjL.\;Im6DNa03riI4qkMia^5-.j.(JaacS].\8pL*_[%<gB;#3aQG*'o0d61`.I@ceGmDcO!eIGH&cZ,rVQ$C$%gKG!I.WaI"4unh!5!9qVKkND/ADc'`6Q+>,i"h;_`fYW%rm!`;nnjaoFU?",M(L"8Gh(+K27Ji);OA\or8B9"+;aPg),_fl="Mnf]+Sg4Wcab9`0cRuPeP19p,h$''c>LrWX0WG;tp_^1W5#mP;h":CgjFT47r:1D%K.MuW(?h,QsT6%'3Jp%muQ`B;r\rpQGJ]Ku?dt/I86*r$Y-^\N)g\'+X<=:'j%d[(0orZq"DGFlN`4R*`XB,p<T4m5r]\,f"Le0f:-Crt0$F\k!d\ppkT;IOCKI*@_5eZ.8:AnJno6(A\B-A";#G`KI^;R!?\Y=&'[pa"&+N=u[%4A:h!3\O@W6=LCZ\c7;8T70,1F5\oY'8D.,r-*T_=T$G)QV!gSiGQZSo3hqeVt3BGKL3Hd"et(N2$'5pX`L`L$Rm'_4h<>nk^8_e-8!ucAXo^$TPp"2s/4#cVIoN7dhkZG#brD;=:4)[^=A6Ytdfu^aQ.a\bJkUd^M#5f5*4np>%.-jC6\/=-G*VkNK-E+3LrLX1)r1$l^*2&%'cYjrp)IMHJ[[IE4#Me9M)1his-m:Z2'<5W?/"*?P&C3b-;W\ASJ2bHm3UWSEW"hEk'2STR5<VYYqGLO`[pj$#h/gjXCEF(/=?,Q"Xm(d:Z(:_FcFQR!Z\YSk*hT8C:lf!d)^:/p[5^V;*V[u*"Y*uAZ[c,Dt[ef2]a'^t<[1n`pPe9s'$(S)=C:L%eks&G_lG,KJUU3drXgALJ5?QFdt/'Zh\qto9%#4[kNc3.`9OYFRp/UB;BYe'+N?B&[6f_[Y\fP"3fDtO?Qkjo0Fq[G%Tlh`!qT]JAoT@G#Nr@*D5DBV!gY!Knp`I94;UYeA%qa"CGCHkA5LC9254NB:l51I>+D&_jf6dj;_TV=<qp4t^oj$I#6RcZkjgeJr;i,*0;:AtbD'(g#~>endstream
endobj
54 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1529
>>
stream
Gb!;cD0+\r%0"PUd$L4rH\2ue]E%[]")[du*O]Me]:V.%R)D8$+jSc7jl`8+5_&igm`g0iag?nA8WWL7OTG[o0:MnO('*/&QldbR)b*c!%WPn+LV$FNmi#J)H;.j+W!g?$j$V!U[JX!2E`Ph0W+CVA[YRXp&*gS4P/Hq'7TuDF2]\jRf1NcbUI6&:V*2GnrtBPpmP1P$]81V5g<'LeOYnM8:5OBa8-><f+CS?(QGfN;!Y*e9JX4kG3b`mDULtELCKk09g=i=)7kEP4?"V[@2>bI%\5[jSk+cLNn@1!DE5kZt267Re%e[ZI$`#oc8i8qQ\.!lI$5fCj_&UBKRttVg64QjRA(2SZQj0t'9^neDI*;;u\>;N(`RCHuXh>Hc>./k5B5h)T$/68ah.KrkH!^\*7_XX_,5(,ehOki,5=KZAA\jnSQem,qL;Qfr+He51(K9LAn"m16GFl@"J$+*fC/CA1+]g-+aZt`M83a3?.k*0fggG%feV[Y0Z6P6Fnp]H9"6+72&4dkBha!tUO2]J,P3!%:MG&2NfV*L%]c0`SpVpBqW;.CsYatNcj5U=-fN>i"`0+8fXK"^c1<J5/4L7!Sh?]jK\FSY?Gbugg^*]meTTMJb;o2U?>U,6ck[.`4Qb[$O3i"?[n*L83@rt]30q#;LP.HMdk'?Z\2;U95eRrSC;ODMPZO(7^r-FGa22?#NhLYZbJ'U"#[!fuk:q]*m<?j-/joa"_75;el(ue"F*;+ck.$(M/IB2-mM<"1+Sq=`-^^7bsJ?-oq:@XkW>\ssi>jiZjW]6YhUWB9$.Mnoh%Eg9sf>lu^IJgL9/B9&Ce$Y9Eb9=Sqo2]m2^hYsK?40_rMWA5MWMT&PAt,'7K>Tbd.J=OrZRe^\C6Mf0&DcOg:U]SS]lO-dULG&:`ZpM&I8L*<N'tJU_**G`MoG&IMSK>2Z:mdp`+$Q%TW>VJ9d!&YKa[iDaJ'K2No_isOctL4V8BQ7;,QrggFd`ToC^sZkb&kd-:J?87\^"\>H.,#AE1'c)/`m$Ge1K%29.B!q!K^+P_`J^6V+$ZOH)50*8c2"Jlb-eD`rIk'f%`\.jU7t0tbeW!Z9CT4GX\&;Z[(!!\uS%KBG'm,%TYc4=cOn;caPmi1UjT`$4tr8XcT)MMlOi)KD%Ao*DMN-kUnG83Rc/_(oP?^a)"h@i\b65tC5)a/P(,bF=kTahjF[6CXfc4$sg%q.)M_Q:./7#O6HFVr.Xm17=$MMI8'4Lr',s%?Z#]1<orl3-+tk*&9L-k"mu+5iQf8\c,([d[[NAP8'H8OAVGq;Zi!M8\[[CSI,>&AlouM9.P9ij!(Y+\Sc&)pW#D>;Um[",YaE#KsV+GdjoKpShZQ'1CpbmP:QF#H@g&=\+r">U[%$odIP4Z_r%^HHb/N@@]]f/IM6P?[G$XZqE9(3E>12,Pln@('_4.EhL0Ydh2OKT2g<0upj8pr]BtQ'&,0TH*knquG:<,IW8>!J9QS8jn^bHKG<Bpc5+t]c$+<K38t3AXL(>X+HT4k!#C6j^DZ~>endstream
endobj
xref
0 43
0 55
0000000000 65535 f
0000000061 00000 n
0000000135 00000 n
@@ -254,42 +342,54 @@ xref
0000001828 00000 n
0000001976 00000 n
0000002124 00000 n
0000002273 00000 n
0000002389 00000 n
0000002695 00000 n
0000002801 00000 n
0000002879 00000 n
0000003085 00000 n
0000003291 00000 n
0000003378 00000 n
0000003709 00000 n
0000003784 00000 n
0000003931 00000 n
0000004033 00000 n
0000004212 00000 n
0000004305 00000 n
0000004432 00000 n
0000004557 00000 n
0000004679 00000 n
0000004783 00000 n
0000004875 00000 n
0000005009 00000 n
0000005124 00000 n
0000005252 00000 n
0000005339 00000 n
0000005414 00000 n
0000006344 00000 n
0000010488 00000 n
0000002272 00000 n
0000002420 00000 n
0000002569 00000 n
0000002685 00000 n
0000002791 00000 n
0000002869 00000 n
0000003075 00000 n
0000003395 00000 n
0000003601 00000 n
0000003807 00000 n
0000004013 00000 n
0000004219 00000 n
0000004425 00000 n
0000004512 00000 n
0000004843 00000 n
0000004918 00000 n
0000005065 00000 n
0000005167 00000 n
0000005346 00000 n
0000005439 00000 n
0000005566 00000 n
0000005691 00000 n
0000005813 00000 n
0000005917 00000 n
0000006009 00000 n
0000006143 00000 n
0000006258 00000 n
0000006386 00000 n
0000006507 00000 n
0000006633 00000 n
0000006720 00000 n
0000006823 00000 n
0000007775 00000 n
0000008685 00000 n
0000008915 00000 n
0000009143 00000 n
0000013497 00000 n
0000017095 00000 n
trailer
<<
/ID
[<648e459d5f2c35d90d3f442a04b8bc8c><648e459d5f2c35d90d3f442a04b8bc8c>]
[<deae7b6f7dbb648f92f4e1c4452bcf17><deae7b6f7dbb648f92f4e1c4452bcf17>]
% ReportLab generated PDF document -- digest (opensource)
/Info 24 0 R
/Root 23 0 R
/Size 43
/Info 30 0 R
/Root 29 0 R
/Size 55
>>
startxref
13905
18716
%%EOF

View File

@@ -1,13 +1,42 @@
# Remote access — validation (Linux CLI + mobile parity)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-04 |
| Last modification date | 2026-06-04 |
| Co-authored | |
| Severity | medium |
| State | pending review |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
Companion to [REMOTE_ACCESS_IMPL.md](REMOTE_ACCESS_IMPL.md). Use this when verifying WireGuard v1 **before** or **after** deploying the BE, and when debugging without an Android device.
**Documentation index:** [README.md](README.md)
---
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 14 0 R /F5 15 0 R
/F1 2 0 R /F2 3 0 R /F3 12 0 R /F4 13 0 R /F5 14 0 R
>>
endobj
2 0 obj
@@ -17,42 +17,42 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 716.2874 147.501 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 762.0394 147.501 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 705.2874 70.13304 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 751.0394 70.13304 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 694.2874 156.381 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 740.0394 156.381 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 683.2874 129.285 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 729.0394 129.285 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 672.2874 217.317 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 718.0394 217.317 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 661.2874 182.189 672.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 707.0394 182.189 718.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 650.2874 127.037 661.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 696.0394 127.037 707.0394 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 17 0 R /Fit ] /Rect [ 45.68504 639.2874 103.045 650.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 685.0394 103.045 696.0394 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
@@ -62,27 +62,17 @@ endobj
endobj
13 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
14 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
15 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
16 0 obj
<<
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -90,9 +80,19 @@ endobj
/Type /Page
>>
endobj
16 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
17 0 obj
<<
/Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 29 0 R /Resources <<
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -102,88 +102,139 @@ endobj
endobj
18 0 obj
<<
/Outlines 20 0 R /PageMode /UseNone /Pages 29 0 R /Type /Catalog
/Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
19 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190938+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190938+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Remote access \204 validation \(Linux CLI + mobile parity\)) /Trapped /False
/Contents 37 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
20 0 obj
<<
/Count 8 /First 21 0 R /Last 28 0 R /Type /Outlines
/Contents 38 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 32 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
21 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 22 0 R /Parent 20 0 R /Title (What the CLI suite simulates)
/Outlines 23 0 R /PageMode /UseNone /Pages 32 0 R /Type /Catalog
>>
endobj
22 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 23 0 R /Parent 20 0 R /Prev 21 0 R /Title (Scripts)
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Remote access \204 validation \(Linux CLI + mobile parity\)) /Trapped /False
>>
endobj
23 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 24 0 R /Parent 20 0 R /Prev 22 0 R /Title (Quick start \(local orchestration\))
/Count 8 /First 24 0 R /Last 31 0 R /Type /Outlines
>>
endobj
24 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 25 0 R /Parent 20 0 R /Prev 23 0 R /Title (Production / staging BE)
/Dest [ 15 0 R /Fit ] /Next 25 0 R /Parent 23 0 R /Title (What the CLI suite simulates)
>>
endobj
25 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 26 0 R /Parent 20 0 R /Prev 24 0 R /Title (UDP / WireGuard data plane \(ra_udp_debug.sh\))
/Dest [ 15 0 R /Fit ] /Next 26 0 R /Parent 23 0 R /Prev 24 0 R /Title (Scripts)
>>
endobj
26 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 27 0 R /Parent 20 0 R /Prev 25 0 R /Title (Optional: bring up WireGuard on Linux)
/Dest [ 15 0 R /Fit ] /Next 27 0 R /Parent 23 0 R /Prev 25 0 R /Title (Quick start \(local orchestration\))
>>
endobj
27 0 obj
<<
/Dest [ 17 0 R /Fit ] /Next 28 0 R /Parent 20 0 R /Prev 26 0 R /Title (Mobile vs CLI checklist)
/Dest [ 15 0 R /Fit ] /Next 28 0 R /Parent 23 0 R /Prev 26 0 R /Title (Production / staging BE)
>>
endobj
28 0 obj
<<
/Dest [ 17 0 R /Fit ] /Parent 20 0 R /Prev 27 0 R /Title (Troubleshooting)
/Dest [ 15 0 R /Fit ] /Next 29 0 R /Parent 23 0 R /Prev 27 0 R /Title (UDP / WireGuard data plane \(ra_udp_debug.sh\))
>>
endobj
29 0 obj
<<
/Count 3 /Kids [ 13 0 R 16 0 R 17 0 R ] /Type /Pages
/Dest [ 15 0 R /Fit ] /Next 30 0 R /Parent 23 0 R /Prev 28 0 R /Title (Optional: bring up WireGuard on Linux)
>>
endobj
30 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 732
/Dest [ 15 0 R /Fit ] /Next 31 0 R /Parent 23 0 R /Prev 29 0 R /Title (Mobile vs CLI checklist)
>>
stream
Gatn#?Z4XP'ZJu*'_elg1cKUWd^Q[3$&K-qZLt%,16)_`+jOnZG2Ia-T`p1^.]ZAk+qZ3cGE7dq"V39?r/)6)AI<)%'I\V+&SOE28;GPf423iKARuF9-jdQei]&9Vh[T'<Hq_2+q4S>;mm^WR!/X(o%4ITh#JWj>1,5RTP[Hbo>(X"_+:JNM65JPO1kUuR\^F4S(ID:5%ueK3k./XE;n@L7PG'J+B=Jiii%qJ,9]ZmZDNt%sE-_lU:Im^dQbPbA'AVU?eeA]BiGOP"UYUaCiVd^&T7i[oBKZnfjjehh@1R4I\=Oh,CF(6.[6j.BlbAUsK,2I[-#nS2p&^k((UW'#l>="\mC(pujYQO+5D%79PD-=p!&5VrYOB4eQSd"87f@eP*Opf>XL"14NDij&SSSDfq8WQ)#c#O#_ae!U/BupAM'Z9ENPfl$>4<N=&IW<DBbIerofG:X8&FaBce.H_&l!JoC94rqk&AutYu0j.MrB#$N8jTSaKH=;);nBO;!,EPBT_9&.P%EbS5jW>(Tm$1]>m5WQ*iJ35DPZ+SZ0ap:@tXPJ/1O=E\*rS9aRt>F*oZ$@[Sb4=toaAYo$B6.r5d/d+Y0DD6taKBL;`%D\8at^+B%E2>[X/4OKE+nf7)o2l!`E]stZ=:F=O4(W/Q-+ruWVO]Ai(C+D6rcW.6Wn>+;A;uu%926<'jP/^s.@9_Eb/2a#$Klq)`%_rIWd)M6$d@p.:I"B'i~>endstream
endobj
31 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3459
/Dest [ 15 0 R /Fit ] /Parent 23 0 R /Prev 30 0 R /Title (Troubleshooting)
>>
stream
GauHN>B?9)(4Q"]kaJ'EOV8+B'p<@=<JmUuT(4J!P.[`NC-g$N,FUGsfe;sOpG<//\-R%O>B1o2])189ha%kfi?cJCRi@#E0$rO?KHqEeejr[B'eQT8CiT%;7,"bB2.8Jm6l"t_8._&k$N&a>Cm;63,R#bX8.l)cDs%@cpj$?H@LoD]5rV"$*9s5ZUANX:m:'[$/hUc-\T)nCG9q&V!IY=]$>h.U>FTm$R4r:Pl?Ej'LVq3r#VuiO9B['A*eAj3&Ep7;RPM2GE_!Nm-nDI<l]A@115ko[NCed]5p'`P#^]T=h'/o`i;mi8HPZ'HDsN'7NC$a!-D&2TA&4mPa!=!_"LRk;?Bpu."Be]HY.9u)ZCpEU<52g#(,SHYO";+T\gWU((FX%,TP-KF>>LOugWAu.hKV8$*6'J>\@P'ojFdX>c6dRO8:hVob9@4!8Qb-SEn#"C5W)P#p3j=7m>M>6`^[Tg)]FlrBp'U+'?1JZ0_=iL=d0&o!,Ll2FNZ72_8"?``SqA)c[CLg4n-Yjr!RP\oq^^6H*(IA*X.^][*^i\QQV<!78o;@N/+,k6@uA^@oWRR::rPO\40kY,S*`o_M&"Hn)-n=9%QV/W\m+jTSeWqkq5iVm/eM5S30^+E3LrQSu]SZ@ATB!WKQ.T8Y!-J_uV-oPctks;G=0T3`<f]\C5":N;3Lf#rpOof_F-n&Z`=QXN87T*5772%j(9tEh9O/]WaXFIggPW,I3/P<?uR9j"uSa_]ZN8/9$1P"X.3_";N+/a^U!7[?.t^[T]JT5;B%An!=hHj)URlVHusF.51XK_G1%92[ZQ96,0&n#&0]IMVLKAn/5B\B=LVe,HWl'ehOOTb%uU.mO'sBgM>iujjgHRc4UPn`fZa9c@4drh"UuAA4[F>@@uM-]W1^ujDCg>hLC_JTi0h1kn03HE`\N5;iC"CE'e%!"C1t-;7>;gQ4K=YX:5]l-/TNH"sseSi7pqbDDkNFajIn(o+W'#Ftj%u:C(dd6q]i"piiYeCOCS&?]Rqf]aqA_'M#f0Q5g&M$>$Or26k9n9DP6V9MPoeqiM[U/i'Eh&Ml!8rn;Vu#ojI$Jc(@r*F''VLnD<6X"36$Ahgpt5.NH2KlbPd/qf<!5V'V]oIjWleF/[Jan>f5GicG1kWmJa^8UZX!WcS:"4fY+>HmQ`B&BAPm`n=Q2['(B^V/T_XH`2_f3*[uMi&QTXFrg1#/u1Z=-D?!+%*GiVX)98DXb%9h,oNQ]I+]&8WCj$ap5Bd#*`Tga]L@10l#M34edB2Qj"J4<2VF:TYGn']4td=p7WR,b()n@G=fGaZIM7Rhti#b&=e)_6_j)?WlO3$9G9[L%+6u5ZmjU..?qol0O:TnVgt$Ap7ei*=kpS-3:>T+h_+0tR1XM@b4"6Wn*rd_ah"KDW;(iAq#oWo2J]o`qd,Fm\nE/B'(\'#K<N8L_VC<CK6Z.B^BKtW/a1IN\)9$T"YG#f%U>hhoE.GVShp%iN4Pp]*"Z!@1aM1EkM6SM*[c-nPd63HUp"o#:)aXrZ(f`X<,JRF$bFUg36j$>FpQ6P;&B$\p.>VJ#nYSe`rZN]U"*q1jKM9?+r&@kiXf05ZL!"/hXQ.b.:`nI=[$u@Ycn;8,i_$MKA8Z(R4QY+>K,#E_E/SfUaZK<hm#jpE'T^Npd#j8g5\Z7K2RlX/s;C?;0e(6KJld4EBL7n-"r1#/a,/DR%)=i_\Q/O9c=@B23$at^][hqaKnDD5EH\onQcb99SNZ(@)SrO>)'j#RnmG?6'/<0.&aWnm&QkPA%)d2MrR:259@N>3`kA:K6+(jHc*DE3<%jk"4Z1n?_DlWl8R_tnYdtZ:Ah<+`-"<?SsDG:p7OQ;Ln-e$Y!m+05MPo<EuT0c?k^c$'u@OM^t&_d7%:^54p6rb!u`nX=D,^M+\sseEc$LBhi=de'7)a%Fd`^Qplt507;gK8-Em_=`;!iHn+;'VDLq+7M-+GN=s9n\!_N);#l#hM!S/mZm`"LF&%C0t47:0Nb>-gO-FD6^?!lH.P=pO'.c?#g):GDgXM*jY\hjnc>Qaljgn5Ce"0o$Mce3jG:@9`3Yb=hq@e]uh*tMcOq"$Jb:qMUN4Idi+k;-k\P-,P5"6i"pi`Vf;4P8Wg%Q'cN/Mo\V]"o8QIRN^:%mFTV*,FMhe<9HY=H4riLn>-a'=@@9E-a<qAB`e+hRUGB\?Sa:qEBgmdTE3m3bAZKk:P]6=k5m)n0t_I_]f&Dg;),HcjQ;8"7.g]$,*Wu2:*jt&2[7p4)jlm6s%a]jDMc`;095+\e\SNU*_:G=T=1R)3(s+s1W"@\`X0P!.XDj__k1O:-**,lllD=k5?nlZ>$"e:-%n^e)!n/]mi=^lO6)KNmI+@le3nVX_=7V.](]"Y.n/BkTEuJ^Bm?M72.I&:lm6fR19PKMkI+1Nf'3.=Am"bO$CefEt?K(n2HPDbL=m/?5S<fGWtIhk4Hhq!T!1Lg3G.<dhuUZ:5-YCelC$u9!bR/E=;!/k_c%VUEfJ/V//FfkkLDj0`H_0o%p\8;A4(1AYoq9`A!YX8.F>&QZYU>kguX(1b*[#V_6EpiIl@_VrO-EL_%]09>&^s1">&Gq/hLA^`E8pIoVOS1BqE=S2&YSN'XAlED0]u.WKGmR=CXLNK9;!m"6=5rqTqEJKdL,8`q=<,S%WNq'SQmr#VPp%!IeGiP%Bn1;1E70ttnFpE(#UOF2%,REq'MdLG^n@F-=MF3>LaUtj]#7_2L@6OlP?[=0Sm_,GOc3r@#=I)4'^/hqm4Ip[e6BnU=#9]B(h!#A=BY'^H"4m1R2)]-o?N430=oK.E^T>H'0]_5XDlMEL48@>0r5+suK!-KPX@sM<t!;N@'7l#oP.G9<5RH+ht/i)I[*:Oeo3:)4]2)"4*0WM!!.uj5_4*Q,YbV"hEYV3kc=tpC9A7H[`!Q6JkBHXCqQPY4YLK<B&)dcT-[AfP6ms+>A&-.p;oFVI?,`ERa=%70&cu4E$:C&cSB]V:PnO-\V<A5GYQC/9oKK@_\O^+E:o%J9-r<lN)O#HbJqKQ[r,G1$.s&$0(q;j%Ij<'"9V3*qP1l<1`iYL5P'a?Q\0*'UHO[k58:N\W+i,XZ*Kg9M"7/Zim`&XdAZt&H>di`I(8L<Tp;HIWQj?p$raoc#`]?oi,re_hOrl&H#AAl:L@ts^ES:q0nQjpLYm3"$dr9h?1/SYKp&(\>KmQ6&N3G@)/k"A=G8A3:6>8F3QQEmIfoda#lk4=Wuo5+GX\s0@P"$4sg8VH^l5#T_HI&&E1a!ZF\p$@tjDB+#IQEhn;df>t&QcW0:PL:iBOU#ST_Z<pq\d]c;>me^HfWXCW5B5J"pm\;;Dfhrs]:dpiOq>NZppU4cZH%U;j-o3KIm$US\-ha#=O0*/"f6@f.Mln;:]CDq,Sj'9H\]7;(e#D38[gQL>r)gN#4V.K64JtT.r\<`"`PVVY((O>6$JmudMADO%r,W@V>~>endstream
endobj
32 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3054
/Count 6 /Kids [ 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R ] /Type /Pages
>>
endobj
33 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 874
>>
stream
Gatm>>BAN>&q9SYkfW=m`>^%D#<=00MV.!1b"c&+G$h1GNR7a3Fj#_Sm&L$SgS5,^+X(e_:4bu!e(rL%Q`in-+QJNGr]g,X5"q[E;#s+>klMQ)dU@G(UZpHm1F8Zm)j338A0(OF^*IK[NpDdc$^D/S7=hEKW[\eY5-!jlO]#au9B^c<*^^J;EZ+h?&E\L1@KMZ^!Xc9Z3D:N6'abM13fM^J'A3l/:R2W#jj\lpB6Kk1RJnhGqu_H61c8:TW7M^i6<-GiT/Z#k#J7PW(GTLjGrct`80*9)@EBo,/q>5K/6M*<JK$O=T"uXK*(I/UitYNO0i+1'5KX.O/uit6I^I@=gu[B,&i^FlYo<ncX3P(IJX=6hh)Gg+?<MW#K]18[$H)gTbig6]5)Ee7N!U_AKoL7-W[jK/Kc6i`FWoi%TFDm6cbtl,b'S2!pr[2*$5m$VG>I@^1iNeU3qQPdi9G2>q)k+u+,6!,qc+V+r3Fp!;8f;br;8+"Cahh:1][tiB23\f7kB%\o/ICKH'RFZqY&*6qtjoGpRX@Y)rqOL_o_!<D_kBOIOeHpX/$f/1H12:YMt8?oB-q"r]7RiiRPdB,4cQ;LQD'/k$\go4r:G0MVf3hKpl.g]=9<YV-m"[*ocJQO2RSR65%+=LtlAe>h1aN?Nm(?'Mg_o#<PFZH_@C7p6E?Od+Sf'V/.JXK3E&IPY"R=K]).]n9+s+'h*7\U0621^kto'*c,BI6<Ilt)WpJ;%1,#a.1CdsWr!kN1cp2H-um*=+bhaKjaU\T't,hcB4fX(@qq5'S8rM2aPH!nT+SJ;\M<b^*i%bK&Im[c`[dh2o*V+<'l/Q*X*a*MIY;%a75+,,Us=Ir%l]FAcMt0\BbMWDrCL*;p=!^s,(%H$Smc/KL_JQo-XoMTa!c;CU@;RoIshCX3"51'[AQ61+A;\0?tc__P=IRS;?<QK//m(i1cB5,AtbQX]/@1e6\7hu7%(Z+WH24ul_-__;+=V47]<f;0mi91V1>aFl"Z@.X62X>1s8[pXI?FDX7kB5cdCQZA5=PE74sTeNc^a<^/*C>j?#%oeNOBdF?@Nk7ddV.:@Z9o&[">[5=Te%0Bq2A>c&ABrBu&(/MF&hR7@QZg4GSDaQi^9$ECCBeLGMhm&9\G)P5c&'#a2b9WJJNd5YP8LH2+>`JJ:.,:^B`KcsOjfL"IpkB@osThk*Hg>)@Ta4BK^\8HN(Co^lS>4X;Iq8?iI;Xt,A47b$1&j5`.>8`1,On-u"k\`3p^OPk@/;8o,jU2VRA9Rr!/cLH`0O[CY_!*1Co.XTo$7/>lmX7qR_utIn?J6iAYQ[Y,$W_1p'dDPNhnTmQ`+YoB,\Rd8dLJl@Vj,"fo@+J=FQZ76R&#)EXLhf]7G7oh!A$pk=q*e$N+j'Vj;Nbj8X?HFNNRgd<mpRG-O8[RKs70o]R^6+]lXcB:]TmB=Y1!:?nWpJGn>jC,kDb]pI(MBEJ19135'hGAsP=E4Nr**2IfJ`'^0#97-(:MASC:.(`^d)OS-kO'@YoWGjhBP:E6NT^1>;[^kYCUbQ0VVM?,bmj&Vs$%ogg#5gh2^mLMSJ)lf_b,#eWK9ZAJ8/4ii@'=nH-)26&uaA`#tEsDTS.8n;aL[&NdW3<]$23h84eH`4(2<,F!nJnuqE)>M_G3E]'Ef.H[Sng$a%]6ul$fqeuXGioe2]ei*R$-6kX]P!4ArTq<CJD5_77Z]a3pSLi"dV,9S'3/n!G*l-#+J?;2ij'$PiXC^Ful2Y21;2?,&mgW`c2>e2qY`!D$P<PT#7tZ78c._cq!>tQ^O&JJ3oU\[)tYHFm?usG&*\pFGnZHd%L`s0%/Oel$AApdns"YmBe3XF(3WQ$_P!NXkcIE1VG,_FWUr0D4A?MWjUTYOL?g\.`uD=Jn;u0WjOU0]S)Xu#K21:\0n9/Q/6DYe!Y[&\0Q(8Z<!A<KY__I[o,BU03LlM>%u<82MuTEpDWDS.9>qf4r)h9J3M"&eimJI<Bo"F7_<e=BDUfd.tV#uEWh`r7TF6-E"<h/]`c%Vf2X'gZ9,EnEXtquaY+&4=:5_gM&S8*X`Z\R.kftjn3PhtSs06pW$@8QM#<_$2SV`oM#88]'^LsmOa<`3!oQCOWB"PKP:I?R`Dg0=d/WXn_jN>XqmrIdp%.V#)$9=#"q:?4(aOhW9N':K@J@$3RTQ$,^^.beM1VLSJ:Omm^emB_QrkQjW$!2s/.li#&.ei-#WO:>M!IY9*+]8lcnaJi>&OULXYneU%TC_5K7a(m;feU7"%fmO[BVa=#(<JC:H5mH&kt[GZ_2*<XA@iKbZ*-BdgJ,K"<m/LhITuWJLQI;HPa,URt+E:K^"hZm`EYQe.E.P2UE%<lcgHDL2D;miP^IaMB+7f*G1U6^pV`_8Cb,2W7FG:[VON0/?IPHTreoi%lP3J4\Z=AqCZE9n'C\aehMki\#4NAUH%lbO%.Z!act'%YeG*!WV:urHGZ`XjnRD:TY)$^3&GlZf!DhCG7j($5F^%B#m0*ube#St^UZUOAP(HQ9TdeHUO'Hn]9'Z1@1_hBI1l!a$;2:"d_.eT="OdgrUK&jpZ)#ad,$=c5[LsilW74;eNo;Z]4kF/=;TeDa2C()I:r^VYIc,AGWH:I9PcZo@>/ugYK130hVB/=/\Kr>dkr8g7a#2"[3J@<mbFtM-<eG;nU-V:VSn3[gchDd<Tc]Ef/3rFM6-MJlS):&!LM>e>`rE=*sJu0enUJ_#AV9<%N5pB"jcktGlJMTmimA"8N,uSX\(^flH?O*G:?-[WuIfgHhgg;^!fS;r.*h&[M9GD);n/9E0S(cYjE^S>I.=cbooG&-kLH#IY#,URIrFN=`fJa)tQ2W;0;Y$XP'g^".Td8-Zh!JM/O6tpB[$Ujf]oqA[`6,l%qb+]`\%YGOl;X^_<ek?FY*0/:"?'hiG%bCL6PEKV&Cn`\-C2NWm`u$[CM`Z?G`<V/F-@cB>p>mpfm.[Bbu4Ou@qZ\OI"/lAB+U#;4(t9p$.54F@msqBkiPFSfo9ZA2L_UWLIRE]_"WhKnI8(phR\dNX]['RAY1'ue&C5:-IJ;Z~>endstream
Gat=*968f@&AI`dp6_Y.U6YDUO(k&)g>S4Qkp[G#Lr:0I;D=pBpKa1(575DB%+\O]n(WV@V+'>7@.B7UJ?L,$h]neEE"4:aKQ%!:iTSSn5?CIr['-tB@gqC(+:1PI`dQep&""/HDL>h]M*N8dSk$_UHSl#EPZ.oRj\uNE'I_)M=$i*5SAE1>9p`DE.$!\@%8T;-fLCd0(?NXnK;XW!P&:38mGnM"JTU]L=]fp,<_<;\FEn2O.tgtXDGlW&&+gk466fEo(Q)^q&_^aL$]h9X+6X]=89$RCJXU:qMk()/]1l`BlQddWn&/LGBnpEF0]AM<[/'jk;qrgL>)9l)Es"0&o+Wna9H_;b9^%aqq%[n\Vd(JATf&noPgCIE'L0h^S3q*foBLCAj_8&iX?^n!(8W=m0ChR0?WT)KmC&/o;sg(gA`XUD(DQ+WT@h-LBI9E>-9:@4R"%P_NGUE%d4Y)R>iC,BKihE$ZcQR?Wuf!F6(R+:KfATOMq/tnF1h&dkS'iupEPsrRYq$MiFd+>LT+m)(iEDuG95/:eDAm]p't.H\Bn_\5M9JS*ZTo+[*Ip+T-a(S*oatS9t_O._ZRXn7n%UU*jr"Aqn/9R%JF=I\(9AkVtCM^:@0UcU`C&a_%E-u]lnKWnXId88bPhjnM[Z@*B"Fg_RF*h8Ssb\rpeRWoYLI9NF+G5pr*:%TCdUR0jbcsW(C]_O5HptJbT,NT2sR,qcpqD&Fm>^2l:k;@;X*u,1ea&7A:uI]g5rB.oajq"Vo$6+JqKh#!uAsfg*UciAD0Qc*!pH,m'prm?YZW5>#9)N\tPi2:Lc!=h)[H7&-G=[VjB@l-HE:Q41nle@<r[.hkoQ/Z_U)$\W<BNC8<E5LeGDT`~>endstream
endobj
34 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 646
>>
stream
Gatn#>Aoub'S,*4/'_Y9#M8*5hpR0QOjYO]]_*RKjFA2^&BoN9p[`#g<-<&RTaFr>&fA@O*6pPIYZmp8k!sr+$J0J)L^3PY8:Uc7$cqPqpP>>8"sJke&-ice0uAAX\G+cgKG2ZBI6`6"iA^iPLL(l1;#?CP-@*QA%.ra#hO3>J/R_?+Y2URr+IBLp[F&&@If]MrZ6.l5`/jC8q#1Rq+R('q*W<6R##*-I\sS,Y_Jml]BId\>+-@Zd8n=JCdI[e&:PN=B=HO[j)l=$[`g+bN"]FG.f1%J>AA,P=iT#?`(bYZdPUpY-K&O;kg5C7f[oj4H&e3slA%$FI8"o]Zb>\KG1CT_0e_HulZ)oUHD8CF>O*'&*4ZFERD:u:q@FYhR<1=c[]^^)(>DV#4q7fdk#"'9abFNUsqlIF'EJ9Su.\TQILVt:WJLYBi"OX'1`attOgJ'=c`h[0Q4qL.23?N3\+XUnki;NX@%YZ8n+6$$+[l<$dQ<*,F#/4aE9:B]FdqQ6sDgtLto@\fBQf$/pJ;ra2T_YS\.o@BF]L[/F;8[-l#LA":E2DB`EmmY8VNJ#kKc?B$Pln6O0;[+\6g,p.#`0dN^Rs"_':GTY4R:l-'`'O.M>J/sLdFFk0"A1LH6`9A"/EWuid'M~>endstream
endobj
35 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhNS@cJ`sQ<)AT7bBX2'SI1sre63!8eu#Hi*12+:VXOqE!h>Xcq$8qnjH_CLV:rJP%rsj5>UUDD.`Liah"L%cVntog).//WF]OI2_e/&`/?Tki+CUX9Pb^j~>endstream
endobj
36 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhN!`Q!btAh.P+,O??T$:5)Js2%0!'c(Chi*12':B,^cE"9mgcpTunnjM9CKRM'[P%nF[hj8K8<cdi[ag.prcc><c[4u7=;Tm#&O;KE.i_Ac@E&[+g9Rn-*~>endstream
endobj
37 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3521
>>
stream
Gb!Sn>B?9)(4Q"]kaL>0OV=e7*Qb_B.`G9u:\bc!8R>@b[@h*8&J,j`p<3C-4UhH9D?=IJC2;"\Oaofk9:ss_=s=U;:Q5<lXqCLi7tXS]&g]AA+]6&_RU;cQr8d$t\>*#&X:8/q62F-iP+_%.hT=AA!aX%VI\+?t@`D*+d<ppA!NUTrc>goC$LqKuJ9i%23Zt$SHRSI4rUfr04uL=r(Xq']\@fPf_J9OSDiCF3Fr8ree3hP=FB5T*pOI]P+oT%sTnT(,FGf4A^d(L/oTjU\LNI`]a0g^#YXh8b&IjY/((FM5AeE]1I@QlPi`QS3M_6q!&+CurBDrD6[SCB1Rg;R3fX!p%Z%2&k0e#jh^oUo//14k/(W:XKC*Th&WmX/*@9jG!%0SF-C0D8Y&IYnCee=uL/<7)7"+c>@9p-D#,cjVL<_jhE)*uZ&7.*@FGjIXmI%>JS+#\u8D7[6g6u:mO'JX76ECiQ$M[^4S/6"Ek\Bd)0mMra6>>BbM/UBKKJotQn\u0=.U1;ZJN6Q%WSYG%WMc40^Pf4!2I+S&#h!9@WEV*g+^I,`u^;@H&`5ZWe"ZbN?io9UC<\\HYm%k%4\^q2s6V1<iK]S=CkX1#36Ulq=8t:-GOE-8<YTugZl9iXI+NuoLPQ.I9iin:E`sXAqpmJiBW4BBF'.[*)b&:Ba(QPZ!]L?6(\@c:I]GX;2=J`q:7&cDNA[j07]953Q_<nb]ALi`7!kg<Jf94kKg$q"0mG:LAKJc&B'*fR@o]O5>-8+tc!fQt3giXQX'<6pTb]&dNOa\-8G;Nh?M\(ffd\WlR5tNC\*34eE7sQURhY1Mi1AuZI0f:R2=^^O6;N],MmjHQU)l/VD8GR$Q&45XOf1"pH&Hj7_eRuD9/46g'WR_B_ElqjAWU@ecPM9m5e)f,e.*_lPC.1$ujuN;T#LPRLO<dJfKLPj$oOFoX^QX_L21,?p5&d@8MphlolV^fJ?i(VpG6/)/M8Qk%XeK^FCGd1d$VAkYl&tp4X21)k)g6*F9-<&m<0P>;<Uq+s@dIP,WZGb13lXf^lKGE*=4VctP._p-#l62heJO<mR4^K0!>N]:[T%rjNaKp6-"CsjW8HKWOlIY7pH31[A`$iT0;*mVJL6ICdBc3_@0#h=GC+ID>i*]&pYX"m`iQDi);9cUOr:V.+bK\>@Z>giG>>R_,Tob#FWq':NqYu;7iP:O2:f"dk@b8#qiL2`USYTG_8r(>5A%A`4HYmAT&D_'Y^Y!HK*k6G(\k(6Yjt8H3p1"O[a9-pprk[EjZkb*&i&h]br+a!nu_K!m=PG9fR,GTTt`L#h!R>rK*ZE03*`FX&["ELqbVId!pTEP+*5T?bU2P:GhZc0K6Y-?BLj=dm]?qX]$%,qf)ot,K,,?33H!8T\\?4Z<2,-33Yag^U9'3\.2t"#>Bb_<]fQ_jU0Wkk$/MWPqZm&nG_1^6Y,ENoIboQ<!B@@/g@"XJQfOJcR`1>@qubp9[ZD`XOjkr#g\1Oi\BH![Dk;F]Qg#`.a`C89.Xds30[f]Y.0j[R4W!pEM7i!pb(hb@*_=^-fk8SZ]1>ru>)2-;!7JG>We\Ej.V8fhB+u?K'ugFhPYpYV-ub#ERPHi25ojnqJ=mZ]^*ZC2\@tIQELdDm8G+0bhRCTI+,Z:LetATLpl6.*?3)SpnfBuJgci7dcd0b;$Di<0G;/#I;[VU#VG)!65aFM,6>L&aN^lqPV'MV(,UJ_NneMlN<>jeYUt3j)<)LgE3fXPZB'9@pMlD4V86DkREI95iL6c9.=gWi(kR1Mu/nG,@,g8/5)YbJ_%"fi\T3t:s/.les0_'.e0C*(Bh#@tj?bQ#$Wl!@n^jbsfWr<3R($-jrQR_+q>JYdJV1/lq^\:C:i!n>Q'0++AEp_5#qds;L'94&K9#>75$#_,G[>'FaVCqKY$rSMF2k`gF1Z\?DcUg\DDX;(8r;LjFG$N^$4:ZJ(,a/Hs%QmN1*]1eA5(YFB:`8V(_B5Bh<#gd6:pJA7r;qpPdW@dk:E*,<jnd`FHC]TIQ8ha^2mO4+dq`s4g?FT&"5iVpf4UXJ^ajANm,*9X3=IbT\m^3omG+?LZNIV=*R@l@qi:+t&R5-.'Oph<$7-3jo_>aIE##LUC<9%F6+J-1X]F/`ich'Oa([ZCF.EOt3o?XS1UMiganK(aL*e!>49B'`c%&+g_-T:rC`h659q!C1E`X3!"rqT&DL7o&N52G)Fn8#kSq=Bt+"KYg)Jd>(5<"4uScsQ%J=)Jj9N)YHb"/qt\&-`\V!uf3TKI#C!T5S$<d[P4gfT+>T*MgqQhl`Mc>&Q4):UJQ"*g^L?Xk4@`5VU)Xd$gbV,faK(^.Jts#A7ap6(\0J5MIP?jVa.XS;aFFeL&)4b9Z/=;Q;.g]P(/5d58/JsG\RFML8,ILYVcg'EV:?@Q>jh1%o`YIfmgKWdrM@.]J4UrLAD$*N6iT^f39N]t8'9a_uX/X\Pcp=d"&q\PIu)$l@KI#=A!f9VSYU3/r.e69Z*@D`@9<Wjra.n9Rc<$rDXh1Y>u73RLbG$Y<f`UVk5F:0??/H5FN%/BQ^3<nMBBt?8U]u^']`es*"gW@"JiY80B?+DpJAVP<(gQ*j[EK*uKR9+*gQk6`Wo!5?,<E8@7Gp!K07aMaiJ)pusT9qoN>kD:YK];3NV@=R^'!?XM[a4_A,7t;$s-hH0`l1^Ce4"[JGkp@ZNArC9j2-=;]V2.kk[QPT8Z2Cid\1UR=7s(P0;'M%!k&PK7BD>Vq@ZklMu3&2bB.?D*7(K(lmN4d#6RiOYlK:5q+qn8"5*2BM&d,B8#S7sSYfQ*moCE(XtO^PDmS^,LBN)Q2t"\l=`Pa8+as_.\cdA?r+I=DUTMQePu\[)51JnJ@jB)l&U+AKrF?,Hi+>?\(oP?f3C9qK#2'-J*Zi^Z@nGDQn1t[E3SuID\;7(oZMeO@hsG(U<;aZ1[I98i5HoQs<ZAX3M-8:3L_:KA;>h$L,QTCOYeK%P\t2+SQq-S[h)8jbOolcA%u20'^"l,51Tch:,TeTbhmqo3Yih/lBmg$].2@Kg67V-&arje03Z2610/(rg+'QWuDO+CEKN<(PZBHFSN.I(KoXkQc1tmW<=$oTc'A37m]WX8Gc-g`.j,(L98mj]h/dm4@PWDlFW7@a/2F_oG\KJWkBMDe6.mY8i$2BJW:ISiF,td8,P)mFBdRXm]NM8j\ggAfD6>#i^)#14k4A)`(Sg.tAQKr&&s(_uhieMdjjBt$tNoq@ic_;1d'Y;!=98<f)e=$q]+<ke+#LNI5,)#s3Fb3:$K%%aAmCP@d%A$-NfP\0N\A%O3"$<f9PJo^fl[$0i#/<03ff\E_8Z>%ic0JS7W8ADST`4p@,q>5P[t!PZrXF"L>=TIm<6R0>/#"XTS=aJ>PS/'jB")4.`j*R#rU>[D:4jq?7<52BqYh-baFgj_&VcUF^L[tEXq/(Nl)0H-K_ts$Q*@C.GAVZ_lr#pW@pK[8>slTWr?+6]*/*`tP+Ik<Q$KdcLId"F'm\U:aa5KO+RO[e3r(E3k$i<~>endstream
endobj
38 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3259
>>
stream
Gatm>l#W=b(B<g;i`.=0,>Tl7NGpd[V:`qqALABhRJER,$:@J'jt[C3?+#1[^?-%p+HSaMROHODGP+%HY<`.0rs7lHQ3Zo)%d.1%&4Dm=6'+)Ek1;;TT0/\N3Mifrl:BlFcuaj!-!eOR:B!,1a>/Q61QI;T2'_^G:W]B^$$$_P+TeRWgd;Z/W9g-L(bl$nm[RIC'?9Z,1(>E?_f?cXY$j;sacg4sTjpH#%e8uVrF2u@B^D30JK\<hT#1CHk'o'2s(kYU1u^>dd$U9H"PSYFF+VFJ]u<<VOXZ6\iRnZ>r(H%\0G,\:MujN]8E;=/+LC0=8$`uYHn"oo0"`2DW5g7d5*'??:[d.IhMu7+-8U9[^4WP?1EDI2GX5"3e$97U7Ml:eqRb4ClA4J?ceElI.\*0s;EKFTPm!.*_ZXS<-o,S*UY5;Q$7EXIf@:S\iGU(f?P>6$_)>d:6J(i9/-`*9bU4<UBRisEfV)`;]4=po[H0EI78:+c_MD-[29hni#Qg;GUKq0GbEt]eD*FSh_;S3m7>1GK&1)c@.OJC^Ie!oM)9+rJ)^erZbm5hVh#(2*?uT/E\UWt?Yas;cM<Wb+KWu3cVH]tUTS$=i_8A5<>ZuK_7o66'e:lrZ#.<5%eWp[*g%7UtcuU]mko'X_$mP?3q424_&Do)S)N\U?!7eUZ[#X1.?C[XW@7[pTs8:(Ed>D5#UC3g3Yq;0Z/Gegl'k[RRX`GIhh0f62r0g>t5FJtCq"]p6GW,Hkqa0A/hhrl1VflfX2%!dT^Ydu7a6X4:<;Y6L(+[lB*lo4$Ja]?tB<YODIkOHKg0"rABU&BlYVoc*i7#Ta`3C@+$/ku>NkYW]'022qU;I:^.jhdN_8bq9HPP"9jor.MX&W:Q$0kYFFem/2-FcK`q."e.!GbD+hhH78G':)*PXPj.[Gnh1'm5kM>QW(E`u%KRO8hS!(8n>J`O<9'6rkS$rs,X(Z&K&Zo58+u6YBU'h]cgAG%0Gl1rd<;6K5n<1+^<CRp[;EY@8Lqlae\2Ynpl:%l):`l-eMIfoM>nr89fm%p*AaeijSu`-skoF(DHmhF3eM']K6)E*9KNnec!5ec\04i:!jWg3//KjEf<?8`fU,AE[nNZNhl%C-b7B=Z1*Ik\N(2NWM0.G8gtFqZOAPD<;>50C#teWY?.Y$s@.pArlSh;,f%Phgq3\q`Q/L.o7ECWk?K4`pMijamEnRb\#a70b+;ClNU'Gc\u0ic\@-%C+p,Pltki&\M".Kh%TO<L&U)=Qg,3]@"2oCAd[POK&B1Unh]a6(KjG:=PDc"^s?25[u-'?EI>(sIA'._*7>69%MM'Mb"SqhKS[Q<jAW9,@M:$*/a1UL'ico0rC<c9%/:dknQ=:!),Q"TE3nip@(;i!VX%^gVCO,Djoe0ZoSr)_\EQ/H`K*V?Dh^`jPM$XirZ]=<3!q6g@?JOn]+b8[5/O$/#!O>EZ)0f"=Tg4GG+H5Pp1N$'ZSGG>?neNo'Wg0)B-Q6Ls*uG>J/LkM.+0[D\/hN2P#N#a4)'RGL6f&r:/W=@oPR]W;1$,^651^/XqiGpbI#H,N=B453EAs[@mef^:<<g&:<3/K_*:AI"&%*_;]?YE!'2)m>8T@!?<Z@KI_b[)[+=B1bD)Q@'?#pkq&(`g\84jj`PT))2D!<IJI^g8B_H1CZ7^0tI\7n-.UNf.=V5S(3sTnWU2YDV4bIqe6aS>^##+/o$1i-eP2f',Ue&9m]#ne5i&!mPAV&s#cQ;+$9ba-3"]9ss,0l"[ndjg'ro>m\Xbh^(q8lJ5bobBp:;3at$GQ)0PHUdpJhQQ0p*%)InP'O<`%9sPEURF.JrtMdrY7pG.0Da!jVZ[QRjm8Bnf"^HK'tZ<cWXIE]ZphhTY5sM'XIk1*(%rl0l$ij>Z_KE]1P/DI>UKkOXkPNl$0(,jGCAPa!76&N`4/*!q6QM%f3?`LF\.cU=-s,]l]I=bY="hTaS(dAKYSKeo7nKS&[>@Ji,3c#pQga[.]f\:EMgoP1o,tNTmed7LAtAZ0"U55!#;"PtBSO!V=]^,0[8p[r2Ufqa0qLI;1Vr48iLSQ,1?A`)1P?*(YhqEuV3D]3TPAe"<"oAfO4l]M&pSi')@3W=[SE-+WH?]a-)&)6a_(h`FuB9`R1&:+/;ON`301^q6=gX<WsImiKgIYNZQc\K7H#0"[ZXnF,hqbmNYqf[QI6St2[ZP<4#0bl#uKJ@?(%*GLnpmB,E:?Fg.`71>n&Gu4d9TR&T$(&>9!D17kh&G\g%$2,`i/G2DI"Mf`(b'4g.:C^=I@&1.qU&X-PpF"`ee7;!uqX<h''*R6_&e'(j(rS%4R&*G;$bNnD$=SXaKb8pYapMGi$O@S"$[>Z&+AAjfi)R%4:p@6U=2b4B^rc^b'aoi`.LUKd/I75u`<Of&]\$sNiL#gH-<i,VMY03gL'(#03Eajcf&8lW,u2bmNh29`:lrsR(`H70-W(EjU8Z6!.@^`]+e<I6AlFqG-&U?%Vma".JBIeCjk"%lPFHcq*WqOX1H2M\m1UX9N.U!/JS:&W/ERsRQ@QfZc9[92_cp!/K2CUXYVTDFNAEoQ+N,?A/D=a*%_g1dc48a@c89j>`j.\T]Qdj)Gcb0p8iSKql>'L/3tK8X_%Ai(Fo9[;oGBIJ=s&-"'E=occTX1U7AOl$N/0SC#`.4iDs7P0]g3&]Ht<m_jF#FV?7s;I,k"#97!im>`;?"?MYI]mc_g'-AVmBNrAG[FRGIr?43C<\QVMf-b;5t!#gtg_D2T,*U>s_TFF1\9D1Ur2a0pbHVZi&7KDbf$=9n*EHt^R4jYes4l^^5q!-/M?%+\N*`3SH+7Y<YI4.[<olhk<?%Rf[U$(WO!B<8a`U0q3Hg<[,96hM[C=Tc`&dmNS10Y?sXVrU!;1M)?gM!,/TNp"@XmjUC)&I]9iBJXtbFH(St02=a/-p?s8&W*9L[fYrf;=a\uqIaXm,i3UXpZCP8I"\_p,hT.Rp7VunjM>Jb3GZApSbC5&)RR^8`:U`gT(OKmqo#=d"-/,D1U:)8fQRPs1I@)"qGG+9FUKmnSd=Ca+2G)7l]4;YRUE%7K9bJ0`G9>=r>_lOlXaEN]Fd7V]9l[a$_EUnn@W>.n).8Qgk+^[7l:4;a2k!RB04EbPo#-pXVb0e20>-FC;khB8E6M9i:X9@D^RJ.k7_?QGr_;;N:/^Slg30"XMH_#lm-H-Qq!bg]^2Cq:6PiI;ka3&722_'ZoNmU($u],j3WMmL^L$c_C3rVTOJo0cD#:KJ!ecs!<~>endstream
endobj
xref
0 33
0 39
0000000000 65535 f
0000000061 00000 n
0000000135 00000 n
@@ -198,35 +249,41 @@ xref
0000001385 00000 n
0000001533 00000 n
0000001649 00000 n
0000001917 00000 n
0000002023 00000 n
0000002101 00000 n
0000001755 00000 n
0000001833 00000 n
0000002039 00000 n
0000002307 00000 n
0000002513 00000 n
0000002600 00000 n
0000002934 00000 n
0000003008 00000 n
0000003118 00000 n
0000003220 00000 n
0000003350 00000 n
0000003468 00000 n
0000003609 00000 n
0000003741 00000 n
0000003859 00000 n
0000003956 00000 n
0000004031 00000 n
0000004854 00000 n
0000008405 00000 n
0000002719 00000 n
0000002925 00000 n
0000003131 00000 n
0000003218 00000 n
0000003552 00000 n
0000003626 00000 n
0000003736 00000 n
0000003838 00000 n
0000003968 00000 n
0000004086 00000 n
0000004227 00000 n
0000004359 00000 n
0000004477 00000 n
0000004574 00000 n
0000004670 00000 n
0000005635 00000 n
0000006372 00000 n
0000006600 00000 n
0000006828 00000 n
0000010441 00000 n
trailer
<<
/ID
[<84e36839b1116312a237a780b9dc4734><84e36839b1116312a237a780b9dc4734>]
[<7421df7523b2a5fb9743c37af90d9b8b><7421df7523b2a5fb9743c37af90d9b8b>]
% ReportLab generated PDF document -- digest (opensource)
/Info 19 0 R
/Root 18 0 R
/Size 33
/Info 22 0 R
/Root 21 0 R
/Size 39
>>
startxref
11551
13792
%%EOF

View File

@@ -1,5 +1,24 @@
# Android Cast — implementation roadmap
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-18 |
| Last modification date | 2026-05-18 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | pre-requisite to |
<!-- doc-meta:end -->
\newpage
\newpage
---
Last updated: 2026-06-04. Living document — refine as alpha and commercial tracks progress.
---
@@ -12,6 +31,17 @@ Last updated: 2026-06-04. Living document — refine as alpha and commercial tra
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 19 0 R /F4 21 0 R /F5 22 0 R /F6 23 0 R
/F1 2 0 R /F2 3 0 R /F3 19 0 R /F4 20 0 R /F5 21 0 R /F6 22 0 R
>>
endobj
2 0 obj
@@ -17,77 +17,77 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 716.2874 100.381 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 762.0394 100.381 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 705.8499 124.2975 715.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 59.68504 751.6019 124.2975 761.6019 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 59.68504 695.8499 140.1375 705.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 59.68504 741.6019 140.1375 751.6019 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 685.2874 162.605 696.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 731.0394 162.605 742.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 24 0 R /Fit ] /Rect [ 45.68504 673.6874 118.157 683.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 719.4394 118.157 729.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 663.2874 113.717 674.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 709.0394 113.717 720.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 652.2874 265.741 663.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 698.0394 265.741 709.0394 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 641.2874 151.037 652.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 687.0394 151.037 698.0394 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 630.2874 131.949 641.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 676.0394 131.949 687.0394 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 25 0 R /Fit ] /Rect [ 45.68504 619.2874 161.269 630.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 665.0394 161.269 676.0394 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 26 0 R /Fit ] /Rect [ 45.68504 608.2874 121.277 619.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 654.0394 121.277 665.0394 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 26 0 R /Fit ] /Rect [ 45.68504 596.6874 126.157 606.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 642.4394 126.157 652.0394 ] /Subtype /Link /Type /Annot
>>
endobj
16 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 26 0 R /Fit ] /Rect [ 45.68504 586.2874 121.709 597.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 632.0394 121.709 643.0394 ] /Subtype /Link /Type /Annot
>>
endobj
17 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 26 0 R /Fit ] /Rect [ 45.68504 575.2874 120.829 586.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 621.0394 120.829 632.0394 ] /Subtype /Link /Type /Annot
>>
endobj
18 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 26 0 R /Fit ] /Rect [ 45.68504 564.2874 92.37304 575.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 23 0 R /Fit ] /Rect [ 45.68504 610.0394 92.37304 621.0394 ] /Subtype /Link /Type /Annot
>>
endobj
19 0 obj
@@ -97,33 +97,22 @@ endobj
endobj
20 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R ] /Contents 47 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
21 0 obj
<<
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
22 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
23 0 obj
<<
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
24 0 obj
<<
/Contents 48 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Contents 50 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 49 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -131,9 +120,20 @@ endobj
/Type /Page
>>
endobj
24 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R ] /Contents 51 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 49 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
25 0 obj
<<
/Contents 49 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Contents 52 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 49 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -143,7 +143,7 @@ endobj
endobj
26 0 obj
<<
/Contents 50 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Contents 53 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 49 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -153,7 +153,7 @@ endobj
endobj
27 0 obj
<<
/Contents 51 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 46 0 R /Resources <<
/Contents 54 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 49 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -163,138 +163,189 @@ endobj
endobj
28 0 obj
<<
/Outlines 30 0 R /PageMode /UseNone /Pages 46 0 R /Type /Catalog
/Contents 55 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 49 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
29 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190938+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190938+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 implementation roadmap) /Trapped /False
/Contents 56 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 49 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
30 0 obj
<<
/Count 16 /First 31 0 R /Last 45 0 R /Type /Outlines
/Contents 57 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 49 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
31 0 obj
<<
/Count 2 /Dest [ 24 0 R /Fit ] /First 32 0 R /Last 33 0 R /Next 34 0 R /Parent 30 0 R
/Title (Alpha definition)
/Outlines 33 0 R /PageMode /UseNone /Pages 49 0 R /Type /Catalog
>>
endobj
32 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 33 0 R /Parent 31 0 R /Title (Alpha app checklist)
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Android Cast \204 implementation roadmap) /Trapped /False
>>
endobj
33 0 obj
<<
/Dest [ 24 0 R /Fit ] /Parent 31 0 R /Prev 32 0 R /Title (Alpha backend checklist)
/Count 16 /First 34 0 R /Last 48 0 R /Type /Outlines
>>
endobj
34 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 35 0 R /Parent 30 0 R /Prev 31 0 R /Title (Remote access \(alpha \204 RSSH\))
/Count 2 /Dest [ 23 0 R /Fit ] /First 35 0 R /Last 36 0 R /Next 37 0 R /Parent 33 0 R
/Title (Alpha definition)
>>
endobj
35 0 obj
<<
/Dest [ 24 0 R /Fit ] /Next 36 0 R /Parent 30 0 R /Prev 34 0 R /Title (Auth & email \(alpha\))
/Dest [ 23 0 R /Fit ] /Next 36 0 R /Parent 34 0 R /Title (Alpha app checklist)
>>
endobj
36 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 37 0 R /Parent 30 0 R /Prev 35 0 R /Title (Product positioning)
/Dest [ 23 0 R /Fit ] /Parent 34 0 R /Prev 35 0 R /Title (Alpha backend checklist)
>>
endobj
37 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 38 0 R /Parent 30 0 R /Prev 36 0 R /Title (USB-C / HDMI \(roadmap D\) and USB-tether cast \(roadmap E\))
/Dest [ 23 0 R /Fit ] /Next 38 0 R /Parent 33 0 R /Prev 34 0 R /Title (Remote access \(alpha \204 RSSH\))
>>
endobj
38 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 39 0 R /Parent 30 0 R /Prev 37 0 R /Title (Commercial \(Play Store prep\))
/Dest [ 23 0 R /Fit ] /Next 39 0 R /Parent 33 0 R /Prev 37 0 R /Title (Auth & email \(alpha\))
>>
endobj
39 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 40 0 R /Parent 30 0 R /Prev 38 0 R /Title (Crash console open API)
/Dest [ 23 0 R /Fit ] /Next 40 0 R /Parent 33 0 R /Prev 38 0 R /Title (Product positioning)
>>
endobj
40 0 obj
<<
/Dest [ 25 0 R /Fit ] /Next 41 0 R /Parent 30 0 R /Prev 39 0 R /Title (Stream protection \(FEC / NACK\))
/Dest [ 23 0 R /Fit ] /Next 41 0 R /Parent 33 0 R /Prev 39 0 R /Title (USB-C / HDMI \(roadmap D\) and USB-tether cast \(roadmap E\))
>>
endobj
41 0 obj
<<
/Dest [ 26 0 R /Fit ] /Next 42 0 R /Parent 30 0 R /Prev 40 0 R /Title (libvpx / Opus / Speex)
/Dest [ 23 0 R /Fit ] /Next 42 0 R /Parent 33 0 R /Prev 40 0 R /Title (Commercial \(Play Store prep\))
>>
endobj
42 0 obj
<<
/Dest [ 26 0 R /Fit ] /Next 43 0 R /Parent 30 0 R /Prev 41 0 R /Title (Transports & protocols)
/Dest [ 23 0 R /Fit ] /Next 43 0 R /Parent 33 0 R /Prev 41 0 R /Title (Crash console open API)
>>
endobj
43 0 obj
<<
/Dest [ 26 0 R /Fit ] /Next 44 0 R /Parent 30 0 R /Prev 42 0 R /Title (Receiver / sender UX)
/Dest [ 23 0 R /Fit ] /Next 44 0 R /Parent 33 0 R /Prev 42 0 R /Title (Stream protection \(FEC / NACK\))
>>
endobj
44 0 obj
<<
/Dest [ 26 0 R /Fit ] /Next 45 0 R /Parent 30 0 R /Prev 43 0 R /Title (Deferred / post-alpha)
/Dest [ 23 0 R /Fit ] /Next 45 0 R /Parent 33 0 R /Prev 43 0 R /Title (libvpx / Opus / Speex)
>>
endobj
45 0 obj
<<
/Dest [ 26 0 R /Fit ] /Parent 30 0 R /Prev 44 0 R /Title (Related docs)
/Dest [ 23 0 R /Fit ] /Next 46 0 R /Parent 33 0 R /Prev 44 0 R /Title (Transports & protocols)
>>
endobj
46 0 obj
<<
/Count 5 /Kids [ 20 0 R 24 0 R 25 0 R 26 0 R 27 0 R ] /Type /Pages
/Dest [ 23 0 R /Fit ] /Next 47 0 R /Parent 33 0 R /Prev 45 0 R /Title (Receiver / sender UX)
>>
endobj
47 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 871
/Dest [ 23 0 R /Fit ] /Next 48 0 R /Parent 33 0 R /Prev 46 0 R /Title (Deferred / post-alpha)
>>
stream
Gau1->u03/'Sc)R/'c[E-=Q6dcH#?F9*H4Q>na#>oYrjCadU/9m/m1ZF4*st%Rr^O+sg6:h"Sp;I#^o$gP`F_?36WDE&&_)*(ZA\4QJeK$"qB<kC@@n4c90!@Ln&55hM&Y43nB]*',]p!P+>RK+LjES]E%KD?ol"a\F15UpLaE&DBZ7:*W$.LG6!>0dJ1V7ocR"T#-k/!t3-U+><%IPbKqWjK\h5=^&--#a-9kI"^NEk?H_[p3I5%-\sr0;bSC-^u=krfgTub9cA=n$Z99U_JlMc$1k4FjND4kb4H;/+8RfZ:)LA7cNgsj(XUu:Jp4(Q:SnU8G#J[.9Am*2eiV[gd&-a.qX1+A@;?BfeON'!0hB8=YOX#S*Q7L&`JFiF?@!1=,\W6heMZhin5YTdo/_OHr==]'``Jm,hZOS'IALC*8neD^c@siR(p]I,/Za4;T.c3ccihW8c/4['V4I,!\CQeMal!8WP3'Y-9IBuC4gjg]+YtFn2)e?)h6,#8]'Z.dEF8Ron`fQ\:>gNjjhb3*D.bP**!*CHU_u)-A3p<8>Mq-nXHQM!e/.=NQDID?B2,78"oAJ.O\.m@7,80g$%#$:9P7'Me$A4Q[A[Ii]BFc1K"_e*UBE+7a4k@gm7+H":=#@sIN=D4GObk5IDHWnc!C9U[BJl'[Z@p6io,"])UZ8+3Dlm+[8]WMEc+R5>S\><)&i4Waijo)q44XO'@=2&g)nr(3rfDs[FU1:$Dg.*!GjPHa)*d$5i=a&=\pe^!E.%OGY`bKPE<G%!hl3Ha>Vrs7jRieL_S%?io8GD.;?-Wk\U>8H*u(>0@^F#$>,JNgu[O%-k.M5#5#KE(76*u6<1H%Z&30lBlrj@0_c*;-%(4~>endstream
endobj
48 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 4025
/Dest [ 23 0 R /Fit ] /Parent 33 0 R /Prev 47 0 R /Title (Related docs)
>>
stream
Gau0G>Bedl&q801W2Df(`!G1Qig7V$a3=;oN&,Nufu"D"!u_P)Ob=bDYMX*N&\=.lnRQ+.9@_kKeQ#t)h%>1X+!LQs\HTL562t*g6%mnu"IYH^Fpm?`L[Q=<=Ai0ZFeJ4ZBS->`8@jc;@5Au`Hg;3@5tI8uS-$$6W,`GajOoGq34h'G!;8Lt#`/-k6s`i>4T6^LE,35BmM[Wkm^L+D?nR<TG[tBt":Q@\B=BV2E%Nd.G"XsH2B2ub_gLu_kL$\-I%U9AZbKrB)]SQRr$`Z!_J-ZaZ,'KILtk8UKc0u`j!@-s(=4m5jS;*$JBUTb>180PTS3QG>!O*IWikX;!g8uZHp:jS6!u2fMJP<Lf4+NfJn,bXC`")E@YV>oS%=kC`A-juOK,&:qVq:$-n,dJP-4B0!'![bF]i)nio4U>JqMQ5;%Qak#nejEXF<O%lmEQG`LM`0`$/Hb:57ccnOJa=p/.hKFDhbuckjYGhj-O0GN[&8@g.2BaYW(+Q,XCMQ/a`.5=+fUC,hK)-!oa;=jTpjq\0m`hCiQfJ'N4Q[=o<gCPP:/nu-DVZ.h.j8Wl\n<TKQO4`](tE1*W`KU**.LD@X^H)0WVk2mZ#Y0rH&=_(0P*\jbj\04mo#1S@]iI*JeZh^##q^-_;?D9d3:M)4/lCisr4ZlL-]7"(m&D64T5G5Urn>YpZ_&H*=ClqfR,l[^OZa\"bh;UjHU!W+]iZ?ek_$3949.jUB*S]Jeo3ZnSd=)phf,2KUd?#G3in5l)@pl/q(-6hF;%NR6IB+D4>N:`mFbq&u\5oq3M4Ir;MX2>Z:9:0+4j8XgD@G,C:=5%b'kL+c5W`C,,CXSWS.%FlVf!#nPaTuf<t-k:RCK1Zbg3.^:H.I9I5/iHrJbYs`,2j?h<4e#j=s9<jG1"r3Q-]dCLt+DM8u*mp'YrR84WNSm?'&K_mA9$!684(]njo^'ssC'csrHPTZPVU?8B:Qn^$)7\:LU#(lF3#:VV9BK^kAhQu/,unB$6ZY^t-8k7:njR9WL]>R`$Y>Q[/9%@D?[%JUVp#`9>l,?'snU^ADSNL#M\V[me=f.%o<.LIP]H8ULT,rl\g63)l<6%[4G.h9]U5SCP)'ZX[LMu22a_31m%HrrjB&SrO/qiu]FJm^rr"^Ug3j(j^ec9%B[O\!mmhJj`1=7!bH9kSC<oAQ#$7pG5'HKug@F'&&R_n<td"@F8N-jC[\8J'fdo7;5@hF`1GTr-dfkYrrJfYfFbecIM)BVc%d%O-i^$kafMlp[lk0m4-""lj7BgnUUES6k&^N2gY/DRt%YPeMMt>'5)eGVeEh(.OQK>JeN-jM.'F&a:0[-h,Hu\(>MYY&F\M?H!]j?%['Ap+D_^XL;,\"(c2.)gDGp'U1m.&/=1f=@C*]$4.'6<;+k9AmRG_Z_fZ2<jWP49$N`*'Pk<uKXX9InT;mY,Nc9nC:i"[RjQi&e;rEC<d'99gi[Zn4$in;iU.;6,X-W3lkMpbZA>O'Uc5gFhnuPi)4n#Q&L-"LU+5nm_\)n9j-6)C2gN=e(co?OQM^enL8hBW.IJp7[TE^49hfR,nugusO2Hk7!=Q%W[AnSsetdA*rG+:J[p+`4ZUcD%U(>RY,h.?7JM/Mml;qUZ*a[Z^@;>u_Q2Mo>)'M%jMK;B%^%IFB$kj_:WN!l5#dl(nFFEEi5$Np4MAadAZ0S'kfIO'?Y3d=8[=&9Q/]QiGJJY3Fq3br5M.Zgc?u5P)GJC$MmVM>1YD2GKKN!M<;\SG5MM2]pfNiEJ!>W;S!G?>X(R9+3Fbk4YBRod+H&/`V*^qcS'a$&tm$2EW\=&V;D2bA&atQ8$KcMLi()%%e,XMZ`5D4!hmm[h]!fi$,2_CDT_>c`;>h1HcXEIn8Og0NjL.T"D"D][mP\/H_#%Ho_%BV'S.7N:S4l=O3Ms5ICSpVJQ(ZYDOjmDj.LrDWlp9q5s"ONtt;T%:$Zp88&1q:6O3<S*i(Adq"ACUXC/>ogOs7toB3F%I-3uGM.n&bZ"`Oof&4W_n?VrPbhF?KQS\4(8jH'V0:lPqIQM'Ml5hL&a:<Z!Gk39\9/%!14[@e=Vh4o(7%"GR5$gEoR9#8'Uf:)LE'JSh)*Y!'\h![P@#fI@qIb%Pkh;Y_agJQ4/0MOlu>iY"#_E\\fALfHJ2-93:h==KGP_T0$?5N!I4A($$A8tNN=dfq?uEXhf.neMHTOKnnC#>Bn$ee/nSUrjR7UqMr>OP-=].TE%AaF]cdS61^tKLLZJ>gh"sbBcV,F]=J2`JT$qBH$dfrW>)9UOA351u,_A=$ED/'"TB`*9$XiLO7f^_oG!Wn1aGQAl(sZ'aHo>Pae`.^`uU]Ep+Z:Zgc%rH3*R4Z%7t51-b@:.4Sa`i"(iF3sG0GU1=D\0u"M-CN*']#Arr\((dNuii$hL\9O"C^#p*m*1g2c'\4="BNU58MV5$]^\*LW91c2\$-I#U6;-]Y=<QiF=*m>-8*@,O4)kAWE987'\>C+\dTt5;\\?ceEIo-]::qhX(O)>nL2hZCO:L,kj>2$LU@?5kYePnZ0".-g:u%+oB\lZ?JF3N*W[rs<LAB<E!)p*4pKBg:8GFa"?5*k.;Y]s1T<Df%JFEF*@'-mp4Er%<Kl4.oPW(;j17/gg(3:<!5U$Ba(_Y_m@sFSM^fVSoX5V]3PfiO>FEl:)h8='A(lh)GVl.MCiU,]@31E%c8$$%,<[#dQ]=_md.59CdS"_J.B"R*u(dE/2"0N_o`NWVidZQ3cDtmNYkB2?Q$;fg\hI\$N$L9J$d9_OI"0a'sn:A<a#]Hrm^o1^DK>24hJl9/&MhH<?/MP0N3Oh7'/7@6-I_dE%6i,-'bgD/(XKCkJMg:Nk7oJuX1c';:T3LhMIW3e@=,]p-/nb1EnZW>6KI4LrHG`asJ>^HRrm`*S]Dg@:E&rS5YWZLJ3I$h@HK+V%a*b_fD<V[KPFf#i2SGAChi\=@Dm>tJr%$2s0rU3lmQ`GZ?_7<gg1k'6f`23bHhEDkboUJUer+1Mnn_!Fc9!8pD7Atf?(geDVeKtU!oIV$!^]_kqV$b(lD[%h3uueu+<D#RmC5(E6BpTShOBOh*l>$qXKb$%VgV(TAOi6e!qD\TT]6Fm7rB*]cQP=^N@':o\?HpdmG')KZ%R4`%bLfIER\L`";jkH!6a]t5V"UW7iZ"578;rR@+uj;l\/g48]fpW./&suGK0/+N%6G;L8Uhce9e_sHX[B6ZcI1%L?H;o0YB7NMTd-d-S^4KjOU?q,_jniNurK:PiECeq7&gDlal>jUj9VIH@fHhWn#jK`hKs$[1:J1-3:(ua@-Dn*F:ltmn_g4dF?I33l2\$nUX2MgGjp\NaZ0QkgN/Qjq6\'if+^c8d%cL0YJHdc=+3&D38]pe"_%e,>s.(P[@'-K2Pa4ef3ru1sG!\4=u.d@L74ZFEKg<V3Grm<N>nX&F\#AY;Sb:0p9b&['>iFSRO%<&&tre9.F&cGGV%]_cd0AoO^i,jSK8;hBgaO4*=5006_$FAe.rRFYmH,ju^7C(ZAhn.2EC'0uF*>1ilQVG]_-SkaSL"I0:!X&j#KXLSP-tAT9CES)*o=`6oid%QeX,RHrI"Wr!X%euA82OqNi;o(cEhkbWO9br*8?(/.u@e!L&g3)4tB:''k5f]uc;__8<##>195%uErm-)I%;<`#eV70lt8/bkQ.U[eFC.VI8p!R[n-Y&k\C<m(7M&,HjD5(l;K2PFqU;3+Dr7\)^gUTWZG"\I\fV<455+A*WWkk1XLWf3Pi?GJoJ9Dm+Ta>?TY*cIgR:"<@A6(i!QdFEZHou+gkr,"QE)D?%K09TpsiU=6[_gBE7>?nHH7%P's^o3da?kBc5hIUK6cAn/;r$/B%il\/n]q\3M?2erZZX5c%)3;mYCof)`r&rJ!bfa(fD`1?8=+ho5^PlW\C04N"`Y6NoO<,k9N@KnS*p])NnQN#+_SUtk4<\]9r;L_T4'%*@W9[B;eGN7'U^0im]E+LZOIsJJD;s1Sd(?X<;WQXg5aKHO1_*.N@8Ns7V\NW2b!dKKn38O8DXI~>endstream
endobj
49 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3244
/Count 8 /Kids [ 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R ] /Type /Pages
>>
stream
Gb"/*Bli#g')h6*d@[k3`1fh"e<-`0*Ef[(hY8!^Y1-FM8ct9=KU<sn"Ct%&IMroC;$T\3*cGdl^'(0MF>qSF*^Eq;ig1D[G/jT\>rXjR^`q,GJ5n<Rd(P+=ma6NFX@0?t2b_tHTLLL1d&:?Y\5n)J_kR3cC3?I7%>.cY$>%D8Lr&$JOjU+r[<`#)J!3?%B3V.=IN<Go^NLj.?`Y^50?S-GAB%Y:Oi3?hfT'L[MDeFL1WuJb[;Z0SNhN/C(QIT@6E,ChJUrWKC#m)lk^Gr<B-pR:_*Ipa4A4Cni$9mC]eL&'`?HJTL/_'Rbf]Gi90M96fB$VjiR=075Ha7bf6[IJ?VB439oQ)T?(,0OBIR/]HG0\3FDokl48ZJ&W>)c+ko"TG]!ie/l9S)F%sk(:704(+d%C;,_b_6Ro@l2k7)P7CHLJ-ST$K"'_AUKsXJ3jDnR4g#(I?d@VHNB:M&Q&TG$^dLBXU+riEo8#;D6b_*?0$u=9K`(M+)eG`=LcDoHjqiiVP":)"JeRPMu[WBS$i%@#&+A6PJi/i._Z>P`KW1E@$K=4,`r#rGY0r/@+7[B/uf%In^qr5%6p%"o;a:nVT@3f4QoA?au0,e)W71M8rU+f=[2+s1t>27n0'!.ZO\s^NZ<1$jWBacu-^FQGn78i.FIcf?Y7e7CB]*gfus2M='l$l;fC=1p=[t[o.dRGm,P"PmT(e/$QBYJ`$&+bXa6!=IN5$d[40;cZrAYk4V<f"Vo(Vef>E6^/[+,2(K0ggBGg45n\a>Y!W"4cDnofdF8]R?fr*[#8o;k,7p'sKZmVfS2\X]Z71jR"8>r$LSjXX(XL+R1NkC>PmKH?`SNc:C<`@%VkU)#kueWSMk;7IY6NA.89beL5q"#1>E]<0m-.K?]$].c*$U$R/9>SXbd/:oB@UbgBME*(3"%pIdIcHC$-aO/(S3agVMlLr9.l4MiNd_</sQd87k@1AFPf)1[hd)8^$SGk-`O-'gK,3U\NTP?GqeAX,U+(uD^F<H/n#C>-S3[NT4,ZZ`H[@+$,<;R1JmqQP.c'"]O%_i[sI^T1LCLn*%0a'OD4%b:ZdDR0*4g3!E0j(Hog'd%n!AL1S+4eOl%8N5c*3/hAtX03a1Fn$"5*DE!=6S9F,ju(/P;Y)pjGF5XdMkTnlYh>M-@FOt4$e4,a2$^9>6&D`'U^giTgt1Db@BL0E+TH-gldC?AF00eAMfG4/kg?3h8#`:9kI7&q%jO$s,D0b'i4HNt5cTWV<hN=]./5$:LJmE*.bB&m>R>gCMHlbms_0^P/kJ5LAYUU&f!%4dX6r#aCe7DCRJ,(&NQh95m5a=9ln:i)Y]5)T*h;,g8#Wok2ZKh`Q7J'jak4kl0%R#mPgdd4)+8.D>M@[O[X2]](5;'t$W4k1>lC2FQemicBa8tI?8:@rAM:e`-W.t$b[e(T79<M,Y>0ft!aMq=V5>!7fO@6?YCZoIZ+_,q:F$HjD$brfYeB&41\Eq$RJHZ\&!Z(QfuWPbGXm]s23k!=;=<&sRu6i8&JF83=+Vp"RPEGF#iiXg>?Dp!,IY*d6Y,-S2[J9dY6@nXQ[YKQC6Hhl$JF,>'@GFlY"mZM>U0O)%u%2c`hXp=C.#3j>%>1*='B0qb;:S?B)`<_Lb:GTTp'-?oL"q_mE"3b[SqCiMb&1/r>Ye(cE>f^b0M(@E[3,C::oM.=.+LeB*Q0M+P<bXOJSHoqLSo(>]2>FZ^5]]318jdg7F';SmfX?.5^g[ZX$&`&K.C3*ee`!I%"$RoO(@I%EbAl^2fOfXsKVXGr,fN9l?iU_dH"oo*#m8J)QpZ_GT5*)CC><,@7ELe2D(*k47RMPE,k+&RWJ,MbI?&Mga8$$aImVt@!pVDIi]3bP!Q]@(e]IE<!43P.1CS1LOZT;#[=j>u*mecNI26iu&Q7V+KUVGuF`&*18;kP>5`d:)LHu29i1bLT&`jhmI(fgg@kJ],hdb%Aj4W')9lI3Y<^o<.5X<f1&eE?'ItfCNH*$ROfJ^L9g6lsWd)SVt<Qq>;5*'2l*/juR^ki;-)MT//EV9gcgP\2Z('hSll4umX1DcUt"DK;iZmC0KTX_i_5We1F!1g%-'S#3fC2\U0&b!])#c-rI!/Q\f-2K!Jp_-(G(bQ-Z:ON%li`k.\7a3:R:*=7PLd;Z)K?dM%2cj'nGHHecV8fon`:i8hdt'5+-X9\CH+EbW[s'e0B(Jb>^%P&>PC+5.3WuqZ"p2$_DKp&g[=pkC-lc)E!]O9^La<-DM_Ykg+jS5d))-%l#$cddgC[csm+RI#fD=<`pbM^%NWIc.rEdF/$a(J"pknhCSVXI//GUKa7t'b0.cPQKYChQjhN!`tn1kdOhO*5UE=qqn)";If3sMQej#',c5"rZ#4hL.Bg;iUVU@2amp#umE84.iXlr$5D)W<+B2_+Z>O-i[)<9[br5PVID+bT_c"0^='%J1m>^KqWP+J_;$Bh3fZGN6L0"JQ33!Mo`:<E/"1OA:3iF.@\"!-I4F>/Z]FZ,\/B3#HTVq6XJ6EZ1kg;r#o=GaRe2m-X<QRKXbc'QAu(-U?S+CETc5`l'j4_7jFH2Zu3(_8orePQ-W's#Ec:o`bXE[UG:f@j`ZI`&($&faW8/H@6r5&2eQ/`991pfhTi]H_p<iIK+WLCjjTKUKVBqU$'$M"$]n2p3D`g%QP*+bZ0%@?#8c9?9=h?=sY-Y=PJT05u4^9OsfiB!,)l+pcB(IAJIu1T?_d0i`%XBh_F8%$EA9&0D%=Z+4;fRhCc7\=YMqM9kV]u$TAa-7Gb"5gs,MDT_6aR+SEb"W6gn:Kp31@#[eDsbE77C)2#cf)+_makKN=,@=?n$&j?L/bF5R12So\J2,)L;lE2q8E[`%VO)5dgI:TXKB'ikF3[SaIKKBrV#`cH1;0TCP$o[1M3hQ8[VehW6qsS6VX'FIVN45@X#cYrkKX'a=7g8u5$H8?%A,A8[iR'EX^E4fK<ctF_;sHQdYN<ft8B#t)J1FGD\OiI(^JIM:-@im1?QTaH(OfVj;%u49aG3FNP38eC71V.4ru3,,]jW4f0CG<A9CVf?qJ:4WbP6e*pq<[d4i>LIl,lS7HmpCd#H.;8OXVT$mtGP\!FWetG'Un''"n1&s!<'n.Hi!/EDI\?$E5WKqk(<2,.'GFXI?$^C@jc(4W7"m^NG5-9L5Gm243d,8AXl=G#j]BZ%ZIs[(4nB/89ZiPcIgHOr,=)>cGQfihWuf`_%^R<jHne>IFGZnhE)>N.&LhhqYAM;#~>endstream
endobj
50 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3099
/Filter [ /ASCII85Decode /FlateDecode ] /Length 849
>>
stream
Gb"/)=d.i)&q7#kTr3b4T#UQ6l$]:Vl=Q?^U,ch/2`cO%[K')BbAGFFm'#<208qo-6VYK]C_0Ud8Bsn?VD>n[=[F<[V"h^47HeWDg@l5CA2IL68JP2])kk+7k3%_gcI>QS<$VnjL&t^C.QeK-nkZL(nR.N],?=%8Z34N<P(Eae<Zc75N\26IMTXQC+ddK7+Yi*d;c:Gj=>'D7.KtAoYp@:9UjR=S`-+YD_k4\lm.UF8!mCpjSZTe+)_J>fK<A5sd-OObqoCdFK?oR9XN5uGl8rU54CZ`!UJ)MHgSZ)Yhf!#Qm<^E&^3p-='9HV?"X$)lRQc,rrPM2u']=.@!j+#i_t;.3IaD<gAX=7-jVqA.2"HD[a@LaA:_10Nf]S-RRju*I<[7s,I>%62nFu+*@*45(8Z7$-I(9hGoFh%YLpi/0\S)=7jF5!rcYrA_EW:5;ru#^7cNj1p%)?.(+Np<deXTrpP<S`CU`rePFAiiQfI3J%(m;]mFaScn$?A2$Cf"4hkYMof2=W2<hl6bh03s/L&#D1LP8Ui._O0Ac_sDS)q)osFqd%eFrC?E%1h?^(>N?$R&W8^QGf@<[:)tOFiYKAOP-PN(M.`"P@F'[VCD#`t"J67[&<G^HcN>Z68S?a+68JaE3MS!*bJm2$OsI1W=\b2,a7i"S\^'d!It\pBj@:@uVEQ0,-O%XZSCT.Y'1>c"1^+1X*4M#;BQ?VfA"Id)kj?>Xl$//f$B1]]8_GpQ+De!AFEQgL\uJn)=4%@R^hd(_Ln&@Q+lm\^U/m/5MpZ:\aL4PrBMNfp0T3d\km#7)C`NF_$c)HEW+0$kA.+=L`!V3[Q;bW'kdSSUhtfuDQLEJS`TA$<1?"Y6Ap0W?em:VZY[u4amm&-LA_:PV$b3jnK2`goJ`F)@]o3r_DL%U8&8Pi\g=4Hm\SAF(]UNLA]r>VR-&KYYd=ueZV3!(u'sq'INkHck<P>Qt@\hZ>L$+)Wk&DF1#I0C%8Ypbm4:?g-UkW)^'Jo^DYmDGhg'OXlma+><-s0o9^m8(l.tB3oXI`#TDH>B-VWpp??"3>SkNFHE+*r@0MB;IOMMO.<:EI-`iA4'_D<Y3gX\Wo)=tI]VKs:^;fm<q"qKd/6L.2S7&DP#a^@@>H_iS^8(p>l'NBD/\X.d)Rl2DN;nX<,W[a09RM;faG5c7k]#^_Z@(GC8,]a+If+<3-$B%m;&h]DR8]1#1lI:l&aS:gP-E>TuhcpNfRf9kslWW.'?i?R`V/5gVMPE\[;7BKN7,aGC%]_k?oBQ6SunGrbr(kK;8!)R99!:I,n^m9ZT\B>'V58FI]/fOf?=;ZS#Ms<1!WaO::MBM.(j^]C+RG\)0KTkOo._!&kb)<;L+iq!>ZmUKDs'[$dm2C\@Aon/S;>&BNWCB(F@;.P+YS[-m?m5@mY5"qah:'ZAeOHRA'f]5.7n.ViTPG?C)Oao:Blku#>Gme!Z5D!TA;S!_+ZE@0&CQs@Q1]sa324ar@n:l'=lIG5[Eum>-Ok%@VW#-GY*QCSfrF+F2C8-854!i@Te>mAqh3$@^h@@R4BAedf9kM6#L(#%%Eq_Bjr\+oRJ$Q:<pZ&>b<mQ!q(\oT&9!&n]i.#d5`5C0%PbgYa&%$q/f2X^-0V?`BTDa/b6F1>cR@$6L=C;%Xo^,n?62&LH;Go[G9!RraQRti5i9BY8.1+P\B=n@B+I7LhRO;ib'"D"W4F0d!$"b2EE*eY6]k.h%okOZ#n?M(,c^t#=grSRYKAE"aC9^-<=;d-DCBZ\Bdis&4rbj'$Li=\/$h7l/!5Hee_W:LhIMX/G4?M9Yj5IhO?2aqY^b\#f#,>YY5L(>f1F[RmbYR:;%&EOLZBulgAua(_11R%.9dG%QcU5XeACWfL<X+6UL$o0%/'\bc=uAEO?Pn[7s^.6N,-XnNTb,2?8b;W_;3N6CNjb_kg&=S_;]o!)#S$n,fOE;Y.e-cZGtI"=cU^W:H>T<Te5u.'rfZ!C(<1p!e5j9,iJu=9:lNb!IAa;pB@8.m?RkuX:oa2^I)F$!*Fn/jF@/E5j4j@F5I^h:6Tc+/"gboT8(XHBM33*0'>$Z&g%@`o<hG1o/>m]mF(N\?"^RiKh>XBJWnU"V%&<P+<nmeYhKMK;rFH/#/!o6oH=2P10d.Y$Tf;SKLXqXpH8P;8G;m[C<^p)54M%QX?`_jf>d+Bg/o`]n)"VaB$31@>SY?p<;fMj$*^.sbFR,'<]64j6:9\"Glhe2T8'G$?&2k<4Yp70#gtGf!(3bnX8":b7er%$q.,/q%Fg*M.hlUXM=\Xp@t+3`h%#.(q"cJe?sS*>qhHF$O2$]PG<FqpT>MNP2XMoCh3W+rrr[snSqS"MG6?KIj`=']m)>.GJ-:J=n]Pqnb]fW>cQLoi/On'oqKAmgb_#AFmGXU2%i_+F.Yf&iJO^PF;1NM>BBg:\XLp*j<m?4204I'`9s__VP_?C^C_c!a'or`88'h*@%E1ga20d<a[7_S"AUL)U`GrJHiqsOHlo7SI1ot208\\:2pQ=d]aMMhCm6;#q#!RqHSkB-Bm4J$/+2MP!$'NU[Oe"n7I][5Ee%8Z7Fbq-U&#^KpY;l?FD$lF8l:IcWE^r2sYY0_8:M=";-e>T&<Pr"'V@1Bu7eOZ)INjomV,Hpf0qoLi`QE5:V-X[B+9m1ZiXH^=r=PuoBCk^q'W1>cnWV"75[q2t<BmY5qWn&7S1X/!:OhFU>mKH[c%I[Ya'k?RQ`#,iQ'E]t-6t5:\[IUmB"?^Ua8Pm=b>Yd")(uB*O8"iU^:&WGh[eG&5T'0n9@l%1Y9[le<F7#0+LFdJ'bI"3T93X^J7+>^*+nQUOOS&/40JL%&Rk`k<abS"'(cS.eqMJ\p0-Wcr7qZ(Wn4g(KV/L0L5TA^3m36BK-Z(arZ-^Yi`pJ&Bp7E&_o#m1)g4_5NS+.cI+TIWJ)45*QG\[AhGnTT-VoY<GEN?Mj)N8:O<3,tGAph95+'5m_REF&+DAhtCZfCoG[(4ggPH['E!,WJ%@%]<JV2R-_mO5fFSTYd4jA.VRpn_fk2C6X4Gu(WNMW]+EAnu"qMY>\4F6kuc;uHN&to#JOAC6CY<b<VfM<(TI$_R@PtPIVntDQQ!>g,##6~>endstream
Gat=*9on!^&A@Zck"&RjlZ)ib*9h@M;FT+g6p:2U&[T`>,]!`jnaC7K%J_E*,dP4CmJ#ag4<>"72%>KDFU[cmL\iG%ADhA+3T8mLi/9gFS)D=Z/r4TQje.h^eFC&bR;"unjp23Jj%67U+A+>K,@iG@_hi"^$N/PD@"?+_@*BNSapCLhVVm4`SL7j37Njksq](&@VBCb?>93#T&+V,C+A7>@%X+J[Ig,i^Akfq#qeXt4aV'H/,R]L$6tl=3aUSn1d:h&L[no/jJE^!u`j#@qJ,DM18`Ht=dpZT3_H^*nY:l!?nYC/\AF)G9l-dMe*+>3t_N7@L!We^Dc(3h#X^&d-V)>%kjO!<f'YVcXN?M?3H0#lLI[eq,jbRg2ij(7WMkFJXh\7m1S;raJ6g_Zuj]s:OaudRAUpnr##mCr:;3#)a'l4Dl`EYpfq!QcAFaFtD]#"1cs-%%Xp+h4\a\<\@Dh97e+8+Uhblb/1T,QKXr>t?#QFSSp"?1Kp<J0,sOQf\1%"l3@Zkr?E2o$i*1Fd##G3G6Eh6=,?4\in.'<R%+@(<%>)rSUST?`$4\oj(G.TALeF)V?PA>S1+(?NTkp4dY/3fFPgLPKiQLK8]('-0gf-*YS@QV?lB*J+O.i%\LZCk2W_ES!SP@/aH/B:431R+.:7aO:MD^7!mEKXa]q@B,Gj^\hgR(AN6*qW$jTZCb?''iVJ'5o[_K[]m4$$BZn\l;Oc.Zh6V4MH2./!V._!C-YaPO:?lE&A3SP'uFZ-S=6UXX:g(hSIWp(c6).ST<AuF&g`\(@X36UieU2n]5PBS*g%PjB.YH`UBnFXs"ZkCU0A=r;hTL2js?Dm".qZ%Oo~>endstream
endobj
51 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 400
/Filter [ /ASCII85Decode /FlateDecode ] /Length 814
>>
stream
GatVW?YdM4&-24oIYrIjDQkb<qJVGJW1+p@[[Af\6Ioc"@@EWa_/I(j[>a's+9r5.?&i:;"(]=8c9_Rp;g9.*i*i;9i;'MdF:8IuerFt@oE.%2"6;f`a):DAjP+meN4Q<$3-N0<eP<qu!*"+tj)--r-cRj-HVjo!)9Lc<QFp!LRUiQP@?,=1L$#7a9s[a1]ES-6oPSS<D4GZ8Z&>c+]Ok\F-A64F;f*hf@11>LC:c=(=`.6obIY'3de^Zlf-PP#$]JM9mB/.[+USgil^B,&T!7"QY0j7HL9D"A)_&>SohnfIQU:8S">-Ea"n85t``tb<U-Is+.m1Xol01Q*.[dR6K8`=mPGNro8Y2!?P?p^jYhnm"ZJC)1.pa#YMRnMKUCD)N(\n:>k8.2.WC[~>endstream
Gau1->u03/'Sc)R/'c[5-XgKIHZt0q5T?J6K=$Qn(rmq*P;omS@/k\rBrMq'/YGe"@OlWm5(;m?:+1@3dI&W%JE%&uc6uKnfa;CX!m&*kBf>fJU:ZgZ8>7C%!f5m(G^^RhHT4^3K__;P`(qU2:4U8+9*5OtG(ebKHPu*7<hflRBe\Z`%PiK38PgoKWj/k7Adm?'a?DZPDg8sm+*m>%pUB]-P&>u\;kI$+_',/GZ70XiRNCJIgVmk,N.d8gZ0SPR5P>5mD*\k6XK0e%*Y?0fJ@OQI/XuZ4+=nOJ/*=-<<WX(()?\.bhD$T"Mda>%S1hoGBP?sik,%->BeTC.>]aLd$hs_-k%42kdgO!=:Md[Ya@rX^,:p4EFD%prDZ?g\V9r-9f8J\,'0(U8l/`(PTG>dghSO@p#*,V"%9mNSWBkK5T?K:^@hddT!^0D'/[[";gSn>pJ&/uO/YU_#m=c/XK:usr$CAnoE`oN0%8:@M4V/fe."m<)P1R3gN$dN/%@V<\l8J5!jQ(A85=.7B9NBs)[1B3aeSYdRMcRuU*WuKa.ZcI2)q-9R%>M2F70uue-o-oL=HT"E+j2s+P9VcK?a4\N]a"NX/@A778nor!"MePW&%cZ/K>:-7Z_6:n!HKL_GjdBH`u]B?Y>,@%8s8!5,RZc(7MMH'0?>3XT+CJ#ppgV^ACO'Vq$H1bPNh1>7d>A*GK_[iWj5bH\6!tcAHT:');LMJ?>9SNi"jP6FU&>qXOI\k+l8#ABgZ4.Pf*U!E<OVB/a;-!PXN-uY:'7A*tt*9nLPq/V+J.^",;/kr1O4fhaVHNHi~>endstream
endobj
52 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9$AT&MD_`PtL;Egp*cQ&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:ps&&=X(PCeL]7-s8G,Z6b]&CVFJ!om<]_Oaf@33/!:]XjY5-C*Ut>641HTb(JKc.+9~>endstream
endobj
53 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`Sh(gXlj:fa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#B]'raq*pZH62`G1DsFgA+6hs6uHU'5'".RbXr2MH_7OtUjbJt$1U9V<CL~>endstream
endobj
54 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 4064
>>
stream
Gau0G>?BQM&q9"FeC,IOJn:p(%kh^W8NamB`[#VKg#F<Q[]Mi]*(bmh^OE5+\#_*D4X>R5V66ud\pRN6#f,Je&:HLH!9X_,>m_\c=KFcL3!g@%0O:4H3"Zcq8`g^]js<iHKd47+id3%[.g\&#;\Oa)-[[c;Y>:76ODuS:%#\u@;i=cKm"6f*>T#g5qjh;OeG9<$-d%OkIhDufp5A=@_=GhKQF\5%&u'tR=11c<#f(D&)ZpN#!n5nAWGgLF"/0Y#cN3B[Dsc!ri'+s903J.l,l:cSGf"/E0/Q5?F1`noo`V:PqVegd!f7R*V1F=ME3^n5o`U/l.Cu64&BLB=&CNfdE]d3a"p1A0FOIrk<]O%.`!-:"PDRr-JrkrLa.[ba!j`AA5FTOSP!mVH850Bpj(PbN[eY)[HZ&5bU7un08OX7"]Js4BU+??nl3a_0^o9*:-%T3uMm'*8/lLkg5SP%B+rV?#I`!Vf=$iXC!f8<N,[<0s"Qc8t9;58U;DrISK*9]F+39QHMC:lf9>qC+9V=o4Zs`T7WuOE+3*t_>G>.qf1S!0E7:,-[8Pn;!msSl&qk,cenT>U%l89gpI2S&NbP,f\N8:XB:SLs"X+Y-7lER<8Mp![e"aY4Q.BFp)k0p#BS"!?4=Cj!#=ENj<I;2l&aZqW+!'D(#`]*/)#*/l0%SZ>FqWS\l;4'it.u,q!T>TLOVV_b.$cB[7#XWHR#(^DL6hoqX/%4Z"D:7A46bB`sUhTG[OAOptn^*&77_$:Ai6jF6H&`n]i8MuoVMQG<#&DF.fkT`s*VF984to!A3u0jY=F!(5)t11`Kkufsg=82E*d+T.Rj,O?l@SFDmu:L^/%T#F_;#m19:`@+I4Wj9^4CUIHqK%\LcA[^:@>Y[Zr*\q+&+W2KPTSE#4OU>hqroDc1HpNef&CAbG&m@*UbZYpXriBputRa]5qWcHe6ER5u-"#NfH`;SRj>MDYs(thXE+A&\p,mMH7Z+ap;iB;.ME*>#8cJR])>:GPqKm$)\A8_GF523WFJY.-EJ41#"f0i0+9;d/[POS3Qe9cfkcNe^IoX.Lb663e2LR0RushJ09cT4gGC#LMT;>=5kfA_q@C4r3[#..?_IY=fquA$K3dm1'A/V*Mg3,RA*`9!ReKK+\<H]>kDZU#>]H\ikn^]MI6\IfIms*'ndM5/EjCc0YS#[f6QCs+,MAVgcJ7>/'AoKf6$^%)BZQG.!DGBq,Msddp:XB%.b7@'+B<=nM&ld5f4.]/HF,CI4M^*a"n0[6_cujd&'*c=U3/#1IPQO74lO4JsIl`B-1*Q&Ru&'T.teL*B568<i\5-aM)*Ck'QjEo:A13[5u%5q_I<B(.OQ7>JeO\oY6bV&a:0[-O``nYh/<i>N$@']S[djhAQIE[s-fkLO*7&3)Ces@Grdt:lr(c+=KcLY_\+C'+u"8=S:8(be3G*R8pqC@Te-"]OErL-DZcH/%cU#9#c`>4(0JJo5(nmB!Xo&Np3J0)QQM!%.:\iRD!,0CW"sQ&4pa8h69s'EbuCgQV"rbbJ-JKmh7fgg`])\_@]3TNQ2_14[>.#*&m]CU_l/k;jR>JC.>2,"=\4BGBVUBYtIf1!:h`TkJq/QnULdEe$J>Mja5FFgZVNanocOgDB>b_DYj,B-:.fZ'_n]6Tm:kEe+(EM'XgJe;)p&BRgGh\q]r)(dG*kE__CXQPaXZ"O3i^"/,,rUj7BD:5;<7d%=6PCMnR8ZiR7]3><?f.e7-+e+S;G9r&?Bi/bKRg'TBp1ZgO.gh[T:^nRC,\9/mBZ2H-=+V-%tt#5ca$U;/Spp/'],eJlLS*IJm&hCojUI<?H:XL7L?(se*@f*gu2D8s)RQ%rY0VeB(tU9VRqP!=j2,qk*P5qn0=h!g(R7&YX:iIXdZc@tulNuR6k>9bSFpNg<8@#JIA*i?alN"DskFdn$9k4XP`(8p6!nuj.<(:3+M3gn:-:$9^ac1q3OH?%HR5eQg%Z(2TUAL>jP\]`_/]iEHhp7um:qI3ZBmglbHkW=3]0.*HLqf?@g)6WG%jA+LlK,,3.RcWXQ]Qff>Q^@=.oO$&W[<6C:gXOe9=Nj]2%)T^Rb^*Dh\7"9'"SW;JES&CUmEObZF(Pt#-N%_I/Cbh14CN?KYk8TE$Oq+C)eL07d?e:>G]5:/cBWJHDfl[pPu=REfjgpd6;CY=9INZSWgr(1PW'L_.8q5'a)$PrkV]TbF9p'S@c'Mu#-^'9%,b(8[l@K@QnNt0F?0\AChVlr<Hg:Jn_0:`6jP/S>5cR#W,!9e4,`X9@F:hm(H%&uX10A=3i^8TE^fsUW%.]arW?N?]^:'q91.SW^$p;?/T%u8/P#U7rq6Q0COGj](d;P\_[NSLAEANG;RO+4/NiHXeh0,Nd4B^WoDF^HUI;pgU-&ne9$<F&)Xo,p>!"&$dkYJCg+g@/#TI_YXp7Dn'cVs/6$ZJ?D-XA:gtm7t1.N^h;%%0#.Pr^-a\'-GH%$]t-`q2g2%(gqqMc9&93>rWZ!Qfp;`[)M`o!a7g4o4oiMb@m?s%=`%T1dngF*H>TkMA?']J%hF4=WG*0dD>[iPDMI^r=#A0K$4BtMP?jr>WW&gUYfPV_h&+\PfN`0+R.%!',tmNZ'H4U_r(bG8c^Kt&1O]=TLm1*aT\K'6TZpgj0h9]&HYOX\]tR!T]E$RpuoX9h/P$#hS5I%O3n@<MiR15-O^Z)p!Nj."`mk0rYN`H4,39W%RYbAZFAfu81j]=j'5HI6%fIJ1YU744uU6GY+NEc:@da&`R&P<%k"UTGBA)aIHP7GnW))kgMLW2^D#IdCq&`6D[qhKH8-dI@3Q.1HCK?<r4C=D)#@Z0T55/eH@\H?m'[h:Vt/.$0)YZbcdPMsZjI&mt;1=f+3"Gf/7hDEF9TH/T@#G>t"K]3W4Spn'c2cX5;*:F^9qn`94Z#X1a._!QHe>s<o<]?AU@+1(:\`V"I>JKh<=YU_$4_Q-%E3?Bq[E/%Tc$#>`uYn&e2Q/fQT'q4!nTg\'n7J\J=27c6foOIpt#e8;X)]M?N(bk=,)nrbj?*LbD,2LDN1$(E6XC6"Y,<oXg`Z(JG0kgg*K=IAm.C*'*1PNnj7aUa%a1O0`8'>B`f-O`7Og!m'G+<Xn\[&K[!gT>M*@[<qD=1&VcTD@OB8@gRZRC80nW@K9$jPaT2gjAjpXEg^kpRRV""N>e@qGi\:&PXHlf^Sa<gZZ'C'<Xd:8>V56[1PKaKh"m_h1eHQCW4HnLobM/2ftqUp$BiI$Sb])`G(eds_`:ImRiDCDIVP52&eA"H;aD?F??Bn9XEjK<DlM\3t'r/g45rgQ"q\f1V?PbU\L/o<t6qk["$g#A4aWOOb6/"@4%te+_)`2fJPkp".4K)MJH(&B0F=LMl,h/j4r/eY#^?9UeP6:JDf\b*30r:18T8St*Z8O)C)jS*>8o=!KJSC@\QF,(hH><nK]OGYG:2F9l3P-J5TO`Q`Xi[=n.\ZDm:@p$[:s`F_Xs6'D$`>r8C6n'MilKCQ&-OpX`Hhc;R;=D,FAh98H@r$Y"g]2T_DViI2;;X[B5iqDB?WQj&(o:90\MfCIDMM6[Mc00[!eXRC#^:.Zdo^*jq?U9T@6>p5B9l$t"('i<nftHF,/1o<FYQH2r9tsQ(rbH3%Vqs2*,p(7kO+Y*lbOB\ACOT,4R$qcn2hMQ^SC*4b!oU,9eT\<S?_k4R/QH+ACg?6G>H/QL9hVlJ&]0gM#X2h%;<a`2.cme[K1;bD\C,N(=u#2+%X=)*LN(nP9j>&Zkcr:`Wj@J&e[7P;6-qVhPO!/"$bXJn#sn$p#acW=^dB)7K26I=Bp`2`?,]g5U9[=B5hBu759I[EO"BJCDq"O\FGXnJ9S\73Yhs=-rs`?%E61`1'onW7L+Dp0)],O"03bWdA*"$s8F![[o'''@8:!GB^Kp<pT,cTZemp`ueeCF?*be=1(G"$;)oX3>U$:5`CGEgd/1X:*_29g8T9eZ".u`j:l]mJ";QaW+_M"1:;<*fDUSkfm=?4Clgq[uE`LhKrW[%iU*QpZg`#19p_bVCf6)V#eEe9%R$'@6FoZ18B15nI[hubA,"$RMi?2~>endstream
endobj
55 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3214
>>
stream
Gb"/j>B?:T&qJm</,JLpP#rP*cm;n#B4XZ[nO\+29<Pq+8iqci1biH!0X@I'IsM[iJhDR_D`1TJgCc47m[<LHB<VCtrYY1'1Bfc,_qB_E#(caZ$qmq"rrp"4PQ.0j8^:L,dnR`7\umZS()Fee9lCTl2F0-g28.iHX_s?"AO&4=nZc3F!6]7p`#pq9)CC+G7dmTSooiq&69DJdEHN%-^QUuA41AOc*)WombcM[[b1DRI%b2LkT0POT51pR^#n;;+DEWHS-t+Z,LaAq!$C[uBj\iDK46V0Hrd.YuTD5amOI/G:l*Y$dm7Ad?;5WLKibBD!+%WNJBQ1SS\GBdqZpq!9Y'Vi8iA1pKLmpQ>YSVR7g`MA;P%R@s$Ck[K;0U1]r+r&<E[t43DllZ?5j[3:^;Y0g1o9!NQ[('4K/2>_q'LojJ((s]>IOpI<E?9c?0GSeDaDV.K:)He$n<-Op`a7"2ueL76)9M4n)#u7N\_:d]ZVC9g:-&Dc5A1eQ]d!7io?+m0)Vg%FhKN*1H?=.V7[rhdJWO1c+hnU8>C!TGAPJJa[5b&:FtS%3F;>r:n,Z>L$,"P@a+fKOd'cDB-c[_8lk_P4g\&b4tap,7aWHM7lV/NTThl.TO'=G74)15QLg>=[_A'51EY#O3s'O[LNl:ZK&\R(Jg['Y>\VS7d$`'g!S+j0E;kcFhbLN_WEZe3g$cOK-^kLjWNVnr]G04Jd#/S0p#l1k@ssV\/][9od*]$Ci*De%c?q2En'V>\iG/aEQR8Ap?;&)G1]d'r'(@hS5bGZSJ9QnS6CJ:%X%k<dP"u%Fd>_^Q[>(fY1XL!@?8l=T^,&-YBko!9YZHT.pdC%"fNme-!@mYLk'7LAbkVN4-eKTU?6pDiC-8,g;t7Xd<`M&Y3qC4q2KcF@ZY?O/7'k)>*NnX@HH*$)L?^'.$c>TrqfU).)[^fO8-hW%eXGV!\3P9-Wk"lb7#")\WAKq#=g^4ClLiYcP=6\hJkp)?s1%\rMoY=P-VnIp+o@`h=2O.iV0*4WN?gV^R%J6Z^3<n#0<&?cll$_&9[\DO=-qUS4nFcG0]c^k65ZD6,JX[._9AfQGY9,@L8N<0djb,Fr/JXZJQ.\A1jE(il__?oX%/*D>"IT(&Oust5oDfL>9^iSd4b;hU*90mI%)V*<3g-t+3m2k38qTqPTRP"`=DRjG[i$&Tod,'BLpNLh"BDe,B2=lc9)CgUja#6:_o/sYuXf+jGN:Y#,q<jdc.LelLf/E`PZ&]d,e,tLADT)2;cn;$OqW"L/+h`CY3Oib7#[5EBL;L"02Hs`^57#9EXJeh>p&#<6:<F$1^QeP?!Y2!S<hGN#!>L<PRAl`j^Kg70?"@bPGSrU?jG^j:s^$.Dfn'2^"oV<^\]b>jT).=,<<e1<t(973]7%nC`jjDd.k\-G<0ofqs=jL$VibgmMeFqZ2KK`&tE[+l$G=7_GUQLK5RSRth7qcJ7=(<lCQGH]CLX)XTr:#7O+R!,kLO4XXdaDkhI?Z1*T3/1ZD'85Fo?#2X0T(ZM]MY0.&s3P$gbF7h5]n6Nu%C-%/$k&Q@?oaN9&O$.&*l(8g^("^r`o[&YIM,IA=p#&tq7<8++R(--"%.;9i"*\)s)U-Z6g%s'.6K0fIT[c%m$]\(m`7.1K!lPU'$L.0o0Y^&/^HaVh@;OIJXkI)8ZPl4fP74;@ZbrRG%6eY1BE;YNl:oO[h^tn3m972KYh6sGKS9n+QT;#".Wa*<"s6F-"UD.*Wa4*/AM\?/Oqp*@9KXLg,C#TRXsF`QB[HG4(eXS[>_Obt_O[N%N0oj>%&7VeUCa'p#p)VQWD*3.T(9$uOZ1d<6f#KZF]V6+Jl+r:;:^dXkP7aNmA8\IK%jGl9PDAu6A-uckq7'bR%/4c8mI?Pf=o#F&O_5X87"JH<j^Kf66(R"eh('ihk9`>*Y?=22A)P(_AD@f=<&peTHMfh56YCZbInN!d-H(63Kln-nnMuFI%3fsZ27AP7`cOmp..=fgYUR"q\$`%qc+O;MQ&R^L=Ya'Ol;U]hjiYkVp'jPc<uB8.9q$?]R6A3_a6UKW:L&OVkt.mM?IZYs3)]oMf%EC_G^FGDZrY0T-32j'LT]E'p-0"m4ZVkVV0Ja-8G7HUkpsk,f<K+X6lCWX6s9jZLpY+/RVt5G15cn'W2U>.h$^6r!9cU2oA\^:2RZS.P?YSfIsT<DNYn>=FEE*,Ej]8PXXPm7MBa(q2[)k.pJ62Lo?TH(3;0L2Zmr*f5BTk_62T&\5D^4ile<F2ZmsIqkM)2#Zm$/^@Lsr+Rt`;P-6'W<6'G16Vb\e3,#D[m1dG[?H!kk2J0I,*9=gE,Q=7EVnf+']d>#(c.&6;me%.S4tb.tI<";N:L+YY%JUf1QQhZV(/0=0j$8)9&D`A9Wr-Z&Kb&rP1>)'FG6`cPTH=dFoqLr.8:s4)((%q9XUWH0#\V3[)#h-H;T/e?SU5r(f_mi4FCKT#7[<)gisS0nN4=Z5[$n;Jgm8[$\YJ<V\Blk\cfZ;_$Tt^Ti"ACOJ3&Bc+Kc3o`&+.dTl'1h#WmBAj<3e?oBh:'IkoIuIG;q%"SoqXc/sI'd-DTagA@SaW8#K(-)mRc6Un!Da`at>5H%h/ebSNRX8TTUM5k;O?0+*E@$#b+Ds55dqW>Aea&[A#?s1Nd@-)<c=cH]]s*QRVN$;$Y#W+Q9iZD]pAtD*=o$s?b"r1V!d.Q6Mk+XN.on4^Bb:=[?Y?g!;kC2#im)!AjhiiVl!m>$Q.4<n"@TT$P*T%rp$(C,<cH+q#!.'941f:G,j.bDebK*66JiPuZ=e/`/17s08X&f,3K,>.g$MTd_\a-(tY/JR!&P_;^cbjKZp[A^<%V=D'-c-m^&,)l*[])(9RKZpkYBlgqWhohOIlJK4@Sa>OIdlLfLkoSaJiJX6H=Ys?Z&j@@`H<$;9=OU^kK\ugSZ2.L3fifXpG(IE3:7jH$rkMek"G+oLSTt-&KoUYcj2l*E]HWEo3%)\>7N^WrN,%'kXtcb61UJ]RWi)0)_IrFp!%W'HW`l/Mg=ji;6TT&Ej5`3iWEK@E/i2PUA_ObrK^m7AA!,=NRN8+fZ,J&pg8U#CqN7h`S"A`d5kABP/6),PMI4K/[9r+'jn)0cr[m7gu.#NMK]Z'em[<:_=kmoASnj:BPgS[eTbN":</bh[8saF"'oI2HNb5U:*5csk[I8Q[TV4@#/Vjp2;9f'n`F5UL'ZSe:aV_1+5sYRVu~>endstream
endobj
56 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3164
>>
stream
Gb"/)>BAfF%Xua-d*l$-Ahh"=jua5BB%TH`#0?5(;c?+BFp$S<gLI^63PU$n^1#7)2T]k(_^T1!G./d*Um=3D/V/^".K4+#!3Tq\^6([D@C?;1'i^Q[?nf4fE?V/7oo:.EOp6XnifC7"O2[ml'<EfkS>:6me[g>`aZ?dS"Tf%SNu(,a(QFF^jmVgbS9s1f*P-Li^_AL=%&]o,)mSVtT&9ssSOD,i'2kt5Ht'E.d,iS\NlV8gO$#bi=u66"$Ua]<q=Qt0-pelU7_1"*h`lL=fcMpFaOu!Zc^(E/aFZ&0kA[$K?f**/%<3WPS7&#jg7fbX]3bNp&.h=IYr=SYPq7aekUi.O$d"e'o8$!$N&"i"o%J.6/gMe"^<r,&b<'5o5m^"c!#hZ.l,/i8f.0onTTph5SUR!a%/P%Zlk1OF]YZ/f,(F:"N1S@3cTS8qX[S^/rL,?Q&5_Zml!Nr[*u@762H3D&o(V4gKqQ8']E:RS,l>c9.Gi-i"2CI8jMU!FI5/Kr1ChaOX24l9b6Dpp'aF.W)3ErtU(5Hs^ISZ[/*TgZ"MLRe.N"Tt(kuR?'crs>)M4JS-sIU4J]a6Grgc#RB@ko@QRj*`[L9(>j^cBmPVQj_X"_/h-MK;oQeu@KhgHalJgh'Ufmk/hN1/Npcs7]qa/Put;Hs9`/3L@qON%lb\/'fJPM/ehp_h_Q])9ut?)/Yaos0/n0E`mR'IClSGY(\o`76-VM3?rp\u6pq?9J$:\Fo=h.)`<g:[-&"J[1rPFUJ$LYp1cf!eM%TEY&XRm],#T>pl?g%d=_-6Ghqj7Ccou6.f!al0?\7FOa,4>t$8;6*o*?`'NePFQ8$&T1Fc9XkY'9_q:'u9oV!WSFDaT(54'_olI_j2U2]?"`SemSo'l@A965+W#5r9=3_DMi0V&!htd^aQLE2K`TF-#;ridgfBG3<\buMZ9$?ib^5\8ZP^8Oa09G`[pMt@h#.Djpp*-d_X5stK6*->cBjEr7kGlW>nnsmNoVS)9QD?-?6lXa/?\LVIX.]84YcSWTbj'=.(F')PcTE<!1ll.YO444QP=k:YGS20n8.E&F-t`=VD,G3_CF>Jn]6t1rUL6YeMHaO%/J6=YZ$IbA]3/DQS#SPEG)=0?StiW^]^PNM.f.*H-mI6`Fn40&%\H>hDG/;RDgd5de7(H#.?"uAcd">.lKd,8CG0.99.cY*q8NZ3KHXPE@U?1I)L:8B<^Ur-e,;#VO;4<_@\*.u,?7<eJ<%0.&b^ac'/)R9s->cF+;+48C`=MWb<93X\&]tun*DH^F3oq2p7l/SHDlu()RJO:m[G[MBt%W8$8p"hi[:_![M'/f;+3fLWVX`[T*1#eLVtbd7%f5G]ZLEiAJPL>.N:Wh=W"rTC]O!8@0!M%6;H8ajL"OD[;;s8$T>+3$Bj7GNn,ABNhk)08'RZ*DL&@K(KXO-_6k?=P<n[6Fs(V&)MO<NlU"*=p#?Z6C-J>"Bf$3R)u<mV6MN"4pcR#HN]V_k)l]92i)ihr):]IQY+8F(BQA6ln[E])l5([kSLh$E1?=1i!C@\<Iq(X923-l2f4.L"(1!*E@C=J$HRB8Ec_f[55H^<Y3SCFnf!q4Gm:"X;j^MNV;YDon(PL30L:XHuZ`c+$0aX4AS9Ji)r^I]f=oY\hd8!iOfLNfK+#Ed"nTHkF48!=^Uj/85!MaIZ#aIp=@\/OLK<?,Fk#`_2CgbBS"C]k?oN^SP9jkrmal>jg*`U8E*C_L^1AVJ#d'mrodm@ICYPtCoE%9U>@%h<@!Y@=2:#i6g#_jNF7in\+jV&Qpq+4Th[^0l=_s`jn?4i.u^T&'J=PZg?T$pO65CD*V\/!rnlrI_>\o0tHSZ;D'?M>dfjKV'Yq+4o=`.HKNYP\8;+1!!p?FT<_LJsb>D<(&tq\Za!fPX7*K!5uOB,(7W5>9bW&:[@p_!t+X*,!n4"uba829'%5M!jV1D?/qm?%&O#\A>[!N*>-kQghXOcjK3#`a=)aRmCud0H&)Q-A0-a#>J*DL@"3K252U1^6[m%*;Go]g+I2tCG0CmDGtVdGoufsi[+srTH!?VJeu5/*P=$2*H!bl#]ZE^C]B9G,t22R`fU5bY5t>L!mH'o,W\ZJ-*G%)UA-S;@0dguU?Q\^_j(!CLn1^YWQj2EpGNE6V,j/;2A[icH%o'l#F@=sEe9+!'bR>Y-E"XNCCGKf*RVn-AB=N\g)Ji#`2-cSrc;Ehi.tpA?_u=iQfSmA[*&f0\iXc1m^A*t'`S*lE,2nPUVKkA2*obgoUcg0m4<IB,?rh4o*GkWCZYr5V0jq,/`L19WpZ:sRP%-d3$Jd1I]_VAA/ODe.NTo]#hN/p;R]JiFcMt>Xr6iKcg>m(/B*ql_$a;?8%sID@ds0Y(jb3c&,R?l@'F?8!Ud[\;u9o5^:GXF&$?,Hs2sMjPZmY^,lnGXJ*iTag7.Q`M]Y6jVd%A,e`tnhP5i[)H"[_,Fh6K"N)_l[)%Bin0T%&j".lKaaeA:2bZ`C$<]l<5Cc'BHD]f@#2;$(:>?<p>S/jc_K/JIG9PX'_e@.&u^W=IAF#G:==39cUEQF0('S!BkL)crY<ZTs`NY<WFX7c/^G)/'G=VU@1&pV@K&0J%U2fhMU5*86RM57<F<m<a#Y?GYl-$BPYn>n$``Q9KD?'&l!:EiYt]@ue,?.(e0KZ41B@P,bZCKO5-'u;lJW.)8":F)+5</Q,Q7MLKU=BRPneB<:L,\ZXE]]%kZ59eYKCjt4J@JYEj5C#?p,e!#<Pf!j1^WnLMg&,H(s'*4c<C$<99\?"bm"bC[H(%B5=EtNg6L&eZf+saWVSaF'I!nq/H*U[/j*@?lmUjnjf2ck[Rm@u,#kNGinQ%MVY9_3n<M(Rq+LFdJ'i<e?+-CD(@PB,V%PtP&LsfKj40JL%&Rk_@9/QMF./X5*H5IQ%DX5dk_7;7*M5qmP:<jIV6dV>n_g0!US`N1DUEkJ,rZ.-ei`'nsBp8PpmHn<0+8/0.NEH*8I+TCu?f"h_nZ&HgeAHP<EcOD5od73\4<Ct*&(<m-q2MP8`<W`;6hsc_&Hi^7^/[8hj2'OkiRh24J:q]sG:Tc%J-@i6;%D3XKi,I#<mgk^la80"">gX=9BAb#P<^g$8MYB9IrF(\0ae-_BcjK#MP_5BeA3=tec\^13jDYN#+D9m_Zqgn"F3m2o`~>endstream
endobj
57 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 512
>>
stream
GatVZ@8#W7(^KR)q\7@,fc=C8C>6[nnQ*t%ENY9'5mX`T>IA<_dd>\r^K@u)W@nH#cp42`kq@Ml#1!b6J+FT:P/Grf#4)GA!Z[j5GQKTA]oMT"B+UenL0ak5;A>^0"R_d1H[XQu8$9aYX6\c?&:!%*UjYo)D'=K#""".'n#"2p9]Ff;G)tni*djTq7-?5G^uN#-MGpaM>aEVIAt5DYU"W+WiMk7TIfOs&rq"AmGN1b,Tu]=@pH)s>[7K?4=j#cH&EZI9's*rp('cfCEbnL#;Kg#sR+PN7]9P-P/<+IIS'm2&gurX;oue*XkBk_,'[W0W0S\Z@XF/?T]ZB\M>`1Sd@Ze4b>,,;=AS$R$f<mHi6)pD]KrS]_J5N`B'Z`C<efI'cU(;6m/)8#Hl2F"2.U.`)*D<:-?HehYi[gSED?^t__!>0)A[_inXCRNq=u@>EHeS8UI:?QVL]eQY#X6T'0b0EU'^_LA#C:Vi&>k,4+/0<Vg>?@5i=+q"s+/Q^!<hNM~>endstream
endobj
xref
0 52
0 58
0000000000 65535 f
0000000061 00000 n
0000000146 00000 n
@@ -316,47 +367,53 @@ xref
0000002433 00000 n
0000002582 00000 n
0000002698 00000 n
0000003018 00000 n
0000003096 00000 n
0000003202 00000 n
0000003286 00000 n
0000002776 00000 n
0000002882 00000 n
0000002966 00000 n
0000003172 00000 n
0000003492 00000 n
0000003698 00000 n
0000003904 00000 n
0000004110 00000 n
0000004197 00000 n
0000004512 00000 n
0000004587 00000 n
0000004724 00000 n
0000004825 00000 n
0000004930 00000 n
0000005058 00000 n
0000005175 00000 n
0000005289 00000 n
0000005444 00000 n
0000005569 00000 n
0000005686 00000 n
0000005813 00000 n
0000005929 00000 n
0000006046 00000 n
0000006161 00000 n
0000006277 00000 n
0000006371 00000 n
0000006460 00000 n
0000007422 00000 n
0000011539 00000 n
0000014875 00000 n
0000018066 00000 n
0000004316 00000 n
0000004522 00000 n
0000004728 00000 n
0000004815 00000 n
0000005130 00000 n
0000005205 00000 n
0000005342 00000 n
0000005443 00000 n
0000005548 00000 n
0000005676 00000 n
0000005793 00000 n
0000005907 00000 n
0000006062 00000 n
0000006187 00000 n
0000006304 00000 n
0000006431 00000 n
0000006547 00000 n
0000006664 00000 n
0000006779 00000 n
0000006895 00000 n
0000006989 00000 n
0000007099 00000 n
0000008039 00000 n
0000008944 00000 n
0000009174 00000 n
0000009402 00000 n
0000013558 00000 n
0000016864 00000 n
0000020120 00000 n
trailer
<<
/ID
[<800c79e27ed019b09a790354c7c3deb4><800c79e27ed019b09a790354c7c3deb4>]
[<613132d6179351c563a5f385a1c086cc><613132d6179351c563a5f385a1c086cc>]
% ReportLab generated PDF document -- digest (opensource)
/Info 29 0 R
/Root 28 0 R
/Size 52
/Info 32 0 R
/Root 31 0 R
/Size 58
>>
startxref
18557
20723
%%EOF

View File

@@ -1,12 +1,31 @@
# Tickets, Gitea, and alpha smoke delegation
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-26 |
| Last modification date | 2026-05-26 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
---
---
---
---
---

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 5 0 R /F4 12 0 R /F5 14 0 R
/F1 2 0 R /F2 3 0 R /F3 5 0 R /F4 12 0 R /F5 13 0 R
>>
endobj
2 0 obj
@@ -17,7 +17,7 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 716.2874 172.853 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 762.0394 172.853 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
@@ -27,32 +27,32 @@ endobj
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 705.2874 199.845 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 751.0394 199.845 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 45.68504 694.2874 167.949 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 740.0394 167.949 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 59.68504 683.8499 130.545 693.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 59.68504 729.6019 130.545 739.6019 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 15 0 R /Fit ] /Rect [ 59.68504 673.8499 224.3325 683.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 59.68504 719.6019 224.3325 729.6019 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 663.2874 192.861 674.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 709.0394 192.861 720.0394 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 16 0 R /Fit ] /Rect [ 45.68504 652.2874 154.637 663.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 14 0 R /Fit ] /Rect [ 45.68504 698.0394 154.637 709.0394 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
@@ -62,22 +62,12 @@ endobj
endobj
13 0 obj
<<
/Annots [ 4 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 27 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
14 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
15 0 obj
<<
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 27 0 R /Resources <<
/Contents 31 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 30 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -85,9 +75,19 @@ endobj
/Type /Page
>>
endobj
15 0 obj
<<
/Annots [ 4 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Contents 32 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 30 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
16 0 obj
<<
/Contents 30 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 27 0 R /Resources <<
/Contents 33 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 30 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -97,84 +97,135 @@ endobj
endobj
17 0 obj
<<
/Outlines 19 0 R /PageMode /UseNone /Pages 27 0 R /Type /Catalog
/Contents 34 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 30 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
18 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190938+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190938+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Tickets, Gitea, and alpha smoke delegation) /Trapped /False
/Contents 35 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 30 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
19 0 obj
<<
/Count 8 /First 20 0 R /Last 26 0 R /Type /Outlines
/Contents 36 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 30 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
20 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 21 0 R /Parent 19 0 R /Title (Gitea \(/app/androidcast_project/git/\))
/Outlines 22 0 R /PageMode /UseNone /Pages 30 0 R /Type /Catalog
>>
endobj
21 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 22 0 R /Parent 19 0 R /Prev 20 0 R /Title (\376\377\000A\000l\000p\000h\000a\000 \000s\000m\000o\000k\000e\000 \000t\000i\000c\000k\000e\000t\000s\000 \000\(\000t\000y\000p\000i\000c\000a\000l\000 \000D\000B\000 \000i\000d\000 !\222\000 \000b\000l\000o\000c\000k\000\))
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Tickets, Gitea, and alpha smoke delegation) /Trapped /False
>>
endobj
22 0 obj
<<
/Count 2 /Dest [ 15 0 R /Fit ] /First 23 0 R /Last 24 0 R /Next 25 0 R /Parent 19 0 R
/Prev 21 0 R /Title (Console features \(implementation\))
/Count 8 /First 23 0 R /Last 29 0 R /Type /Outlines
>>
endobj
23 0 obj
<<
/Dest [ 15 0 R /Fit ] /Next 24 0 R /Parent 22 0 R /Title (Attachments \(deploy\))
/Dest [ 14 0 R /Fit ] /Next 24 0 R /Parent 22 0 R /Title (Gitea \(/app/androidcast_project/git/\))
>>
endobj
24 0 obj
<<
/Dest [ 15 0 R /Fit ] /Parent 22 0 R /Prev 23 0 R /Title (Google Workspace \204 phase 2 \(not implemented\))
/Dest [ 14 0 R /Fit ] /Next 25 0 R /Parent 22 0 R /Prev 23 0 R /Title (\376\377\000A\000l\000p\000h\000a\000 \000s\000m\000o\000k\000e\000 \000t\000i\000c\000k\000e\000t\000s\000 \000\(\000t\000y\000p\000i\000c\000a\000l\000 \000D\000B\000 \000i\000d\000 !\222\000 \000b\000l\000o\000c\000k\000\))
>>
endobj
25 0 obj
<<
/Dest [ 16 0 R /Fit ] /Next 26 0 R /Parent 19 0 R /Prev 22 0 R /Title (Agent / engineering queue \(from your list\))
/Count 2 /Dest [ 14 0 R /Fit ] /First 26 0 R /Last 27 0 R /Next 28 0 R /Parent 22 0 R
/Prev 24 0 R /Title (Console features \(implementation\))
>>
endobj
26 0 obj
<<
/Dest [ 16 0 R /Fit ] /Parent 19 0 R /Prev 25 0 R /Title (Open tasks dependency graph)
/Dest [ 14 0 R /Fit ] /Next 27 0 R /Parent 25 0 R /Title (Attachments \(deploy\))
>>
endobj
27 0 obj
<<
/Count 3 /Kids [ 13 0 R 15 0 R 16 0 R ] /Type /Pages
/Dest [ 14 0 R /Fit ] /Parent 25 0 R /Prev 26 0 R /Title (Google Workspace \204 phase 2 \(not implemented\))
>>
endobj
28 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 744
/Dest [ 14 0 R /Fit ] /Next 29 0 R /Parent 22 0 R /Prev 25 0 R /Title (Agent / engineering queue \(from your list\))
>>
stream
Gatn#?#Q2d'Sc)J/'_]eFTrcnA9[uE26Bfh'koUh.Mj)a#&J$9S+?#l+Doh%fgMm^&g2Sgo:5Q&:^D'gr`M&XV`=lY$C!h?#9&dCngh5k7unnkA/THOA3>eo9iDZoP8MX)2@2/TnH_ZB8]!:dP&`I;.G/BgGLEU_'_2H60VH("_-#l.OqF:i1r9.'KQ4/PV=a0m/sVd_(kaM-eEoSQCWo[C.;N&mYDbYsquQ@anG2G\#lFeV53RY4rW:>33_:ad^3?7q_Dg,Sj%!Opm`-'$Vq*\dIm*[POl,$o]KS@UIW@fEnepaX*'>Mu97)]t"qfZ0$s/dM>C"n[]]38Pf+Q:I$DY;ah@0J'jM0T%oINqlb=$^GI266L%Rf%UQqM3o=U=3Z>&,0iiIabu@!4AW.?"bUFRlH%r2/82d'$YRL`4Q76']e!"k2\[_&;:Te&L,]iP%4hE_%%hKH2P$1S^MWeBXo[.kA4K<7BF(_'Jaa15I<)57`a)]kRnk2f5hIepC7F3eWNkP\k9gK/h;sEa0M]Tf0ZE?+O&N&n[*!J9c>O(m8Un@B5\F#9bE9l,rr>=J8e%5jCsU.BV#54Kd`P0urm'XK9[h6EQb""NJ>HJR,`_K,8FiE7!Tg.<VnMb)1?sJ0U(G68SJa\X#W<Thbk7(r5[e!5:ma$Me8Z%,POLiI&I"5TM`%o*7nhP_P\!.K!6;O0fDp6?mIM[P\iD!=Q_YS,bkl$Y(41M&8^3!W56mp]~>endstream
endobj
29 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3992
/Dest [ 14 0 R /Fit ] /Parent 22 0 R /Prev 28 0 R /Title (Open tasks dependency graph)
>>
stream
Gb!#_>BAQ/'n5n\^eCX^g9+/4i'imDgQ#daflWG1)`uk>GfBiLOG&uF(_Veol*S4=#N/#b`N,0hF>CH`"n:I*chRR^5W\g!eGm3>6Efh(oZBE'7X#5N=IOs3hP&PF7ph:8I&:IjNbdqrR`ui^ldcL$48Q()JuP.oh<:6!CURq]m1\9C2UcfX@tLPfNmk7dM`'<Im.Lao?;C99"QCAs7LTCTXV&QN"k,!'Sel-@8+@3dhCq5%\tAnNmQSMk)pRI=A4iS08jYc)bkFXP*ho$OVOj/-R@*,X$Y#=s+4N5nJ!!A&XbB3m"uS9DLc&E-B^#$YSMHbJbN)Co(bcJKqY1OH/"Qr/MQ'/,&7sYsEqfPRLd7,VM?KcL:Lc4NT'XG\4kB#u[@@>\9H,)m[O^&b\8IO..SWbmKUob]+>;XrSOR>!64:Y^"Dq0jTLc.4MTCsTJ.k.-*P_oiqS=X>1fTo$PPmhR-$<PC$!O6`5V2PZeBbWud`70"eM3fPEeqGOX3Fkn3hNt][X>62Lm$5dZtH*bo]KkHa3/pMSc"_#n4cI6m*EFY+1pPfNVLf'"sj%6EZe!pXEqOWqTQ'W/dsLM/7`m=n.<9Z]cY%fVQT63hE8T3*7sQMB!_!hI'qCl5@.^S4if>U)'*ChDVf!8U?7TN?!b91J,97+gYlh]U:/H]>Joe^Xgr)uX4MIredN?I=no(D4C$A`rb(YfpD?!`\T:r($hX5lndn)6;i6ofO+jKa_ha[n0o6$oV7=Z"VJ#d$'YL(JO.R''(3rql$'JPtAK"Jh/U.]/:.,]\i,LD4N=5DR<"<5uO=b,i-S:\S$.L(r,_ND$@i9,dTg+434[$Q[lhN@R94b;W-%^k,G%u>V2.i<9BEiXL+pb",HaO#lYPculEG$]\Ld$G+OKpE:XtM5f)GS,"K"4.)86HHh%"O4FSh=+;,u38Z:'B`I[#3U"K0JJ3I9D3WXHBudhNQIA.C+)$Y\)Gnffcd7>oq1_>k:-)h_XmAo-[B5`U3%9P\PLnnkECMS!\uS1Lrf/"u]MYomk"D0G=m!,>aT%TQ&gnd^18o<O<8[)UgP[ZEfBg)*D]#,V319Yr0J&#.WpQRCBVX[VM3C7^e!56*qga=bF@X0^hRk<VI0s&i#FMkjfHtr`8OTjc!;ADS/&_*Wtgn%;?ODRBAQpN;)Ld\"QJWLrZe)>f>R522;cZW'=1o#:8706sJjoRWoVFOe+\?-irLf.>"pBb2`o%(5ho7kpiNiRt[AdNJ]!MmUFX'O_2lZIHD_jB&gF5aSHXof;q!r@'3o?46QfV'38E:"_c&.`>m@+bQ5t#F#6>46M8[a/]2=LCPVI#2_ElRGW,#eCX3JufX,u_JT9l$$39(uro606#@;2WS_\V>X"+Nujh]mIAIrtYYlTF?K)#p[ig#Ib<m'(5R\MqL0n6[,CYDD6Zt>c'c`KP_?daHWM-rHIOfsq0@F\cpg^Tg[<K6:D`W5suVg<4j:qknqVUTmRQ"l]Jk3[r'lupeLY@lTR,tgc`(J9&<8*C$<=%5,[<VUP3lN!+`r%s>"0ijVsMG@#8'i*$jL&+hh;QfK-,[%Nr!.!3:X'n-+DW@^f>Q&`7>GKI:&*?gIA@"]ueeA.@M3;@6k8QrVa`4;g"_dMqTC@8ld%oQL"_2'0pZ_6\8jeY4,CW3U^r4D6>4[hAVn[AJb?qU4*kM1ZXS\8,AQ>0i'LYOJ@:%P&CPVWQ.BP\'kdfMfgk+fTYr:@.V`s,Yin6,+5aKS0PfV.Chg>Y7,cu9>IXr[Yd==M!3CTR.&7EQ!FKqKE2K=K4kFL/W6_h$1GbX@r^J2^HrP/S@5^?Ao&426ZBgZ0?Y^nqZ*CA?cM>n]A<=38!L@BcjXoS*K<Eeu*Re<JOhODUO9YaAS[X3+1POV&eBDj_CB;:[KXl*&T%TE]AE:ea.04$oemTGN!c.u12L?Y-J!s7<t[SrNH5nDmP79-JC^OVc"`FHJY?2cF8^G<"4l/]?hl)jif&H"m\H5@iP6AZg*NL>WBB+Ajc<dOh3/him\q7PSgE)ReD9U-\K'FFm:O?Dp.b%CNH&6TW(+EGNGGUlE?8^O*`K1LRAO_!4!BA8f4-@.mZP;)BW$^JHsnBMs[8/--+-3Ms24??JK5g](PSq>N,[L=VW3i[-O+FA"$a5cKnN#2ka<\-O#pDV$M48ejK89==FZ40e5r:oC[Yl1Fe`9T#!PE,aU<C;(T5i;B@Y=u#kBd"`6F`ds2b9;D\eKK/gL&`f,7c:6_R-eiTgTCW<\2"%[`;j<%aoFO="*eGf>c[sBADS_'.Nc)C@6Dm68WK,JgMt]J1-^l\j[1d%>MH$6A^!">ceFL//`"t>q1R/-2A^D'3F3rm-]iT#Vmk*2QjBYGJ/45;P'U`DDGfMoXg3(:Kr5C6F1-0\"8U[^<m@%4:)LO"QA5oQ5k7UB&qWen*<fD3M2L#IXAJ7+iL+"T^2F6Jf6d6dgdCdFSGrI(qiLb$Z[^"'3sX,dH!PN=2i$26G-WP3?Y),:!)uFO^'/.@lZp2?HM?9R1VT(L4jWN$lOe7=A5U:(/GBL#\KP4[J(8E*b4kRBAt_<l>fK25qbC\PQ8A4",cC<\)b;^p$hjK-CP-?0oR%_2eMF!'Qo/_3F`qBcfeUhkJGP+eDUjI:&^kDaa(16L2N)GQ4@If.&>]\mTf)=?/-9JmRZE4pD>3^uHT(rI2WWh<P,#o83R;WT"LU^CE>R0N-Dn_Ja$87fa:JBS^:f@d!AiF?77T4969H02^KqQhA16gKaVterkh(UA6Ab4<+7Rm=i$U&GQ(ieNXTD3ij&'baEHhur$G^AV7]"p:(+]Gmr=L/fps]I6[iKbOqIAO4hR?s+k3fIl@o`#Qo-H46[j_u;.JeL6I@dHS3pT<$+/=`/&_$IgGZ\rL9IHCpTul:Q/!<^G\]8rL&k^OrL!oO/\3SqgkB21q/gr*Ui.;:ZGGeel\,EnEe#tjfIbilFfBk.:0R#4%\]"\r#C>;8nh>8B8U"sBF5>Q]@gDKRG1s,A@`p;Me6L8C>BdRG[^l=1-02kVHl<1dA]Q;R``BY6T5S2Mi:36A62_`8P8=1eDf>>/)'=a>and=Z&tkF&`LI<X&u"RoULLk4-UaS`m(\a`qWacqF43V\E>\ON+>R4=&Y)N<AfpS;9X[9&0PcSl=*t[UPE0C`fpqh*OON3Mrl##$M_;#+<25l^4kUjc$X?*Km0;>Lh-`J:\i46-qSekH1-_A]+]SZVV!+/W]:3#M-1D?)M.X`g/K^-B;AWlSV"0W>P'bO\go_d+aNoD4Em*ArAmadWP5-Ft4icanN'?TK&Cuh=&)Tn$.p3AU`0=k2=*#:_OOd)ah04nD^[gi\s6jZ]oWc",,-Q$]YAEZFhipNFT:ct%U;&G_kD"no"*=`62sY9N>j(77=<NHV8$`=>("li0QD,#;;L_6Y)idp<eWphGKR!ILbfB)$<)WMI7DMhDjgPJUOXb0f[ib]pNhOguX^4CXO/J\a&#-YaCg-kX%G-`$lHUO)%H$fOfOb->K4:;noa]ei!8U#O),f)SR=#s(/jST=P^='b5P<_`g29]O7[&9/r`QU>OGV&p:jP5lP)0b.AsNbb+"A!8a$_0+/;:PY0GoS4ZWs8O@d$@.,dg$lX?f6JSTB9^/>\6>E6L//YY=4?l3'D9'nJ2jilfm!q8Ku7MO%cVq]imRek/64Gs(eg3a;cfOG,e6p.,a:#gr7uK-jD&"aE!0)G^$NqC'15bd_["jcSinE!CL6#eHe6>7om-`Z#4jrrD,#>m*NTMp#smDZVRg/ZL0$mP*j&c>,m%'f,f5pa#%)'qVq42ObXta3UYW%2T[IT.G?s"UjC0<5R[A".45<.T9l)!db_KA]H$FhW!WYq#LNcR`M\`&n4,;UnKiR+=O$),fo#=$e\a08,l]T;W0-*U(h:ZhNO=hb?)aT9N:#D6,2roXXt2Rd?jAf7UK2I^5B8:.eIJn9/`^YRgs=#VZO>Lh0G$8dF!FEE,%pt~>endstream
endobj
30 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 921
/Count 6 /Kids [ 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R ] /Type /Pages
>>
endobj
31 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 857
>>
stream
Gat=)gJ6Kg&:N^l7cG^.E,<Q2-r6uI"XPEC(o\$:dFK@GMR.)A2i7,"SM^t83"]k8aVW4Gc8fMiG/0uuC$s(Oi("43)[@?!iX?gQnfT!jFaWh-jLfhc^(joJ[Kg4X>'BA_UGt#-TX-i*E?Lj(l^Hc"NSAhnNR\6$6RU$=CZkij]]=mSj>jluEK9PDaeY<?9$AS\V:*[;-P6<3pmV<SMlpn^!n["P"!N:_in3BRCoCWeL>l=^A2#\V;s2dV'N#B1j2$*9F]\m?>rREAXJJJN$%`k[ku)I[Kj*K1`$H[lWT"7!ek@iYd.!IYNM'mpYkDJb]=VVPRZ6'6j-.d/Tt(?FX"#o!<_8!,W($<be<#J9"f7X:B-8q&@];0A6C1iC]^aOR4sLS8GE':@i"`JrbW.4I?-m@m0SmS`FL_olcT/Xe]f+oBiQ:Y<"cV)i*DGpaWOYF^_=UujF*^)?p#=)NC<'8;+6W@S_EKYqSm=SUI,`i_mpa?gcuY6:B:`[V:`%W=-i5=>Et5Cef2fa7-0!fY$)LJccs\>CGj8'IB=5<+"9d[2kphN@?,:dTjsI?IG]OR`)3B(nW\r[hP\V@I?GApDe/rMg1$7$/+D^,#3g_Ep+fI^Y'l[pA"\gMu6>?[lOIut\A4EDoS^fn\#j&n1H(nQT9O:P6dRhAnB'*lmPJNWO4JgT,bVj/=/qn\p.^@b;4Pb*i6ntSkgIe_%OIJrP"f(2r=gj@uG%eFp(E+$s3Wu.kG50Cu_RN(A=O`7\'PfLWAf,U2lJcSe6"!pUp:RNu\=;TjB1gXCeeR6&2cXm82m<D]@N#\'\']<gE&W6UMsmejX]`4?/Do;1a4IQl,pW,i(8UK]H8LVVa2-g.k<h):h%**Gno00V\:FSB&IPW)(*#K<]5*[ja&F8]c'<2,Jtmf2:)CP~>endstream
Gat=*gN&c;&:O:Sm%^&,'s5gd*o5VKD)uNMVQV#[a>SkU(N;G2q[+=eV)AO=`n$g53IA,:8W,i._r?.X!do1MjoGK#\4](^34Mb'muIC+n7*d]7,!65:eD=73S`POR8BAU_?+1,Ot%E,'$T;?a_G?Gn_clf)]BM$:uj5Gb8iQ#&X"SWm&gk/2d!`X/A6eY+Of1)G``NnB"RaZ%HCM!^>A(=QN_C$$/?>9Y@,dh0S5ok4!n,T&X@#qd?+_%^+J%_@P8[Ar?a3T+*`D-6P>14I_#E#n'6F/ISB4E:OePS04f:i&;i/G'ftUnUhsRU66d@0fK4^)jY0=EAqr'N&gdgRBNSRYcFfE`(d0d4'SII[I>O]]R@R!,eTkJH#qnNhCL%X1DVjC*0X-Jr@/li:1MH0bOqpFP"CpPm.+6;lk>n67V_\V_&l);1_YhU3lu\/rNm@7/@k#pqi=P;bVn6ac-U$%$!HjXG&PSNtjJD<kGP^BOdjIm"m[8M3db69o>5/9VfHF6(%`<.XM[L,E05GLn&\Z(&0ZrI0M@#Ie]&hj(4F(WF@I+6B?nl0m_`dZr!$<9WGiBIkXa?R<U"]6(#A`g$k5%e"62#cahf/![qnXoOL_(&VcogX%UVhq@#e!=;8p$MF#Tat;]6LRgFd,2c^?qV@0Ror9lc<W6jp:]_o6V>eRjfs`3R[2*O/?B;^P=a4XPTcNEs)$N7-b'2(oF]t[4*JZnsZ7i@MN$P(t;9e69,L:;diW-U+1h4+Cp2a%0WjG<Wcd\F>[Wp#ioa8><2-@;6KTf<0\e-&rAN4Vj8`kBSt#Whg.1$,!Xr/=u$@V&[]g%b6/E5G#;+s&T47e+i3@af%YR2~>endstream
endobj
32 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 692
>>
stream
Gatn#?Z2Df'ZJu$.IL]W#D:8C_qrh=WMXNI]-?Vg;WWKtgji+9B2u\E/kHs5D&udo+^p%@cL9P00ng/l]"OF^^h!P_MumQe/:b_cL>iGC(Sd</h62bNP%I9&"6Z2-;'+a]S0h[aU*KdQj_;dl+?X(X9Yo:)r$FSJck)'M2:u5fZ!LjDLo3^o=[6].QeK%Z.%[.-dVIb#F\4k-5G91dj=+VDLNKSGUV%9p*s\P+!hh,[<)j:g+$480Aa+hNq-\Y+J18di`AD;?V#],9Pm";5Q1POmrMEMiBOH,mWe)g!0T1rLc<6=u-]YqI:Q6f)K5<s/\SPLgm0lIrOM\3'loh;UCLi>H$a5L1`5DSHLW7,#nqP*[a2PLaqV$6Kb%6X\o2N#2b[qCk4YOj80f@PE\$7I8M,M3\0b0S_PJE8R)\7^=a_DArpmJnfF9gBq$3<\'.kRSt\qZQZ>U/BU@8.+KZaS4/kD+SaH$V*IgJ2MQ_Q=ecG#DC>QQ)m*ka"Rq65&gMp)KtHn=4%d"ULQM1f#R5+$Y:iAW.5f'(0*LliS$&P[C-ZG4kgFG^0./4.6)<gl]&!V=!c"_;>7YW6rpA[K7idGLIH-;=[^j#C\*a\96C@MsZ%S?o=MU6C1>T*VnW\n<d+F_Y\=CI&LUOdf%kuO,kRGKP$SV91VB`[e2IhfECH$%ZLAg%B+[L~>endstream
endobj
33 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhNS@cJ`sQ<)AT7bBX2'SI1sre63!8eu#Hi*12+:VXOqE!h>Xcq$8qnjH_CLV:rJP%rsj5>UUDD.`Liah"L%cVntog).//WF]OI2_e/&`/?Tki+CUX9Pb^j~>endstream
endobj
34 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`]*cDO&;9"kTAhN!`Q!btAh.P+,O??T$:5)Js2%0!'c(Chi*12':B,^cE"9mgcpTunnjM9CKRM'[P%nF[hj8K8<cdi[ag.prcc><c[4u7=;Tm#&O;KE.i_Ac@E&[+g9Rn-*~>endstream
endobj
35 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 4040
>>
stream
Gb!#_>Ar7U(4OT5+L"t`ZfB+>F`fIG$TDc\h.`?PPO@d)J:NbqRuJu!]$q$%]>&b)WJb=j=1>M<'JkbClL<TTq++[V.f@cVs4n,NYO9d(8jaLdG>"_LMLk3PU"=K9?V[tUVI:s?A#]a=kE^^"_hRn\IVYOJ/%Vit*>;Dke4l]dJn$=>W]D.6%)oKQN[5[HW4HTL:GC=>_NtoI?Rn".C$9Ge0GZ.*?"*QAPbT^c<bV&Y-'Y)"aUdV'1JBKb/]K.o&r&1TGS+S[9B,"UN;.&N-F4F[B)156f]<#:q9@`&KT^h#@8SsL9oU]5`=tFLWq^rh:$:k!H':GgbXJ-f^-hFZVnRp1R\Wf21@BY&HiFRD+E:)=(o;dR,;_l]m)@X@<mCQMS-+jH)'BhU/(uYdDNn!H9i<TsS\/5PfB31*Kk\1h9>^TDD:d"0-s9I_OqgDL-XM0YJ.HVlUK+BEW&/9:qh8ENke*c+Zq99\Z,$$20B4f_+%)3mVhch'+o5)r2K..3I-1.Wn[VDX0Kts4HcF3+I=>4A[-ID:a\URphZbp[rqpR*Ys0;WOREW/5b_U2$aR^uWlG@EceQ+o_B>Vj!`lc7&(%B/LB2e"X/^L(blbW"EqE[VedHEA="Cu[j7W*$K*]qud?01Kk0:m\236hco(r=Em0DQcO.u`6RTc1t28.&;qLN@a?IoWg1L..n_6`.l?s0,sT=L`S@r0EQelhr'd,X`@6O9)R.UM=%8mE)N-AdNkOYGaV&6HH^m/54er"la%d8Q"V1=)sO7Y2#V8gEVp-''2"8Q#[QGh`[&UI'ABR=dFD?qVDr8ZNSR!]A%5nXqFJ)-U6FkRSis5gQY!H9TNkP1e#kEC'a>4#K1<)RcACMM@\!#Qh"$6#D2,/,hCrgc5^$U<d3N,V9ChlV#BR7ao/N?nTeMP1Du3"/+Y0VlOrgM)4=FPD&NN>/fm"6(dc*^21T%2TT0&pIT&b%%/Rt=OV&>llMYI5*+f%Y'CP@ml>]Qp_0V*iqE'_8i=9rq51<bD8_(W3AR7G!uoG3HGj8FR#)"R,>aS:TQ&gncnkl"=gX55)UT!i6tK0FAajM<*4'$Q`7>L3C>bt1CYmbXRZ:NG(tfNSr,>A,]E*:T_V?Nd<8C?5Q]Sbr8!gCjo6,^u05&5'Eo[*1o]UAjBh5"4g8\U>1Z"`/h?G1k+<H@TE#F5uef6$i5lD;c4\5Ai+PHlm;j->)0[eu/(<58p&Ohe)Fcfqfdm+N&`a,FjEjCc_YZ?lS;&ua-3`>U\V:lDWC_P,(:"6@3]OoAR#BL&afKuJIS$;2K00iJ6/*?%rAI`B3S"iN+#-*.gDeV\i>C2Ut\7tIS_Y1X/Y%\uoY\s/L!oqS&,lkl/rPo0,&%kqe3kP'Z=-jW`dY#C#b96$<@grLg!V7D>`%)EEXd$)N'hbrp@fC7>2mejUDV0i?cAc<^?W*N!8A]UJ,@;`?_Q(Kj\/RJ?X(p0b[/p+G:N`?A:qgPLVUTmRQ"l]Jk3[qlk]YAHYNNM],tgc@:Sd^2O3e'WYDdABWpo!Df)[3Kph:L"A#q:q(nRFg8t;D)$MCOZUg2f:8A&j'!:m?X<l904h8WB!)#\WI)l([O&*?aGA@#i82A?1J$0*J-o.?c1GZq+a$/3&h-[[#V2"!;1_:VleICd(ZdD4k\LgO'>ZfL3fD0Wjhe).^_jf_g*%paS`f)84'Zmq%=$DJg20X%72[6o<9Ph$jNFCFk^\"J%<XNe23e71U.49t$Aa_LL#@aQ(cS*pW6K_6+=$P]n.q@'sV)>_R?"RPoN/sirg-J":V]XM'kBTtCm:NU%<gLNFs%m48n.'GBH6:c)\D5\ro2DF<h6g/hFn/oTO9S&-m&3`qJ-%OjX8o#J5ZQ=>?HQ<up$+NRRG)n7m17m^Hm^J$jO%t;9#nNMGTL;n4UR0JYEID#6cZ3!"mX>3q9K.&##^C"7:0eV>4b?HI<OHH=!c%-<O6B2Zq6r3Wb1mo5PA/Rq4834cpdYDM4X'>/MA+FcR-=m#k3s^5[0KOm!oo+ik5?o_S*FBoWr,D]:aD,5ajX[uCps?HOVM:,,'U\Y\"`MX)#^EsLa4Ah8[^d,G)aUWUA'i\$.;SY;!BKkn%>?EKFrEB4J:NGUJp7X">0B4)/)0FX+3O?,7EZIZKEid>e\mIL_1bDc!oaR[o)M,_ge:S'F3BIWM01Oa#>ArmC+AchX"XAGkBCc*)`g>lJC--AR]4C$R()"X$cAY%KUCK%`)X0"DG>$!`-dc]uRCk>6f+dAH8<Z!Pl:3!I-'unD5(n=9I3s]MXJa53t\SGb4_p(bZtSj18Z0INZYRLLU1j[S7W,Rk"]7[i\HcWh[f0$);]]0#TYhZpDoo+n;:&DhSk0`2@&H3e9[3f/%brM^h56Q)u!o\B:I-B1''@OMCa%<O[s._T6#i4D`@WP%P,e&7f7>d&/'[ACPd5Kjk8ngM1<q^)\J!mG0^@NnKJuqY+LDA+kuUrZ*Y.*C1M(Fj]U4*-+*paei$bQ.^B^:`3"((7Z\QkOn-+h0U['peL,K4L^6O-_Z;CMb1k.lCd(%)oC/%=5=(aHs_qH(5R%I<E'[:mmL2o3E*+VE`SgAKd?8oAC'/;2OJ)Hcf7;s4[V71]4kcSZSQsS<`.EJe5)l>UFscOOB+G(-?FR@=`ac(+f_7>.#hpDXb")r+[B8YHo+6+Z`bH6\,fF7+V14**$+Ih\[^l:e/7#\>uWnTL_<K's((::6Nf7Bp*L7Pb\03T*S"6unS$kZH:+'lTsPU]DEpT]a"G:?8rQ:8JA4hmI_$k5.Ip'^.aYOZ*X,UZLCZ(H!]Y&QW3lHDP54%:56>@)T"72NXs<C>InVtnLK;XCg`;]*X:!g'^4N6B2J'urMS>]f02d'iBCe[-.CrWFAG2Sr%r9IGl(etU1g0`g9k"GSpDDX5VA)0k-nX>2$e5,u?<%6iJoY<./uT>%pA/oEf<8D*rOTE&f?M!Xh:uE?I1I"T4%t2!TEhVB%t,O`FLUs(f<)/:[K+'OX8Vl<2Y;#Vc./>sFa"12Ru8q'64Wq:US6"@L7IgDCm9kWq'Mh/*c4H2;"'-,UrC+2]:1ra`eWVjZ?_;ApujP'&a'H]%8leM;6esU';Ef@o\]14Ie?Ou\_/3Y3"3G;&=IBm#``O/ZO_=.-9E@cR'jiECVC8)ksr,:DGNEYOL*r-rl#Kk'jXe4W(&WFH87R$(V#9qRLQb7]"rjRFg'JArSl$_OWVp7O=CB=;Y8/gh9E(3&pTH-7'l%8Q4HP1W@)5aU>h:,P.T'Ggo_g,LejXg@a![b@UJ@6M0tM`Sgh5PUCXsVKN5/(_tOc78sFr10nickeXV@EUc$WG%\7,'YP^KErHhQi4dFW+`)TS)Po\ZIRurdQ&lc_jpc%@6gi+ujJBgFDAt9BfleK,S$cF3.BpQQP,+FM8;H1M9l4"&Fbq^cOg/:7p&?fH1q3^!,M@722n9O;mr:]%_ahfBJ$Y!LV$ACreociD,4:T5W&D<Ude+t_830mrO[0FHbpneS@2?W.a'\a%qpZOL;kT7=[OLfV]jP'ZV!BQ"2gma+HWS;mLG'BrCRe0hRc_<"D9LOnqdc2L68;$t%ZV2eHOK!1Y-5t9D8\?@"_)TB'jVlec6V#9dTdA]2%3f9PSGTp-.9Qe.A#A4<768al-O:?g$)I)i:TT9d([o'g=qVS:NrV[Q.g<cOo#P>3E"/m8QJu<)-,/7[7*fc^RQrG=i8G5\38NKVUAtrOj,,.Y8'7mM);%MJk`35l7>s_RDZk=`"-C]K&I^ZP0"2k8$+rO2W1FP[_k9X_Y8OlMaSarSPFT*_GiIqE4kK=dT24\Y/gcN@=ni[VbSS#k$)[A"0^EC`VTAH6%PE9hN^s#[`Q`VtI0/=a(11n]`.2r$"*n9?:dDK<+ch7.AFJS"rF;NoM6Ba4;P4VK:Ei7\?VSM-W5(WMIcFiT4!o]V0C=7J^5N,A'k`M+kgbES9Mcb\/_keM"`EQao+DK_[\7EDL$G;BL-SoBhT@p3MG?k$<\t%$*1MhbBo^]h`.UIlJ%C\9rX5`_?"F~>endstream
endobj
36 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 980
>>
stream
Gat=*?#SFh&:Mm.(o]1L2Ds=pgZ7M=($TS"'Y&uEocXt%CQC[uZg7$362^W*3Y^CX:aiV[KBDKi1HT)&nEFEL4^A&8:8%W@!TT:&^kU\WOup0Kc@2@iNTW"b_GT5%+c7Ji+']:)Nm&3Y[^d6-A-&44i;OPLrm+fL&%[9t>bJIN#F%Y'&ToB-ppn<h_G`,>C&r+Xe505d5+S<5ncP&i*/K+/g'8na?EbLW)&s:O]B<HmD=eSNo:W5D@()rh#=^-$!DKB"S*Jb4*^"E`_*'\[A]kcR.k>G4,^b87j%G(V8@:/5'c:b?()EV*1V9&?,AcTb_'\)qA::'Zn$36jk7<]eKuC$pE_P)!N<cE$bH/"2W]C5lKshej0r8KM$]rM3H'Q,7[A(2S&(U<C]m@LF&9UuD=B2f*T1paWNr&;-0oUnSo_o<2N!GB@.#Kkf@\XDerJ&0?2:<Ad5$@Q8*`,eMA@eYpaUIk2]S"h?h\^Z84:'hVgmVUqL;!`$PR.:@o:-Hd_5q3oN"Q59HLHVp,rd?9I"tlCKB@[oGH-26nI,cPQn(Zl&UonGegRg]9Q+:o1q!YGV1L0%&oULXQH,*HroreZ3i"+_gV#_HZ<fV'mJP?<Q:BC1VGo&JOq-je9e/+o>6DFa?qW=e7UtXARq$+Cb*.2D8@<9!5,6r1PH)U=c.=QqLG>uC7]XqHD:/_q.K,dgC:,#UES"&!`IbO7Vo5T'kr(,XJe#Q<o4(bh,EM`>aJlDq+cM#T_]QT-V@C,U@\+$>fXMf@_cUU"Pj\\^6f3gqfBor#n$_DK0UCk.WJ17s=!d;+ck$*&4MI;5NT[YFS*BlGEc_3;/[?U/"o]Z*hM3tk"L2<U+AHM#PBdd*gcis^\W:B1O$b\44C+U7^;,!a!%$2j#EE(HrN/];A$1sNk/Qi,jjCML;$ad0?(>cG4kd!(?F]h%p`Ipl&:&(+NIV7?^t>SSh$[r3L2Z@mfe;5I/=c~>endstream
endobj
xref
0 31
0 37
0000000000 65535 f
0000000061 00000 n
0000000134 00000 n
@@ -189,33 +240,39 @@ xref
0000001314 00000 n
0000001462 00000 n
0000001578 00000 n
0000001840 00000 n
0000001946 00000 n
0000001684 00000 n
0000001890 00000 n
0000002152 00000 n
0000002358 00000 n
0000002445 00000 n
0000002762 00000 n
0000002836 00000 n
0000002957 00000 n
0000003277 00000 n
0000003446 00000 n
0000003550 00000 n
0000003681 00000 n
0000003820 00000 n
0000003929 00000 n
0000004004 00000 n
0000004839 00000 n
0000008923 00000 n
0000002564 00000 n
0000002770 00000 n
0000002976 00000 n
0000003063 00000 n
0000003380 00000 n
0000003454 00000 n
0000003575 00000 n
0000003895 00000 n
0000004064 00000 n
0000004168 00000 n
0000004299 00000 n
0000004438 00000 n
0000004547 00000 n
0000004643 00000 n
0000005591 00000 n
0000006374 00000 n
0000006602 00000 n
0000006830 00000 n
0000010962 00000 n
trailer
<<
/ID
[<4fad3f4eec3a3b3d3d5fc9ff821b245e><4fad3f4eec3a3b3d3d5fc9ff821b245e>]
[<d274bb4400f3f8257f3cbf0154e5f352><d274bb4400f3f8257f3cbf0154e5f352>]
% ReportLab generated PDF document -- digest (opensource)
/Info 18 0 R
/Root 17 0 R
/Size 31
/Info 21 0 R
/Root 20 0 R
/Size 37
>>
startxref
9935
12033
%%EOF

View File

@@ -1,5 +1,24 @@
# USB-C / HDMI and USB-tether cast (roadmap D & E)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-22 |
| Last modification date | 2026-05-22 |
| Co-authored | |
| Severity | medium |
| State | postponed |
| Document type | draft |
<!-- doc-meta:end -->
\newpage
\newpage
---
Android Cast streams over **WiFi** (UDP/TCP/QUIC). USB-C→HDMI adapters use Androids **wired external display** stack, which is separate from the cast protocol.
---
@@ -10,6 +29,17 @@ Android Cast streams over **WiFi** (UDP/TCP/QUIC). USB-C→HDMI adapters use
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 7 0 R /F4 9 0 R /F5 11 0 R /F6 12 0 R
/F1 2 0 R /F2 3 0 R /F3 7 0 R /F4 9 0 R /F5 10 0 R /F6 11 0 R
>>
endobj
2 0 obj
@@ -17,17 +17,17 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 716.2874 89.70104 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 12 0 R /Fit ] /Rect [ 45.68504 762.0394 89.70104 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 704.6874 244.437 714.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 12 0 R /Fit ] /Rect [ 45.68504 750.4394 244.437 760.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 694.2874 161.733 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 12 0 R /Fit ] /Rect [ 45.68504 740.0394 161.733 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
@@ -37,7 +37,7 @@ endobj
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 13 0 R /Fit ] /Rect [ 45.68504 683.2874 271.237 694.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 12 0 R /Fit ] /Rect [ 45.68504 729.0394 271.237 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
@@ -47,27 +47,17 @@ endobj
endobj
10 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 8 0 R ] /Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 21 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
11 0 obj
<<
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
12 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
13 0 obj
<<
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 21 0 R /Resources <<
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -75,63 +65,124 @@ endobj
/Type /Page
>>
endobj
13 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 8 0 R ] /Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
14 0 obj
<<
/Outlines 16 0 R /PageMode /UseNone /Pages 21 0 R /Type /Catalog
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
15 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190938+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190938+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (USB-C / HDMI and USB-tether cast \(roadmap D & E\)) /Trapped /False
/Contents 28 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
16 0 obj
<<
/Count 4 /First 17 0 R /Last 20 0 R /Type /Outlines
/Contents 29 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
17 0 obj
<<
/Dest [ 13 0 R /Fit ] /Next 18 0 R /Parent 16 0 R /Title (Layer model)
/Outlines 19 0 R /PageMode /UseNone /Pages 24 0 R /Type /Catalog
>>
endobj
18 0 obj
<<
/Dest [ 13 0 R /Fit ] /Next 19 0 R /Parent 16 0 R /Prev 17 0 R /Title (Phase D \204 external display awareness & future capture)
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (USB-C / HDMI and USB-tether cast \(roadmap D & E\)) /Trapped /False
>>
endobj
19 0 obj
<<
/Dest [ 13 0 R /Fit ] /Next 20 0 R /Parent 16 0 R /Prev 18 0 R /Title (Phase E \204 USB-tether transport)
/Count 4 /First 20 0 R /Last 23 0 R /Type /Outlines
>>
endobj
20 0 obj
<<
/Dest [ 13 0 R /Fit ] /Parent 16 0 R /Prev 19 0 R /Title (\376\377\000T\000a\000b\000l\000e\000t\000 \000+\000 \000a\000d\000a\000p\000t\000e\000r\000 \000c\000h\000e\000c\000k\000l\000i\000s\000t\000 \000\(\000e\000.\000g\000.\000 \000D\000o\000o\000g\000e\000e\000 \000T\000a\000b\000 \000G\0006\000 \000M\000a\000x\000 !\222\000 \000H\000Y\0003\0000\0000\000\))
/Dest [ 12 0 R /Fit ] /Next 21 0 R /Parent 19 0 R /Title (Layer model)
>>
endobj
21 0 obj
<<
/Count 2 /Kids [ 10 0 R 13 0 R ] /Type /Pages
/Dest [ 12 0 R /Fit ] /Next 22 0 R /Parent 19 0 R /Prev 20 0 R /Title (Phase D \204 external display awareness & future capture)
>>
endobj
22 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 656
/Dest [ 12 0 R /Fit ] /Next 23 0 R /Parent 19 0 R /Prev 21 0 R /Title (Phase E \204 USB-tether transport)
>>
stream
Gatn"?#SFN'Sc)P(%9[@2q>jlLVrQ2!p_*]FX"GbKN*5RJW(jd[TV@7?RMPK:s)lt=iuMJI*QfYGn5Vl(2]XW$!\b>N@62B1'7tVJ7OUIdeVFe)p9?L;&jl_39S6OqglBBNnm.8ou3&XLgi\\c6N(UA72M4e/L-hYkCf(R/*EdiqF[Y`umKTrI@5\dJYu6357il=+ffl&64I2_b.P&)Q>D+e#l^q/&_ht]Ye]7G)#'*P4prn%I1aD\oe9BU*SO2PL-*'LgpCdkIZ$8,cif&/&[nYH1f/oh2t`L9mKqfhd1c#,c&YUTT2j%S?SA>'Sd-F\i"GoYL[M+PBnf,g[qbQI5_a&$4/RWW[]MLCJFkO');4rr_ns=VF\(N4r+[3IAP(sEC*pVIhqdTo@E(_`%a"&/;0-\-WA#EjLphi&d>SrX:"ItE@8,pUbPV7ZaF(SknLS+hg^E?qWr\HVhH,!OO)Eo[A_;ABmTnUr"c7OUhPKknGshT[A\ju+k("b2j5W2S7&#>>Y6tCI#`.tma2%.7fJFC.1;oq_/9B\IJ5nnceKR5Mn:V\doT$bMF'Wg#&fmi?uM2UC9:G1n\m2kXYDT=\Z/Kee^EANkp>m-2hM]kkOMA_"1o*[B"b46k0>l*'32V?g5s!qd<Plj;+gT~>endstream
endobj
23 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2591
/Dest [ 12 0 R /Fit ] /Parent 19 0 R /Prev 22 0 R /Title (\376\377\000T\000a\000b\000l\000e\000t\000 \000+\000 \000a\000d\000a\000p\000t\000e\000r\000 \000c\000h\000e\000c\000k\000l\000i\000s\000t\000 \000\(\000e\000.\000g\000.\000 \000D\000o\000o\000g\000e\000e\000 \000T\000a\000b\000 \000G\0006\000 \000M\000a\000x\000 !\222\000 \000H\000Y\0003\0000\0000\000\))
>>
endobj
24 0 obj
<<
/Count 5 /Kids [ 12 0 R 13 0 R 14 0 R 15 0 R 16 0 R ] /Type /Pages
>>
endobj
25 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 861
>>
stream
Gau0ED/\/e&H88.EM!GJX(B!!DEePDS?<`u`f6Mu!t5m&7,)H%;'Vp5q=csKP-*)sXY_&Werb2>hYTH+>@?I2;Z?t._#$,#5$24G0OKFn)D95u_8Z?5h\3&bF?RM`H):teiQ*^DZ&AKu))k_<?Bt]b">&$kjEAXa,l*kn_cP2H91."!&C--R60+Q!6i_S,*)9rA%<pIdNo&Yjoti4de3&*BF2H3!&+t\BbT8<]\!-&aIQed"\\1+4S/Q?.Hf%&ka;f's_Y3oj*&^G3-WcX"6B^Gp$Rc.38r\OAgHq8)1#b"mqAkDk&jmLm/1+0(E$?[Gr>Tud8&6)f!J4p:PFO,6q6/.LEgAu)V@Z9sAXqj5@'NS4UMIU%B<QYE_`$>EFAE9qD)ao3C+&MkL?EgL!<V-qRc`f6JRaXds3M>n`fT;i'A2=SJKA?f$o6Qi6d/TWbo$=GShQ`K(=K_C>5kJ]me^n^(rI?HNotrON.#b,!b:HIA(O&M-Ris)V0ldj[VR&^)![X.nlK?N58B#:g.,U#FtW"9eL&<uaqqJAP2Ls^U9`C*TaG"N-ZpI!bYl@49$])(97q+!N)e4T/%40XnpJ=pRc>JtHprZF8L'A)13^sI@CatY#FNihQqJ^J+D5,JFP@ItCh,$(S')[m37qser3siF,iY>:YZf;$QgM;AC;8iC%I-Mf7]o9S<g@#M'(k*@O>Uc,R0&4d(&Gt1qf3]AZQ*Ws+SQH8T!/d?KBjD.4F3YePq!BBp[&3<mCqAURkE'4Rm'o'>h+=(.?E6?hUf9+[^UA5?dUPO;pN,)+HKW^euf.S][W/$CsGU%1</&pfNA.7G*qhK+oFp?JZoEa*KYYs^sJD?dK=#mbUNCMQi1OD]3(SHYiVR"auZXFF?(r-4W]E7gjG\uc3@pFpK5f3Xe:SN[&tNCZO`3E8ls'8=tAFo='PFb/2-G`9Nq'Fh\P5>CM=ZW1p9'Vf2@+X^MbL>a<%pa"o@u<+"%=H*p^7tCo]W]`@t3uB(N_3m'XC#CJaA1K0?3=J5>h>p792)51L%n?lBFJ<%_:E;n?8+[!C;ojHtD\$+[]oW0Y3*_%f?E#/Z(;/E%fdW!Qdd"K#sd?u5t$dtTr?%*0[P1o3OS0<d"uJkN21am\74bI8$nD1lZG1C5.e4](f,a^U^c1rhYgkUfr"L-ufC`Tc+e-_'OQF'p5n:-='A(Y3Q(="i+8lMeZK-tdo48kT7q]Ee04;O7#D\g.H&R`^ireW:7(%2L?A:befl)k_Ia+RVFrPW*b)k56)h>u][`oK"WG4(WCGlsOh0?&/Y4Af6m]e6tp'1'5BrN,,*fS/"'8UFo/uS;*s8`Q2)lh4[1b2;&6]BJ,>\D^!,D$YmcHf9)$06s^/#S@+HHdM"RYfWl@_,4*\PaW?fQSC1BF`YmkK;*]91F1R6^)Q@7^V@lnY$H7$/7C<pp*.1<-Fk825B5t3A(/hkp`;0]o<$Im3OekiQ[`",]]MIO'9fcjckLm$rBbe)QLad#QY\#"#BULIp,,2\:"#9Y4JPM9__f>=PM!)`(MtBa-Q"Do#3:,PP`HA?Vg;KuZ)(bM@_"?m7O^OBh7>uJVUgY!^r<L_'J\+7oU5O\bFenpWQa"P6Jrq((G`;3$N>'KQMgAXW'Z$@PR.CE3Nl0@JQPfC<"?\Gghaq9>I;^h-?J=%X.,KjH+Mq]n.]$%0+sBT\0pYBD`T"!@*M:V@QXCF`,FIj!N?2%kB5<g]_&`E5BFb2*`JDGP6Rk)`A7^Rk1N:9/LWD]<.*h]e](%:?*YNBViau*o9=Vl:X!KgcM2SZJ1a$jg'`2fEpQ%1crsLfrhTr@o\)M;.%'Vhn4M0i-m^C(KHe@lQksa.>FmYe0Lnm<!/6t^q@t&LmGrE@MR=@YLJ"9rj5@3.3Kb%aq-$P^c/<-^Se]RT'2m4Y?>Xn!5clRB?OWo?SFKqBH^UB/N+>WDW'J>R#!),EN?(KW#ZB\q.EqTbB#!`UOW@ood.)shu"YYsY+ej!`Tpm[ogW(5OJRnURi]:5o\n$k5]f(3a1e31sag^iu!2L4hk>M[DE>f.-a%m?)e[)OCjA%,E29j`"a)r_%9\GX[+0ed@)9X'>-@W$:Lqme;,:m&H8J"m/:-2#7N*@3$GKFJCU&/kW>$\#kZ;t$95Qk'$*-@=lqr)]RQfTF3kc^J$Ybo7M9Gi]jC9.i20Xd\iO:_E\iJN$?(6"DZao$FtGd[Yqs)Ca(^g55d&_C`dZ]Ekq1A#$7HUWd,JXbbk`[#e]&d!\^6\`8DV1b1(=+Z58QXC\qo>1jhAX*2N_$!M+MsOmSHcH9<'"I1@<8N(^H2VZ4Ptk;?:@Asp&Z/[ei=+-,<ILqF*.U\)o.lD<-g22JG"]a>U8>2kjdC^sX\,ITL=0MH3m%ZMLaVcE"Yjl4S"bfbPL@X4"LaQn6=?RETlHc3edniLnPc@.k?'=b<u3Go""op4^?ZYOn=Wsn)B*cQqA\63.8rGr/9-';YEBfI$'<+]qHj-+-fKZibC-:;<BU,IVqus)4)\84CO"[UGtasp/f$3Lcoq&sB3:I;Y0SFrB2^#]eO>=`N7D/JYU#o)LsScUV3*A>SGWV(/!%=~>endstream
Gat=*bAO(/']%q&mV7teMW="M/Gkrm3f>o?X=@3u3%\-]$m?Yan&HbLGYCFH6A^E`F+!EG280@G5$7g1'7e7+VRHiP+BSUN+s=CJRpbl$KV(&S,g)<MJC^/cmL+rZ_\S%i/e()Jas6+aXmCBG!Fq.(HHQ;bj!N8c>]LtB=&aN3Zt-m9aIco=CN__KJgl)ZrqRSO1]l9+R,Z*G0Fq4g4HB"aN08,dfC/r]*m`+SG_P&q-I"u]n9b'!'<dM=STl>-q?iqPk0M;^30>gKkE%;*U9<Md`j^5Z30d97o$c../0INk("K!EC;N)=Wi/^t;,D.Y;N1"_Xic9^ND^#AdPC]Q+]C)"khNu5giBu=4,;43F%AkNT\XK_oJj1,$F)e?X%qUga*IJP7We6fLPLF^V?ZqtjOd5Afh,Fk[F:%NP)F1?bMQi2Cu,Y7&kXF$U,n#(GPJU)/`o+JAU-coeEa@^eebu$(GAqJ,F0"AdiqHD@M,KrlGK\6T02W?pse5N0^nN]cI1ai:Z05&WHtcX=1JVF.i"e_BQ*8Z]u(XoPc4tS'?3(TX2-^L\W;'"7I_Rn%gcY=9"b9;_i;th@@>rKa'"\=rOj#_#=gO*mj=*RO5oO8k>"\bYEKHOE3M^9U=YD8-XLDc@[X&5``mYBP$VemF^ic#MN;<ZeV![m4BrSIG^nB'l\KdZ$YdeG<r;C:<\!T_GM=LqD<,$\?rdcbq>bASe(VaoPQO=V>,Vt:MTh=goc[M4r!(6G0Y.;4'gabhW^;LG6<"6I5k(5FVQ;?NL#20\_sLd=Z/-S&cP.k'd)56r-!DGFij.CK/khn9cPs3V#a/t)RX2apObd=H8WM2a\[%>'0_u"VIX+`~>endstream
endobj
26 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 581
>>
stream
Gatn#>AMtY&;B$?/'_(5>.WQnBm&ZE;o_TUJJ>-q"[gqbCKn1t\\%/Sq=e#t0QHH2$"ZC1RaHNGbR>\7J#IeX)rNKhBL3hmC]OlGM!P=Ig#12,qTMdA.$6V[*64!CC$<>'@E&rma8db^,9A4?YnUnC0[#$N8UCkcA/ii+4[Y$[0[/%M;PRP@Y:HM$B.oAF7eXQ)J+r+?5N6V>#9BCtZjs(3hl%o>Yc6fs4G+TM0=]'A]:+)b^P-*@[o-7:N0t53oV9m4;C1IZh3R=4l9Q:nBl!5KMk/T?NEg=iq[ATQo"UXBM7i+Arg7#@FP<jE]:;``h:BT:Tgl\+<DKQ.(WG>8eD0f8bK*aG?^HIhQjkoW15tOFWAT&I^.,V4O(\]W-G`!AR?18f3$dGYB>F?0iZ)1@Js]JHlZ<2JQLkL?\)`cCK\,s\D^IR/^-J`W2_VhLBtZ=5rmVA8rd&thmJb;lBuW(&DDYDWY,Ek87CBRKW6H5LKtHjXIgc4JNJ1Rc#J8_K6h@R3h,KZCC1GqZ?P\DbEJ2qfVg%%,PXYOHie7aX`/G<n>ToL\8m4_PJJ$rD#D6YXh@Pk~>endstream
endobj
27 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9"kTAhM``PkDdF-fp`Q&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:emFgZ@onCPq82Ws8G-_Tt6^R9oWtig34W3;D"0MP=sG_Q,?.RGJoD!mbh^0(JJ'S*<~>endstream
endobj
28 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`SgmmFhnNfa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#B](9((,pZH62[FH7Fl==&J^W3%Z>&B5W+giG*2MH_7OtUjbJt$1U9Q2!n~>endstream
endobj
29 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2685
>>
stream
Gau0E>Ar9+&q801R&:%!\!D0OZk!CUS8PZH)E2ibiW'/i7\Xb-P,OOAdertuUa0;Xb>t&Q"M:hT+m2&\%:t'MItmfLQiapm_<?LPL'b0i(q+%olk<XKc@29$25T\RY4(R4G_)o`]'\IjZS)Oi4D.CXis\^Af$"O1AgnS.k/d-?7pe%$eK8/8i$+(=M^,_WU&\&08l>]VO`EF:ff.\p<]^Nc`:XM9HI86CaE@mAmlrWJC7YNp&+7K%dHkm/qJq(63Bu-RIenM<=d*!jrH$G-G>D<oI2q-L",TQT:bJCT'P]MfVJ1prjA.M.&^[.@S<3rK=QBd6D@7g!&q5<4:THH[5qG:JS8_A&75t)G"q/^S-rq$KBr[]0JqYc'RW\8YQS/$"RcWd'\,Y5KF"G?q6JuUMY5:]p/BrCp@k8$_[g]1(_!s9,E.]A<Nb5i!H%`u_*7Ju@$1'ou"7ld+gXU\l\%2l";&Y%0TGoZ5;*5TUVL%*Zo2"Eb@le059fbH"qN[%F'Qh5^ds]\c/C:K6eNG!2<&Cfg4S:8CD6B*VcqM?!@>O0f.4kJ6,NW9,@f(pO1j,;tmGE5Rjd\FL[G?r&6]4?t(_]#s3p'asZ,"a;%3$hb>1Ac@>osWV`)B_'[%H<eRdTFV0-#@,_\L:&O`hd`l%*I!LA)(2cW6FZ,gW/l;4[J$%bo%FEmSYUbNm!sfOk&BW]Y">3U:*2lVIU``s,OC]@GT(TH712m"T%]=o2b^_#XH;=XQ`"$':rZTmte+0A#_M.tD4TSfY_c1D]"pE'&c0a,a2uE[g#7HT,Fgm?_%"h2/SsB"R=5FUqC#qR#W/.6;<aZu(:[UR4_7qaSIIAf4da(81BL5^(Wp-^i$nn!7?uq3TiE_W-mMBA&0:1;oJHMU`;+)obMgaR3;0oHCDahL'9"5OW%(@sk:;h-tIhW?;F$6md,Ma4Jef`V;S31jgh;r#Dgh8@mW88K)6bdoL=Mme!R5p?T(6+53,>+1-E"MMJC#A_NqKj7.bfqA]J3G,G)4B0-=)J+*@t6\+dX[$>`3h=2qFWERZXhs3A-oaT^m`Sk=2-Z(Hn;mV"&B57O?RK[L]>7:4*/JsLJ\Qs5Z5HHkJ\m'GH0!?A^jY'o$agF:V$1r*di>U"1i.X^0Z6BPka+.:>gI$Z[Sd;53'a"@<Mm=bA`-]&m4Uq$g*C87[W/a!(&2lZOQ`nk#Tde4nXJ>C'JsBJ,A7:mu^HKgZ9l\f*fZ7ff7qR:^iHahUV-6sL?W\'[N:4T.Bg@XOn@O40A]'<V8;Wn72PiYrA-7.1"c<Xd9W@UfBG#!8rHfsSlW`NL*D0VfhQHO_X;j<18K@0C"%p02$W+]\/5<(\Jmr8DLp7e8Ka)Ks(0HXo-mc.td2:PM[m0X9V8d;E">(m'nJ2aR\"Eqr@2$aBckN=lb1R&g.m7lNJh;oN5/Ld;s'?406V_>B>N:t=a#Kl3ZZE^:Kc98fC1\)Y1^YOL+[`[#"!#$Gh/uf#)!4E#lk`R.J&;%P1/oHgGUlFZWGIDO'?-%Yq24gf<6Kcn8aETtO1Bjs$u6%KJrU030d^a]Zp7<3a/D^nhSYKN5;=h6FV_ADTi\\'60j3AS,0Y?oNn"Hc!?*5rs>&V6TGd\1Up*iYECH:j)4W?L)"Z/aBA.td-seps3hUH"\USU6P*%5&[$(^fl'_`/".X6'*<6(7*oq@qW]9$\IsH@`kV81fFH]S_74u7A@=kq?IXo>QbBD^8mTY//6aH'-:s_`\*`DSFRcmCPGfA8C_(7XW)>Z`Z&F\afM=n^(s!Ra,j#qAaVc;+655uA,DKYOs&m?50oWHH?SV,5GRY;;S,-7([6#tf$Vt#-%:]c$(FQKfL:_l6.K$r2K5LST$@a]MB$(,No?Y^!>PYKPVV&d]:JWXD(:NK-Aj@UF\n'J<?>?gYMpKkomG7+Z])1g[CA.2_mN?nU=tP$8Cg^CDB5Xbdms"AXilHge3sN:VDG-d-TG2fjBDA[4@ipNN]4ZhUj>?p9%Y*(Up8D`fR&ulA6&>W(^h2j^8gI$5[:@#\j]mV?SCcu%O8/RN7WB]A5#f$ef!QRP@g1_)ZY)r>1l.TJC]BAZ)I[eLO['SXO_B7B,get8)n2?m$O'\IqqC,@c"2a2RSrMtQF0Z2^m9rk?8M9t!cO<_Z#&q65u`7qkp*ajdBNI?4s_X@PhVDu6GG*fIFS<c5lLAMO.>ns\!*42(Bm9Xe',]E%DU)>_)S+A;M-]691f3ki@c!baNmSsW",j<hlR\V/+E)DQED=?bLn:Q#$l<DBmUe&]@]hb;;sXpAi6J@$/V>,^`_-g+`D`WiDn9j+JQk%=9dm"Yf(]&BE.C.!i)MZp+_-/B7`\YgtHMmhL:B.rM.;'-Yc3(mM;'"-<T-`!n$[8F/un\^nnV2'hGVDoSH\`ULElDdb<1@6G_)F,r8.<l*,+AkG(Ji;gI\\Qo=*]U5Ldnd`[OO[ZLGS@&$8#lU&4`+'=;]k?aG"$p(8h5$HYY>VD=h[o:f7;713t2!eZC2f3nP9RVFni:tf,-#M<]`$6&fchct%KF@?'pRV/dH1JR_])gN-hQk3\n9To^Qpf2I/EFR=Ha['QYq4_e?AreT-<_=eM\7lbX19]jBhEXfUQqiPUO?i5cSc3XL%autl\sg>BQ!coAkO\qnhe8YHnZSc0aqEG3,l*m3]h`Im!lP9`;K~>endstream
endobj
xref
0 24
0 30
0000000000 65535 f
0000000061 00000 n
0000000144 00000 n
@@ -143,29 +194,35 @@ xref
0000000882 00000 n
0000001029 00000 n
0000001144 00000 n
0000001386 00000 n
0000001470 00000 n
0000001576 00000 n
0000001228 00000 n
0000001334 00000 n
0000001540 00000 n
0000001782 00000 n
0000001869 00000 n
0000001988 00000 n
0000002194 00000 n
0000002268 00000 n
0000002361 00000 n
0000002512 00000 n
0000002640 00000 n
0000003027 00000 n
0000003095 00000 n
0000003842 00000 n
0000002400 00000 n
0000002487 00000 n
0000002812 00000 n
0000002886 00000 n
0000002979 00000 n
0000003130 00000 n
0000003258 00000 n
0000003645 00000 n
0000003734 00000 n
0000004686 00000 n
0000005358 00000 n
0000005588 00000 n
0000005816 00000 n
trailer
<<
/ID
[<d79a73d4072e12be58fa83a481c816e2><d79a73d4072e12be58fa83a481c816e2>]
[<2da9107c99ca25f08b416afdb8f65144><2da9107c99ca25f08b416afdb8f65144>]
% ReportLab generated PDF document -- digest (opensource)
/Info 15 0 R
/Root 14 0 R
/Size 24
/Info 18 0 R
/Root 17 0 R
/Size 30
>>
startxref
6525
8593
%%EOF

View File

@@ -1,7 +1,47 @@
# VPN / Remote Access demo — gap report (2026-06-13)
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-13 |
| Last modification date | 2026-06-13 |
| Co-authored | |
| Severity | medium |
| State | blocked by DEV |
| Document type | internal |
<!-- doc-meta:end -->
\newpage
\newpage
---
See also [REMOTE_ACCESS_VALIDATION.md](../REMOTE_ACCESS_VALIDATION.md), [REMOTE_ACCESS_IMPL.md](../REMOTE_ACCESS_IMPL.md).
---
---
---
## Table of contents
<!-- toc -->
- [Fixed today (prod BE)](#fixed-today-prod-be)
- [Fixed in repo (awaiting BE sync)](#fixed-in-repo-awaiting-be-sync)
- [Verified OK](#verified-ok)
- [Open (PO / device)](#open-po-device)
<!-- /toc -->
**Documentation index:** [README.md](README.md)
---
## Fixed today (prod BE)
- `config.php` **`remote_access` block** was missing — blocked real WireGuard connect credentials

View File

@@ -0,0 +1,216 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 8 0 R /F4 9 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
>>
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 762.0394 123.493 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 751.0394 160.389 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 740.0394 86.58904 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 10 0 R /Fit ] /Rect [ 45.68504 729.0394 114.157 740.0394 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
9 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
10 0 obj
<<
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
11 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R ] /Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
>>
endobj
12 0 obj
<<
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
13 0 obj
<<
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
14 0 obj
<<
/Contents 27 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 22 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
15 0 obj
<<
/Outlines 17 0 R /PageMode /UseNone /Pages 22 0 R /Type /Catalog
>>
endobj
16 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (VPN / Remote Access demo \204 gap report \(2026-06-13\)) /Trapped /False
>>
endobj
17 0 obj
<<
/Count 4 /First 18 0 R /Last 21 0 R /Type /Outlines
>>
endobj
18 0 obj
<<
/Dest [ 10 0 R /Fit ] /Next 19 0 R /Parent 17 0 R /Title (Fixed today \(prod BE\))
>>
endobj
19 0 obj
<<
/Dest [ 10 0 R /Fit ] /Next 20 0 R /Parent 17 0 R /Prev 18 0 R /Title (Fixed in repo \(awaiting BE sync\))
>>
endobj
20 0 obj
<<
/Dest [ 10 0 R /Fit ] /Next 21 0 R /Parent 17 0 R /Prev 19 0 R /Title (Verified OK)
>>
endobj
21 0 obj
<<
/Dest [ 10 0 R /Fit ] /Parent 17 0 R /Prev 20 0 R /Title (Open \(PO / device\))
>>
endobj
22 0 obj
<<
/Count 5 /Kids [ 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R ] /Type /Pages
>>
endobj
23 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 871
>>
stream
Gat=*gMWKG&:O:SbbGinS"770UYB%L.W(@djXF(qbW7%-OCFa&J):D7F/b/86M?;-4_N'acE`'fm=WCX49G<;_8S851@Q'0JdCj`iQ<,<)<'aN+c14b'qhr]Pe4flXI2n?EQNcN=&J>bd?;$A+akA6:>ED-i'l3#"-g>(`c;=4+XeU7f'W\qI_>OY([th,,Vq-Fccp2.JUN.u`\b@)muX"4,gG7]bU?C'W[>fZcHa4P"7I3V9ff?ShELf\:e5+3JY_KZK_F&YJ.oJQ!V9]8Q=rI%$fgP0M83kU^:a=AoD*!E2g`j3;2(N.6)h"SNmr_B\r]itTH'G6RkD\4cJFuY3/;KfR9d\Vk$_`HWI`%!jij?;%AWgOOFg:oHRr%d34!r=Ys-I6:>lr.H21$gkiOIW&d,&1&bc5bZBK[JQ*conf,6)78l90f[_tM=4BtH+OU-j0']qo8\Mc&%3]\qgN_l\'_]dSO:=n1&,jc2e$.Ns\`%YKlZ+o"[p#2)>DP'$K\0&pb\-eGp\F:0AYsYN4S;+5HnM;[1!^CI=m2isY*E4-<%c(l=)K,LR##Q"dMf:j*JDm)G"X&OI5+217FdjFb<U0;P?2u&eaio."1s@kur=.qM9G"A%NXXn)%*c(a4$&o,AXUblRfHbQE-_-/Tm:Sm/sH)l13!NOk.QQB_>I`3R5FW(H`4^4hqNrH9FGS3P1KDI@p9cE]=[a2l;l&7QS9p`Zu2OrBj+_C>B56Bmi(I<<fuLG6/=pZPhQ2K'h1,)\jE>"6<+<=5_oc`)[Kd!eWa&X;!@:Yjga,>)=.6p5#%^p$6:\D/^XVs.qk!GMpj!;oB*.)K&iAn@m@Y#&rGfdXlUC:q^WV>!2G$=)LfO~>endstream
endobj
24 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 500
>>
stream
Gatn":J]_!(l.SY'Ye/2_>(Fu38"a/]>K/B,2uS$aq>L!XdqJ'_RH/$<bR+,.YKA+;Z&T%oCF%*O,\n.g&U:>:8\4--s!!o,q(B#.7SeV['*.;9/FO#BWW/=GnS`JBuVqPPm!:rb&mocQ,jV*\/WD:dMmp#MG7W;4[Y$s0J:N*CBM=<j]uM(f:JX[5k1shs,-1T5NSNqb8m19%1-aA:[O(>dJ:A$`F@U*?fQO>3'"i!ahQEC3X!q,BMiY?gKA_::!gVcl6m[@I?i*[$$KmTdHp$.>k+5_E0*.sN/Qr`1Rt0tcaGT!"W,+Qk0sbY/g/HFI6f\hSFVp6If*TpeBUoX&!"=&&1qhu;lIoags3*i(R(oQo#KG]Agt5\GtO6:C+P%bBMI#[n$'7gZ,P:La8UVP(K3G#ZSeFFG@,N,T:3cT0$\Sd\8mSW<VJ\alpG`h'-a",rO<MjgWQ+`qfhp5*$mJ;/=qVn9G(i'['>GaXT%6foG8"7n$;~>endstream
endobj
25 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 139
>>
stream
Gar'`YmS?5&;9"kTAhM``PkDdF-fp`Q&W"d+=ILEo_f.2\OmWL@,P7/g.oDqYAb!JMpO^O:emFgZ@onCPq82Ws8G-_Tt6^R9oWtig34W3;D"0MP=sG_Q,?.RGJoD!mbh^0(JJ'S*<~>endstream
endobj
26 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 137
>>
stream
Gar'`YmLOu%#!S':[scdO`SgmmFhnNfa)j*5s`"IhnSYU[Z\E7%"&Zajn-an%&[XG#`[mI'eeX5F5#B](9((,pZH62[FH7Fl==&J^W3%Z>&B5W+giG*2MH_7OtUjbJt$1U9Q2!n~>endstream
endobj
27 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1927
>>
stream
Gatm<D,]Fb&H;+$k`9s96P:#`mO(uhjVF*rG.4W3.V_KYQo/E[1DA9<qsi:%!,;e,dOhLdR<e&bVn8ShNXZd'g"A/`!h>=EEFjdi^h<q\93`>,TfY=3I:TO*\fPRn4j+$/ZpbtXp$phb\'b_&O8/#M^Q5I4=jE()KY<Z9&._7R9P-@"BpfccW!sUH)CY]2h<WfmGLF%3kRNB3+.[lLZ8:e%hN2;n;HW9k&,Q'i*5gtVN;bSYJ(pli6e]7c+4/gf<mu-aDt&1^hJ+.bi0%]QF[1WGCcD9@NJ_Ql:`RLudC=5&s(AQ%&8G;EObKGs8=s9p9;DjP]K8<[@(50[G*u$Gpt?H%%r>PB/9Yk,5%Htu=*U'7X9Bf>nMs/Vaa.BDW`In'fhuKATg?JY>-BrU^!fLTpVdL]W.H<sMT9cT4-#s%6Gk+E&cC^QI86aM!EFqYTHTCJA?k862AM=XrGqP2,LMF7VGW!RXZ.o$b9#n'M3r$?TUp5"B7oCE-W;pK"U7h^$Mmr.5NK?akW]81TI$/RG^p@&Z"?lK?,0sCi=_dL0qiTCVM8p+!sVXc@,r&=hR[6^?TZb:X-1i.&udHnQOip_V4g/DcAJcMR"JS8rXX&X_K<=%\2,9OT(D^hXp3L>.OH[EgN#NEb_WN7M*Oo%"6J7Tr-9+.;]Jb'X*M8m/\Ch=i4,YIe'%>,F>r+Sr?:ep_bh#Q/3sZU,HgZM(,'F8EVbS<[s+1p4#m6VVGc2*#cV!$Kh5qi6cNj#g6^3#!1mb]O$CHs9mT5Wj'"j9Sg_V<$.[BAK$eUdI'S=jp%i6DGYnK<Vu;D"m;cuK_W7d4530;>jgh<`ggO$4bS\#\V2:;$=a;VpGZ_V\KTG];MQfUpo9_unV[PdEMX\rLLD0Lu#oZQf.<J;!pU+3+5\kkGGumDj,&C5"J\"2sJfUj@$c(3aTQm\\psc@)UNe[d)DR8p_R6&@lSVtKGQ:=B\Bjjhdn(++=:MmMA!SS4M,:b5gQ5I)8!+Cc?sRK^ZeLL?Ke0n1r_i;Nf>qJgA)pPsD'gE^(lcub=tOgB[UK[7i'</7=6O'>cd!/k`[nmWXHaC=#qSIoUSkD::Js2+QJ((\oEgh^.?-6Q4eGf,jG?nH6bnn@q8=,9h#R+o.%fe'h1,)Y9p4_>!oX'5CKU].Mgc0enVj?-Y*93T:=:haKP[+&2snVY'YsYZT9ehKYUIVFG_Vd5PQpm7U/;p^ndJ@Z1hO<#+RZkBjUW^6N$B_,I]Xa53W6k_0(o]B8<=J1]-kDR0G-Fu]20+K'1HNaj!,.VIeLtnLNU(5QLqKIl.LmKnL;rcqrIf5Bcn$(B4Wrk7bI/%"r63'0.YtmjF:T;l7'WF)feBF&SnW'r'4oAHWpOF[/JCR\JA,(ihf%Um&lQgpjfsd/4IX'gXj&r/NObP>R2K?*`G0f7!t"2oO^#jkDNdUW'\"3g]&[dSKn6b(Y3SZcj]nC7-QfL=9\h\QLGI1>Udlh*n>6m_E)O;VP^1D@lI00I*"c[+[',W.o2YDe+;,ng:0&N78Cs/N_0;^p-(ZbgXA'3Wt^KN/ql$89nJ1fcre;M1&=hNkF5"M_f%:UU59XW"dPS.5)e?!fcaL9@VlM'K&.Gr-JKt.="@E]*<_m#%Pp+E/jc^N]tl'$^;_u9%#814Th=R''^:"-l[!4#iXd!_T3s=JiTFiUfbJV6:>\Tu"1kuF#$?h([_Q=$42EPZ8aiQ^Xba.tQqUB@;JZoM0-tP;eNA8<EY#,1&bropR[KkijC^Y(GF`WSdNZY2"'.8<@FiDdJIcPY>].91*7h4)B,ml`D?""1KO+2p*8J?^P:UPJb1@RuPTm!Q,3p%5X4;)LWp.0@d41"=+d2!u2=>pM,JIsJILD%J3R$6aVkga"nG'k$YNZ_4mC0q%LhGK0bjLpT9]NgL"%W@np^/mR~>endstream
endobj
xref
0 28
0000000000 65535 f
0000000061 00000 n
0000000122 00000 n
0000000229 00000 n
0000000341 00000 n
0000000488 00000 n
0000000635 00000 n
0000000783 00000 n
0000000930 00000 n
0000001045 00000 n
0000001150 00000 n
0000001356 00000 n
0000001598 00000 n
0000001804 00000 n
0000002010 00000 n
0000002216 00000 n
0000002303 00000 n
0000002633 00000 n
0000002707 00000 n
0000002812 00000 n
0000002941 00000 n
0000003047 00000 n
0000003149 00000 n
0000003238 00000 n
0000004200 00000 n
0000004791 00000 n
0000005021 00000 n
0000005249 00000 n
trailer
<<
/ID
[<6d1e4602f418374dc8e08d255d1c650c><6d1e4602f418374dc8e08d255d1c650c>]
% ReportLab generated PDF document -- digest (opensource)
/Info 16 0 R
/Root 15 0 R
/Size 28
>>
startxref
7268
%%EOF

View File

@@ -1,5 +1,17 @@
# Media service (SFU / MCU) — AI deployment prerequisites
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-12 |
| Last modification date | 2026-06-12 |
| Co-authored | |
| Severity | medium |
<!-- doc-meta:end -->
**Document type:** Requirements / handoff (pre-SPEC)
**Date:** 2026-06-12
**Audience:** PO / sysop → AI agent for full deploy + tune on fresh Alpine HVM(s)
@@ -13,6 +25,7 @@
---
\newpage
## Table of contents
<!-- toc -->
@@ -29,6 +42,7 @@
- [11. PO checklist (copy before handoff)](#11-po-checklist-copy-before-handoff)
- [12. Changelog](#12-changelog)
<!-- /toc -->
\newpage
---

View File

@@ -21,6 +21,7 @@ from reportlab.platypus import (
Table,
TableStyle,
)
from page_footer import NumberedCanvas
ROOT = Path(__file__).resolve().parents[2]
BUILD = Path(__file__).resolve().parent
@@ -369,7 +370,7 @@ def build_pdf() -> None:
title="Android Cast — Next-gen egress review",
author="Android Cast project",
)
doc.build(story)
doc.build(story, canvasmaker=NumberedCanvas)
print(f"Wrote {OUT_PDF}")

View File

@@ -30,6 +30,7 @@ from reportlab.platypus import (
Table,
TableStyle,
)
from page_footer import NumberedCanvas
ROOT = Path(__file__).resolve().parents[2]
BUILD = Path(__file__).resolve().parent
@@ -320,7 +321,7 @@ def build_pdf() -> None:
topMargin=2 * cm,
bottomMargin=2 * cm,
)
doc.build(story)
doc.build(story, canvasmaker=NumberedCanvas)
print(f"Wrote {OUT_PDF}")

View File

@@ -11,6 +11,7 @@ from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet
from reportlab.lib.units import cm
from reportlab.platypus import Paragraph, SimpleDocTemplate, Spacer, Table, TableStyle
from page_footer import NumberedCanvas
ROOT = Path(__file__).resolve().parents[2]
OUT_PDF = ROOT / "docs" / "GRAFANA_vs_others_graphvis_pivot.pdf"
@@ -207,7 +208,7 @@ def build_pdf() -> None:
title="Grafana vs Others GraphVis Pivot",
author="Android Cast project",
)
doc.build(story)
doc.build(story, canvasmaker=NumberedCanvas)
print(f"Wrote {OUT_PDF}")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

View File

@@ -27,6 +27,7 @@ from mermaid_render import (
diagram_flowables,
ensure_diagram_caption_style,
)
from page_footer import NumberedCanvas
def _xml(text: str) -> str:
@@ -173,6 +174,44 @@ def build_pdf_from_markdown(
story.append(Paragraph(_inline_md(doc_subtitle), small))
story.append(Spacer(1, 0.15 * cm))
# Optional first-page metadata table (doc template block)
meta_start = next((i for i, ln in enumerate(lines) if ln.strip() == "<!-- doc-meta:start -->"), None)
meta_end = next((i for i, ln in enumerate(lines) if ln.strip() == "<!-- doc-meta:end -->"), None)
if meta_start is not None and meta_end is not None and meta_end > meta_start:
meta_rows = [ln for ln in lines[meta_start + 1 : meta_end] if ln.strip().startswith("|")]
if len(meta_rows) >= 2:
headers = _parse_table_row(meta_rows[0])
data = [[_cell(h, tbl_head) for h in headers]]
for row_line in meta_rows[2:]: # skip separator row
row = _parse_table_row(row_line)
padded = row + [""] * (len(headers) - len(row))
data.append([_cell(c, tbl_body) for c in padded[: len(headers)]])
if data and len(headers) > 0:
col_widths = [5.2 * cm, 11.0 * cm] if len(headers) == 2 else [(16.2 * cm) / len(headers)] * len(headers)
meta_tbl = Table(data, colWidths=col_widths)
meta_tbl.setStyle(
TableStyle(
[
("BACKGROUND", (0, 0), (-1, 0), colors.HexColor("#1565C0")),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, -1), 8),
("VALIGN", (0, 0), (-1, -1), "TOP"),
("GRID", (0, 0), (-1, -1), 0.5, colors.lightgrey),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.white, colors.HexColor("#F5F5F5")]),
("LEFTPADDING", (0, 0), (-1, -1), 4),
("RIGHTPADDING", (0, 0), (-1, -1), 4),
("TOPPADDING", (0, 0), (-1, -1), 3),
("BOTTOMPADDING", (0, 0), (-1, -1), 3),
]
)
)
story.append(meta_tbl)
story.append(Spacer(1, 0.2 * cm))
# Page 1: title + metadata, page 2: TOC
story.append(PageBreak())
# Table of contents (clickable internal links)
story.append(Paragraph("Table of contents", toc_title))
for level, title, slug in headings:
@@ -219,6 +258,18 @@ def build_pdf_from_markdown(
if line.strip().startswith("**Documentation index:**"):
i += 1
continue
if line.strip() == "<!-- doc-meta:start -->":
while i < len(lines) and lines[i].strip() != "<!-- doc-meta:end -->":
i += 1
i += 1
continue
if line.strip() == "<!-- doc-meta:end -->":
i += 1
continue
if line.strip() == "\\newpage":
story.append(PageBreak())
i += 1
continue
if line.strip().startswith("```"):
if in_code:
@@ -338,5 +389,5 @@ def build_pdf_from_markdown(
title=doc_title,
author="Android Cast project",
)
doc.build(story)
doc.build(story, canvasmaker=NumberedCanvas)
print(f"Wrote {out_pdf} ({len(headings)} TOC entries from markdown headings)")

View File

@@ -0,0 +1,36 @@
"""Shared PDF footer canvas: bottom-right `current / total` page counter."""
from __future__ import annotations
from reportlab.lib import colors
from reportlab.pdfgen import canvas
class NumberedCanvas(canvas.Canvas):
"""Canvas that renders `N / total` footer on every page."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._saved_page_states: list[dict] = []
def showPage(self) -> None:
self._saved_page_states.append(dict(self.__dict__))
self._startPage()
def save(self) -> None:
total = len(self._saved_page_states)
for state in self._saved_page_states:
self.__dict__.update(state)
self._draw_page_footer(total)
super().showPage()
super().save()
def _draw_page_footer(self, total_pages: int) -> None:
self.saveState()
self.setFillColor(colors.HexColor("#BDBDBD"))
self.setFont("Helvetica", 8)
label = f"{self._pageNumber} / {total_pages}"
x = self._pagesize[0] - 1.5 * 28.3465 # ~1.5 cm from right
y = 0.9 * 28.3465 # ~0.9 cm from bottom
self.drawRightString(x, y, label)
self.restoreState()

View File

@@ -0,0 +1,157 @@
VOD and restreaming service
R0-pre draft
severity: medium
milestone: V.2x demo
[AI comment]: Strong brainstorming capture — codec matrix, nginx/ffmpeg snippets, and UI intent are all useful pre-DR material. Before DR/spec split, add one paragraph up front: **product boundary** (standalone “media hub” vs extension of android cast ingest), **alpha vs post-alpha** (scaling spec already slots F2 transcode + F9 3rd-party streaming as post-alpha), and **success criteria** for the first demo (e.g. “one m3u8 in → HLS out + BE config row + web play”).
Problem statement:
- near realtime restreaming service
[AI comment]: Define “near realtime” numerically for this doc — e.g. glass-to-glass target (3 s? 10 s? 30 s?) and whether that applies to **live ingest** only. ffmpeg transcode + HLS segment duration (often 26 s) + player buffer usually means **not** sub-second; that is fine if labeled **low-latency VOD/restream**, not WebRTC-class cast.
[foxx answers]: "near realtime" means from 3s delay to infinite (in case of VOD); refine better: let's say 2-10seconds delay from start processing to final destination delivery
- sources: raw audio/video (h264, m4a, mp4, mkv), OBS, VLC, ffmpeg, live and VOD
[AI comment]: Good source list. Add explicit **ingest protocols**: file/URL pull, RTMP push (OBS), optional SRT/RTSP later. Cross-link Janus `:8089` ([INFRA.md](../INFRA.md)) — is live phone cast ever an ingest here, or only file/RTMP/m3u?
[foxx answers]: explicit ingest protocols would be defined as:
- file/URL pull
- OBS RTMP
others to come later (they sill be supported under the hood but not exposed). live phone cast is out of this document, we'll use other technologies for that i suppose.
Requirements:
- limited CPU and RAM on transcode VM
[AI comment]: Tie to [specs/20100612_1_scaling.md](../specs/20100612_1_scaling.md) §12.2 / P7 — transcode must not share the primary DB VM. Document **concurrency model**: N parallel jobs × preset (e.g. 1080p medium) → vCPU/RAM budget; what happens when queue is full (reject, shed resolution, delay).
[foxx answers]: transcode may share DB VM, see no reason not to do it, but the way we expose the DB is debatable; meaning, using DB just via OpenAPI looks way too slow, but exposing the DB as we use it today looks risky and improper. although, MariaDB can be exposed by socket listening which looks like a compromise for demo, I do believe that the real cloud providers have much better and flexible solution to expose a single DB interface for all our service and we don't really care what's behind the hood there and how many terabytes distributed somewhere across the world we're using - we pay money for DB service, our job is just to utilize/integrate its interface. about transcoding - I don't really understand what's the reference between transcoding and db usage. We just need to record some metadata, not so big amount of; like who's the owner of that video, processing pipeline parameters and so on, shareable between different VMs the same way as we'll use other kind of information. if you think otherwise, please share your vision.
- CDN, storage and bandwidth for production
[AI comment]: Needs a **non-goals** line for R0: “no multi-region CDN in v1” vs “must use existing FE/BFF + object store”. Name candidate backends (S3-compatible, local NFS on `be-media`, or FE static) and **egress** ownership (FE vs media worker).[foxx answers]: * no multi-region CDN in v1, local NFS on `BE-media` for feature alpha (demo) release; not really intended to be full-featured, we just need lots of disk space to store videos (~200Gb f0r demo would be enough)
- m3u and youtube as input sources for demo
[AI comment]: **Legal/ToS**: yt-dlp + YouTube as demo input is fine for internal lab; flag as **non-prod** or rights-cleared content only for anything public/commercial. DR should separate “URL ingest” from “YouTube-specific adapter”.
[foxx answers]: good point. any ways to legally grab youtube videos? tagging it as **non-prod** for now, let's see what can we do. rephrasing in general words: not exactly youtube, but any video source that provides pull-alike link (together with access parameters and, probably, in some rare cases - cookies) is acceptable, at least, for lab testing or demo, unless we'll close the gap with legal notes. the mindset there is - better to have the feature and keep it disabled rather not to have it but suddenly being requested to implement it just yesterday; thus we need to hurry up and whole infra is almost ready, we don't have to do any refactoring, etc.
- m3u as output for demo
[AI comment]: Clarify m3u vs m3u8 — playlist **master** vs **media** playlist, and whether output is **HLS** (`.m3u8` + `.ts`/fMP4) served by nginx or plain redirect URLs.
[foxx answers]: see the examples - assuming .m3u8+ts as the most easier way to deliver the content, but AFAIK there should be a master playlist anyway, no? this looks like the implementation details, not a design, correct me if i'm wrong
- nginx and ffmpeg as core
[AI comment]: Reasonable for Alpine lab. Note **nginx-rtmp-module** maintenance/long-term: acceptable for demo; DR should compare **nginx-rtmp + ffmpeg** vs **ffmpeg-only** (publish HLS to disk/object store without RTMP hop) vs dedicated packager (e.g. MediaMTX, SRS) for prod.
[foxx answers]: this is what i'm expecting from you - to close the gaps like that. i don't have deep enough knowledge in that area.
- watermarks
[AI comment]: Distinguish **static burn-in** (ffmpeg overlay, cheap) vs **per-session forensic** (section below). R0 should scope static/logo + optional text; forensic = later phase.
[foxx answers]: totally agree. I will even simplify the things:
Milestone | Protection feature
-----------------------------------------------------------------------------------------------------------
V.2x demo (unstable) | No watermarks but keeping this feature in mind to be implemented in near future
V.2x alpha | Assuming we already published V.1x releases - basic watermarking as a PoC (static burn-in)
V.2x beta | Introducing per-session forensic watermarking
V.2x | All alpha watermarking features plus beta (per-session) as trial feature
-----------------------------------------------------------------------------------------------------------
- stream protection
[AI comment]: Large surface — recommend **phased DR**: (1) signed URLs + short TTL, (2) session-bound tokens via existing BE auth, (3) per-user watermark, (4) ML pirate detection. Do not block core pipeline on (3)(4).
[foxx comments]: agree, each method deserves its own design. now, since it doesn't require any implementation before V2.x alpha stage. i believe there we'll have feature-rich documentation for stream protection methods we'd like to see.
- parallel disk recording
[AI comment]: Add retention, quota, encryption-at-rest, and whether recordings are **mezzanine** (pre-CDN) or **compliance archive**. Who triggers delete?
[foxx comments]: let's define some details, although, they might change due to experiments and probably the values will be incorrectly established as for now, but:
Key | Value (alpha, free of charge) | Value (alpha, pay as you go) | Value (alpha, subscription paid service emulation)
-----------------------------------------------------------------------------------------------------------------------------------------------------
retention time: | 5 days | per-month payments, so 1 mo | per-subscription payments, may be up to infinite
quota: | 3Gb | 50Gb/mo, infinite(golden payments) | infinite till subsription is active
encryption-at-rest | n/a | ? | ?
pre-CDN or... | not sure I get the question correctly, I think there shouldn't be something before CDN
remove trigger | cron+script each 5 days | cron+script, based on pay type | cron+script, based on subscription/pay type
-----------------------------------------------------------------------------------------------------------------------------------------------------
- BE UI integration, standalone transcode service later
[AI comment]: Good split. Specify **control plane** (PHP/DB: pipeline defs, schedules, ACL) vs **data plane** (ffmpeg workers, nginx). Matches scaling “media worker pool” pattern.
control plane: UI/UX similar page to what we have today, but it will be a bit updated after RBAC review. features:
Type | Value (dev/demo) | Value (staging/prod, v.2x)
dev lang PHP PHP
web FE nginx nginx
DB baseline basic metadata and accounting storage (RBAC-linked) full metadata, accounting info (RBAC-linked), shorthand recording key features, etc.
DB type mariadb cloud providers distributed DB
DB type mariadb cloud providers distributed DB
Data plane
UI/UX:
- pipeline config in DB
[AI comment]: Align schema sketch with crash-reporter DB patterns (SQLite/MariaDB?) and whether pipeline state lives in same cluster or dedicated `be-media` DB.
- probe input, select output
[AI comment]: ffprobe JSON → normalized “source profile” table (resolution, codecs, fps, audio channels). Document validation errors for unsupported combos.
- Nuevo Video.js player
[AI comment]: Confirm license (commercial use) and whether Nuevo stays or **Video.js + standard plugins** for alpha. Mobile: native ExoPlayer path vs WebView player — one line each.
- mobile and web playback
[AI comment]: HLS on Android/iOS may need **LL-HLS** or accept standard HLS latency; note **Safari** native HLS vs Chrome MSE.
- popup announcements
[AI comment]: Seems orthogonal to VOD/restream — move to separate “catalog/marketing” DR or mark optional so core media DR stays focused.
Research:
- ffmpeg and nginx on Alpine, 8vcpu, 16gb ram
[AI comment]: Run a **capacity table** (even estimates): e.g. 1× 1080p30 transcode ~X vCPU; max concurrent jobs on 8 vCPU; RAM per ffmpeg (~500MB2GB). Without this, “limited CPU” requirement is not testable.
- alternatives: cvlc, mediapipe, janus
[AI comment]: **Janus** = WebRTC SFU (F1), not a VOD packager — good for live cast, different from HLS restream. **MediaPipe** = analysis/ML, not a replacement for ffmpeg transcode. **cvlc** = playback/relay edge cases. Keep ffmpeg+nginx as primary; Janus cross-ref for “phone as live source” only.
- ffmpeg build: libx264, libfdk-aac, overlay, ...
[AI comment]: **libfdk-aac is nonfree** — distribution and store policy risk for a commercial app/service. DR must pick: (a) build `--enable-nonfree` for internal lab only, (b) **aac** (native/ffmpeg) or **libopus** for prod, (c) ship codecs only server-side. Document in [COMMERCIAL.md](../COMMERCIAL.md) / license appendix.
- yt-dlp for youtube
[AI comment]: Pin version, update cadence, and failure modes (bot detection, format churn). Wrapper service with timeouts, not shell from PHP directly.
- FFdynamic
[AI comment]: Worth a spike doc: dynamic ffmpeg graphs vs static CLI. If rejected, say why (operational debuggability).
Limitations:
- no dash in Alpine ffmpeg, side load needed
[AI comment]: For R0 **non-goal**: DASH unless side-loaded. **HLS-only** output is enough for demo + most mobile/web if documented. If LL-HLS needed later, separate spec.
How:
- nginx config (rtmp, hls, exec ffmpeg on publish, ...)
[AI comment]: Examples are valuable. Production DR should replace hardcoded IPs (`192.168.122.40`) with templated deploy vars. **exec ffmpeg on publish** couples nginx lifecycle to transcode — prefer **supervisor/systemd** or job queue driving ffmpeg, nginx only serves HLS/RTMP.
- ffmpeg tee + unix pipe multistream
[AI comment]: Clever for 1→N outputs; document **failure modes** (one broken pipe stalls tee?), **ordering** (start nginx-rtmp before publisher), and ops runbook. Simpler v1: single output HLS to disk, add tee in v2.
- 1080p encoding presets
[AI comment]: Good defaults. Add **audio-only** and **copy video + transcode audio** paths to save CPU when source is already H.264.
- Nuevo player HTML fragment
[AI comment]: Fine for spike. Spec should reference **where** this mounts in BE (new vhost vs `apps.f0xx.org` path) — [INFRA.md](../INFRA.md): public apps on FE→BE `:80`, not `:8089`.
Stream protection:
- token/key exchange
[AI comment]: Reuse existing **session/JWT** patterns from 2FA/auth flow where possible; avoid a second ad-hoc crypto system. Short-lived **HLS segment URL signing** (CDN or nginx `secure_link`) is the usual pattern.
- per-user watermarking
[AI comment]: Viable via ffmpeg drawtext/overlay per job; cost = **one transcode per viewer** unless watermark is client-side (weak). DR: forensic vs “good enough” deterrent.
- pirate detection (forensic watermarks, ML vision)
[AI comment]: Mark **R2+ / research** — high cost, false positives, legal workflow. “AI questionable” is fair; do not merge into R0 acceptance criteria.
Open questions:
(awaiting Rev.R0)
[AI comment]: Suggested questions to resolve before DR:
Q1. Same product as android cast or separate “f0xx media” service?
Q2. First milestone: live RTMP in, HLS out, or file/VOD only?
Q3. AuthZ: public unlisted links, logged-in only, or paywall (F5)?
Q4. Codec policy for prod without libfdk-aac?
Q5. Object store vs local disk for HLS segments in prod?
Q6. Observability: per-pipeline metrics (ffmpeg exit code, segment age, bitrate) — Prometheus/Grafana vs logs only?
Q7. Relationship to scaling **F9** (3rd-party ingest) — is this doc the F9 implementation parent?
[AI comment]: **Suggested DR/spec split** when promoting:
- DR: architecture choice (control vs data plane, HLS-only, worker sizing, security phases, nonfree codec decision).
- SPEC-1: pipeline model + DB + BE API + ffprobe.
- SPEC-2: worker runtime (ffmpeg graphs, nginx-rtmp or alternative, deploy on Alpine).
- SPEC-3 (optional/post-alpha): stream protection + forensic watermarking.
[AI comment]: **Global verdict** — Yes, the draft is **useful**: it captures real config experiments, constraints (Alpine, CPU), and UI intent. It is **not yet** “well enough described” for implementation without the clarifications above (latency definition, prod codec policy, legal ingest, capacity math, service boundaries, phased security). Recommend **Rev.R0** = answer open questions + trim orthogonal bits (popup announcements) + one demo milestone; then convert to DR + 12 specs aligned with `20100612_1_scaling` F2/F9 slots.

View File

@@ -0,0 +1,31 @@
RSSH routed egress (dev-only VPN over SSH) — source draft
R0-pre
severity: low
state: postponed (finish WireGuard track first)
Problem:
- PO asked whether RSSH can get a system-wide VPN provider that routes part or all device traffic through the RSSH tunnel (split or full), dev settings only.
- Today RSSH is reverse SSH (-R) for operator → device shell/SFTP; no VpnService, no WAN egress change.
- WireGuard already supports hub-only / full-tunnel + all-apps / this-app-only via RemoteAccessVpnRouting.
Why consider RSSH routing at all:
- TCP 443 only path (no UDP WG) in hostile networks.
- Single transport for alpha if WG UDP blocked.
Why defer:
- Alpha RSSH goal = no VPN permission, no key icon, file/shell access.
- WG full-tunnel solves "egress via hub" for lab now.
- RSSH+VPN is new subsystem (SOCKS or tun2socks + VpnService + bastion NAT), not a setting.
Options sketched:
A) Use WG full-tunnel (existing) — recommended near-term for routing.
B) RSSH + ssh -D SOCKS + VpnService + tun2socks — dev experimental.
C) ssh -w tun both ends — heavy, skip.
D) Hybrid: WG packets + RSSH operator — already in proposal doc.
DR should decide: postpone until WG E2E closed; if revived, dev-only sub-mode under RSSH.
Open for PO:
- Is TCP-only routing worth duplicating WG?
- Accept VPN icon/consent again for RSSH-routed mode?
- Bastion egress NAT policy (Minsk) for dev traffic?

View File

@@ -1,5 +1,24 @@
# URL shortener service — specification
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-11 |
| Last modification date | 2026-06-11 |
| Co-authored | |
| Severity | medium |
| State | scheduled |
| Document type | spec |
<!-- doc-meta:end -->
\newpage
\newpage
---
**Document type:** SPEC
**Source draft:** [docs/drafts/20100611_3_url_shortener.txt](../drafts/20100611_3_url_shortener.txt)
**Design review:** [docs/DRs/20100611_3_url_shortener.md](../DRs/20100611_3_url_shortener.md)
@@ -17,6 +36,17 @@
---
---
---
---
---
---
## Table of contents

View File

@@ -2,7 +2,7 @@
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 35 0 R /F4 37 0 R /F5 38 0 R /F6 41 0 R
/F1 2 0 R /F2 3 0 R /F3 35 0 R /F4 36 0 R /F5 37 0 R /F6 39 0 R
>>
endobj
2 0 obj
@@ -17,157 +17,157 @@ endobj
endobj
4 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 716.2874 84.37304 727.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 762.0394 84.37304 773.0394 ] /Subtype /Link /Type /Annot
>>
endobj
5 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 705.2874 77.26104 716.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 751.0394 77.26104 762.0394 ] /Subtype /Link /Type /Annot
>>
endobj
6 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 694.2874 104.373 705.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 740.0394 104.373 751.0394 ] /Subtype /Link /Type /Annot
>>
endobj
7 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 683.8499 88.44754 693.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 729.6019 88.44754 739.6019 ] /Subtype /Link /Type /Annot
>>
endobj
8 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 673.8499 95.54254 683.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 719.6019 95.54254 729.6019 ] /Subtype /Link /Type /Annot
>>
endobj
9 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 663.2874 97.26104 674.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 709.0394 97.26104 720.0394 ] /Subtype /Link /Type /Annot
>>
endobj
10 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 652.2874 138.629 663.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 698.0394 138.629 709.0394 ] /Subtype /Link /Type /Annot
>>
endobj
11 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 45.68504 641.2874 91.03704 652.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 687.0394 91.03704 698.0394 ] /Subtype /Link /Type /Annot
>>
endobj
12 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 59.68504 630.8499 125.55 640.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 676.6019 125.55 686.6019 ] /Subtype /Link /Type /Annot
>>
endobj
13 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 59.68504 620.8499 130.5525 630.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 666.6019 130.5525 676.6019 ] /Subtype /Link /Type /Annot
>>
endobj
14 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 42 0 R /Fit ] /Rect [ 59.68504 610.8499 121.7925 620.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 656.6019 121.7925 666.6019 ] /Subtype /Link /Type /Annot
>>
endobj
15 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 59.68504 600.8499 133.47 610.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 646.6019 133.47 656.6019 ] /Subtype /Link /Type /Annot
>>
endobj
16 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 59.68504 590.8499 83.44504 600.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 636.6019 83.44504 646.6019 ] /Subtype /Link /Type /Annot
>>
endobj
17 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 45.68504 580.2874 174.181 591.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 626.0394 174.181 637.0394 ] /Subtype /Link /Type /Annot
>>
endobj
18 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 45.68504 569.2874 105.709 580.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 615.0394 105.709 626.0394 ] /Subtype /Link /Type /Annot
>>
endobj
19 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 45.68504 558.2874 119.053 569.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 604.0394 119.053 615.0394 ] /Subtype /Link /Type /Annot
>>
endobj
20 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 43 0 R /Fit ] /Rect [ 59.68504 547.8499 87.19504 557.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 593.6019 87.19504 603.6019 ] /Subtype /Link /Type /Annot
>>
endobj
21 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 59.68504 537.8499 120.135 547.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 583.6019 120.135 593.6019 ] /Subtype /Link /Type /Annot
>>
endobj
22 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 59.68504 527.8499 112.2075 537.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 573.6019 112.2075 583.6019 ] /Subtype /Link /Type /Annot
>>
endobj
23 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 59.68504 517.8499 102.63 527.8499 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 59.68504 563.6019 102.63 573.6019 ] /Subtype /Link /Type /Annot
>>
endobj
24 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 45.68504 507.2874 94.59704 518.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 553.0394 94.59704 564.0394 ] /Subtype /Link /Type /Annot
>>
endobj
25 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 44 0 R /Fit ] /Rect [ 45.68504 496.2874 91.49304 507.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 542.0394 91.49304 553.0394 ] /Subtype /Link /Type /Annot
>>
endobj
26 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 485.2874 101.709 496.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 531.0394 101.709 542.0394 ] /Subtype /Link /Type /Annot
>>
endobj
27 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 474.2874 87.92504 485.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 520.0394 87.92504 531.0394 ] /Subtype /Link /Type /Annot
>>
endobj
28 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 463.2874 141.269 474.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 509.0394 141.269 520.0394 ] /Subtype /Link /Type /Annot
>>
endobj
29 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 452.2874 78.58904 463.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 498.0394 78.58904 509.0394 ] /Subtype /Link /Type /Annot
>>
endobj
30 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 441.2874 120.389 452.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 487.0394 120.389 498.0394 ] /Subtype /Link /Type /Annot
>>
endobj
31 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 45 0 R /Fit ] /Rect [ 45.68504 430.2874 105.717 441.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 476.0394 105.717 487.0394 ] /Subtype /Link /Type /Annot
>>
endobj
32 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 46 0 R /Fit ] /Rect [ 45.68504 419.2874 129.269 430.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 465.0394 129.269 476.0394 ] /Subtype /Link /Type /Annot
>>
endobj
33 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 46 0 R /Fit ] /Rect [ 45.68504 408.2874 161.741 419.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 454.0394 161.741 465.0394 ] /Subtype /Link /Type /Annot
>>
endobj
34 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 46 0 R /Fit ] /Rect [ 45.68504 397.2874 91.92504 408.2874 ] /Subtype /Link /Type /Annot
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 45.68504 443.0394 91.92504 454.0394 ] /Subtype /Link /Type /Annot
>>
endobj
35 0 obj
@@ -177,35 +177,40 @@ endobj
endobj
36 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R
24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R
34 0 R ] /Contents 82 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
>> /Type /Page
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
37 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
38 0 obj
<<
/BaseFont /Symbol /Name /F5 /Subtype /Type1 /Type /Font
/Border [ 0 0 0 ] /Contents () /Dest [ 40 0 R /Fit ] /Rect [ 387.5218 95.58819 399.1978 103.9882 ] /Subtype /Link /Type /Annot
>>
endobj
39 0 obj
<<
/Border [ 0 0 0 ] /Contents () /Dest [ 46 0 R /Fit ] /Rect [ 387.5218 109.7614 399.1978 118.1614 ] /Subtype /Link /Type /Annot
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
40 0 obj
<<
/Annots [ 39 0 R ] /Contents 83 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources <<
/Contents 85 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
41 0 obj
<<
/Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R
14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R
24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R
34 0 R ] /Contents 86 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0
/Trans <<
@@ -213,14 +218,9 @@ endobj
>> /Type /Page
>>
endobj
41 0 obj
<<
/BaseFont /ZapfDingbats /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
42 0 obj
<<
/Contents 84 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources <<
/Contents 87 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -230,7 +230,7 @@ endobj
endobj
43 0 obj
<<
/Contents 85 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources <<
/Contents 88 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -240,17 +240,17 @@ endobj
endobj
44 0 obj
<<
/Contents 86 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources <<
/Annots [ 38 0 R ] /Contents 89 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>> /Rotate 0
/Trans <<
>>
/Type /Page
>> /Type /Page
>>
endobj
45 0 obj
<<
/Contents 87 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources <<
/Contents 90 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -260,7 +260,7 @@ endobj
endobj
46 0 obj
<<
/Contents 88 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 81 0 R /Resources <<
/Contents 91 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
@@ -270,234 +270,285 @@ endobj
endobj
47 0 obj
<<
/Outlines 49 0 R /PageMode /UseNone /Pages 81 0 R /Type /Catalog
/Contents 92 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
48 0 obj
<<
/Author (Android Cast project) /CreationDate (D:20260612190939+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260612190939+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (URL shortener service \204 specification) /Trapped /False
/Contents 93 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
49 0 obj
<<
/Count 34 /First 50 0 R /Last 80 0 R /Type /Outlines
/Contents 94 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 84 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
50 0 obj
<<
/Dest [ 40 0 R /Fit ] /Next 51 0 R /Parent 49 0 R /Title (1. Purpose)
/Outlines 52 0 R /PageMode /UseNone /Pages 84 0 R /Type /Catalog
>>
endobj
51 0 obj
<<
/Dest [ 40 0 R /Fit ] /Next 52 0 R /Parent 49 0 R /Prev 50 0 R /Title (2. Scope)
/Author (Android Cast project) /CreationDate (D:20260616121124+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260616121124+02'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (URL shortener service \204 specification) /Trapped /False
>>
endobj
52 0 obj
<<
/Count 2 /Dest [ 40 0 R /Fit ] /First 53 0 R /Last 54 0 R /Next 55 0 R /Parent 49 0 R
/Prev 51 0 R /Title (3. Requirements)
/Count 34 /First 53 0 R /Last 83 0 R /Type /Outlines
>>
endobj
53 0 obj
<<
/Dest [ 40 0 R /Fit ] /Next 54 0 R /Parent 52 0 R /Title (3.1 Must)
/Dest [ 40 0 R /Fit ] /Next 54 0 R /Parent 52 0 R /Title (1. Purpose)
>>
endobj
54 0 obj
<<
/Dest [ 40 0 R /Fit ] /Parent 52 0 R /Prev 53 0 R /Title (3.2 Should)
/Dest [ 40 0 R /Fit ] /Next 55 0 R /Parent 52 0 R /Prev 53 0 R /Title (2. Scope)
>>
endobj
55 0 obj
<<
/Dest [ 40 0 R /Fit ] /Next 56 0 R /Parent 49 0 R /Prev 52 0 R /Title (4. Architecture)
/Count 2 /Dest [ 40 0 R /Fit ] /First 56 0 R /Last 57 0 R /Next 58 0 R /Parent 52 0 R
/Prev 54 0 R /Title (3. Requirements)
>>
endobj
56 0 obj
<<
/Dest [ 42 0 R /Fit ] /Next 57 0 R /Parent 49 0 R /Prev 55 0 R /Title (5. Authentication and trust)
/Dest [ 40 0 R /Fit ] /Next 57 0 R /Parent 55 0 R /Title (3.1 Must)
>>
endobj
57 0 obj
<<
/Count 5 /Dest [ 42 0 R /Fit ] /First 58 0 R /Last 62 0 R /Next 63 0 R /Parent 49 0 R
/Prev 56 0 R /Title (6. REST API)
/Dest [ 40 0 R /Fit ] /Parent 55 0 R /Prev 56 0 R /Title (3.2 Should)
>>
endobj
58 0 obj
<<
/Dest [ 42 0 R /Fit ] /Next 59 0 R /Parent 57 0 R /Title (6.1 Shorten \204 GET)
/Dest [ 40 0 R /Fit ] /Next 59 0 R /Parent 52 0 R /Prev 55 0 R /Title (4. Architecture)
>>
endobj
59 0 obj
<<
/Dest [ 42 0 R /Fit ] /Next 60 0 R /Parent 57 0 R /Prev 58 0 R /Title (6.2 Shorten \204 POST)
/Dest [ 40 0 R /Fit ] /Next 60 0 R /Parent 52 0 R /Prev 58 0 R /Title (5. Authentication and trust)
>>
endobj
60 0 obj
<<
/Dest [ 42 0 R /Fit ] /Next 61 0 R /Parent 57 0 R /Prev 59 0 R /Title (6.3 Error response)
/Count 5 /Dest [ 40 0 R /Fit ] /First 61 0 R /Last 65 0 R /Next 66 0 R /Parent 52 0 R
/Prev 59 0 R /Title (6. REST API)
>>
endobj
61 0 obj
<<
/Dest [ 43 0 R /Fit ] /Next 62 0 R /Parent 57 0 R /Prev 60 0 R /Title (6.4 Success response)
/Dest [ 40 0 R /Fit ] /Next 62 0 R /Parent 60 0 R /Title (6.1 Shorten \204 GET)
>>
endobj
62 0 obj
<<
/Dest [ 43 0 R /Fit ] /Parent 57 0 R /Prev 61 0 R /Title (6.5 QR)
/Dest [ 40 0 R /Fit ] /Next 63 0 R /Parent 60 0 R /Prev 61 0 R /Title (6.2 Shorten \204 POST)
>>
endobj
63 0 obj
<<
/Dest [ 43 0 R /Fit ] /Next 64 0 R /Parent 49 0 R /Prev 57 0 R /Title (7. Redirect and permalink behaviour)
/Dest [ 40 0 R /Fit ] /Next 64 0 R /Parent 60 0 R /Prev 62 0 R /Title (6.3 Error response)
>>
endobj
64 0 obj
<<
/Dest [ 43 0 R /Fit ] /Next 65 0 R /Parent 49 0 R /Prev 63 0 R /Title (8. Slug algorithm)
/Dest [ 40 0 R /Fit ] /Next 65 0 R /Parent 60 0 R /Prev 63 0 R /Title (6.4 Success response)
>>
endobj
65 0 obj
<<
/Count 4 /Dest [ 43 0 R /Fit ] /First 66 0 R /Last 69 0 R /Next 70 0 R /Parent 49 0 R
/Prev 64 0 R /Title (9. Database schema)
/Dest [ 40 0 R /Fit ] /Parent 60 0 R /Prev 64 0 R /Title (6.5 QR)
>>
endobj
66 0 obj
<<
/Dest [ 43 0 R /Fit ] /Next 67 0 R /Parent 65 0 R /Title (9.1 links)
/Dest [ 40 0 R /Fit ] /Next 67 0 R /Parent 52 0 R /Prev 60 0 R /Title (7. Redirect and permalink behaviour)
>>
endobj
67 0 obj
<<
/Dest [ 44 0 R /Fit ] /Next 68 0 R /Parent 65 0 R /Prev 66 0 R /Title (9.2 bearer_tokens)
/Dest [ 40 0 R /Fit ] /Next 68 0 R /Parent 52 0 R /Prev 66 0 R /Title (8. Slug algorithm)
>>
endobj
68 0 obj
<<
/Dest [ 44 0 R /Fit ] /Next 69 0 R /Parent 65 0 R /Prev 67 0 R /Title (9.3 signer_keys)
/Count 4 /Dest [ 40 0 R /Fit ] /First 69 0 R /Last 72 0 R /Next 73 0 R /Parent 52 0 R
/Prev 67 0 R /Title (9. Database schema)
>>
endobj
69 0 obj
<<
/Dest [ 44 0 R /Fit ] /Parent 65 0 R /Prev 68 0 R /Title (9.4 audit_log)
/Dest [ 40 0 R /Fit ] /Next 70 0 R /Parent 68 0 R /Title (9.1 links)
>>
endobj
70 0 obj
<<
/Dest [ 44 0 R /Fit ] /Next 71 0 R /Parent 49 0 R /Prev 65 0 R /Title (10. QR codes)
/Dest [ 40 0 R /Fit ] /Next 71 0 R /Parent 68 0 R /Prev 69 0 R /Title (9.2 bearer_tokens)
>>
endobj
71 0 obj
<<
/Dest [ 44 0 R /Fit ] /Next 72 0 R /Parent 49 0 R /Prev 70 0 R /Title (11. OpenAPI)
/Dest [ 40 0 R /Fit ] /Next 72 0 R /Parent 68 0 R /Prev 70 0 R /Title (9.3 signer_keys)
>>
endobj
72 0 obj
<<
/Dest [ 45 0 R /Fit ] /Next 73 0 R /Parent 49 0 R /Prev 71 0 R /Title (12. Deployment)
/Dest [ 40 0 R /Fit ] /Parent 68 0 R /Prev 71 0 R /Title (9.4 audit_log)
>>
endobj
73 0 obj
<<
/Dest [ 45 0 R /Fit ] /Next 74 0 R /Parent 49 0 R /Prev 72 0 R /Title (13. Security)
/Dest [ 40 0 R /Fit ] /Next 74 0 R /Parent 52 0 R /Prev 68 0 R /Title (10. QR codes)
>>
endobj
74 0 obj
<<
/Dest [ 45 0 R /Fit ] /Next 75 0 R /Parent 49 0 R /Prev 73 0 R /Title (14. Observability and limits)
/Dest [ 40 0 R /Fit ] /Next 75 0 R /Parent 52 0 R /Prev 73 0 R /Title (11. OpenAPI)
>>
endobj
75 0 obj
<<
/Dest [ 45 0 R /Fit ] /Next 76 0 R /Parent 49 0 R /Prev 74 0 R /Title (15. Tests)
/Dest [ 40 0 R /Fit ] /Next 76 0 R /Parent 52 0 R /Prev 74 0 R /Title (12. Deployment)
>>
endobj
76 0 obj
<<
/Dest [ 45 0 R /Fit ] /Next 77 0 R /Parent 49 0 R /Prev 75 0 R /Title (16. Out of scope \(v1\))
/Dest [ 40 0 R /Fit ] /Next 77 0 R /Parent 52 0 R /Prev 75 0 R /Title (13. Security)
>>
endobj
77 0 obj
<<
/Dest [ 45 0 R /Fit ] /Next 78 0 R /Parent 49 0 R /Prev 76 0 R /Title (17. Related docs)
/Dest [ 40 0 R /Fit ] /Next 78 0 R /Parent 52 0 R /Prev 76 0 R /Title (14. Observability and limits)
>>
endobj
78 0 obj
<<
/Dest [ 46 0 R /Fit ] /Next 79 0 R /Parent 49 0 R /Prev 77 0 R /Title (18. Routing \(normative\))
/Dest [ 40 0 R /Fit ] /Next 79 0 R /Parent 52 0 R /Prev 77 0 R /Title (15. Tests)
>>
endobj
79 0 obj
<<
/Dest [ 46 0 R /Fit ] /Next 80 0 R /Parent 49 0 R /Prev 78 0 R /Title (19. Appendix A \204 curl cookbook)
/Dest [ 40 0 R /Fit ] /Next 80 0 R /Parent 52 0 R /Prev 78 0 R /Title (16. Out of scope \(v1\))
>>
endobj
80 0 obj
<<
/Dest [ 46 0 R /Fit ] /Parent 49 0 R /Prev 79 0 R /Title (20. Admin UI)
/Dest [ 40 0 R /Fit ] /Next 81 0 R /Parent 52 0 R /Prev 79 0 R /Title (17. Related docs)
>>
endobj
81 0 obj
<<
/Count 7 /Kids [ 36 0 R 40 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R ] /Type /Pages
/Dest [ 40 0 R /Fit ] /Next 82 0 R /Parent 52 0 R /Prev 80 0 R /Title (18. Routing \(normative\))
>>
endobj
82 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1116
/Dest [ 40 0 R /Fit ] /Next 83 0 R /Parent 52 0 R /Prev 81 0 R /Title (19. Appendix A \204 curl cookbook)
>>
stream
Gatn'?#SIU'Sc)J/'_]eX;jIs\N=_LLB/:P7d=7ZK9d@4ZQuObjX1#A8%+ni6(61%+kQuM9$b[Jnsl%W5k/<=n#?KbUP.Mg0OPmCHXIGBTY-"jH1C]^SQ\K;8[=^QOJXJ#,*24R]M3(Z74`tF4J?Hn,`R'j0sKC?Hma9XUel5ji5"=i_>+LI1Pnt[pWFI-5M]Y`fGNpRY:PXTmWGAaNq3t)5umbf=41g3^Ou)a."?gB5<b-K5N;@!jFiZj]B#?b4CRaWpUOg#ihL0FX2hHkq2aiCFV_%>T5]!7R*iU6mEip]@3kU>iIMiX]mKKJq(#A'Pjg4e8:A%"?r%70_p@OFr;$*^?^>`].PUTnR3$_87Lt%eoCMe;>9pOB,h[ao#coA2Yu2WF.RIQ(JYFoP#;jPJ.&\8-X$0>5Wm39C8Tm:e7DSpZBh<]B[O2(arg?7=5u'e23>@I@g=h1M]Oc9$)"EEt_H)Y>WcF<r)=<fG@`QQ]>_=8L8m*;6)P$JY^W8e,89!-3M\6f+^HK+)I-te1T&>PXNbS'O*<03.*\(9*(&UQ:X.-sr"q<.O^sZCr_5_K/]hcq3o?\C".&O"Bj*6TA/@:9O52LU)dk'!(8E]&<A+$JS@3H-'G-]Zs%Q:>LHYk+qTdNE!l,g.2[F5n%]/<X$VXpJ$8LSm[i(?&@Oe[N5C/cQDnBq(,f-WeD\R?NZO$X\ActJHW0!2EpB6L<LOha=W&2<B$]#XJ=4o,FlT`mh,Vcp]TCUP:/)@,k]Pi1gs^KE(JIReZCZ\`SkAl-0B.?(Q?DNgdM]M_+4*bXNrJUW7KqAC2GB;)=3;p;!A31TZY/HX^Dk)GMYkSEE<XP<#8q`*I]S.B+C`(Dn5;8]ps>c_m#\TqO>c5R5J&FPt4jtG`18fg(D]N.'n6Z"<F!3fl(NF@CM23ZMf(Alr-XL:mmPue6)YW@P/&f(R%q-$"uib8=10sm<qb\i'*s&UH9@#9qSi`jp'mbs@"!YT1X&sfep*Wq349B`@k)icbnZQkG2/Pr9m#>Q/5$"IbU`^m5(:,tjHT+5>W6d>Lr6h,ma`pNi=[(?)6H`b"14+_7DK5he6Hkc$0AUE*>!iYTo,C.j_\G-CDC*AB~>endstream
endobj
83 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3529
/Dest [ 40 0 R /Fit ] /Parent 52 0 R /Prev 82 0 R /Title (20. Admin UI)
>>
stream
Gau0F=``=W&q801ka/EW-T8s@E,$JbfTTjs)*=#D9iWg%KHqlY_#[+L]=%Ze)a#C'i[JM58JDM>GGEPNIpW9baS8W<J))]la#QhB=$TVk^&g`iFI:t%mJPetn!'QEDFgXAa?!G3/K("Pj*TF;0.K%dWarnm$]6LLmnf_c[Laj"+23K9)s4#%)CCQY7eGsck!(W7=g'WK4ktM/I[g?aP^g_LP6$t$aep%2@juUNGatju,Q/[)j%7f9:K1JZAQ)GI[E"L:O7@tpKSG^aa\+D)7al[9PA'<d6f@UYVpEUWhFp!^gj0&21orVq0d0+,+'J<QioH7*d>#Hr/>Op*TI21Dm&.hu#Dfn9\=^FNQFoPsnQ-#ZqoK%+hL\BEiaU@^?t>)h\p:l:BCq#f1QD\/NI$&b*M?[o:NtY_\dWs&2X%4e",^a@O?INF,`8cPP?;#10/!sulN+Gn`p'(_dYL1'&=88Cg1T9*\3F]k9ecDrGL9KA-Vg"4k+r*tQrs5W.Ds6]93][WWaQs_\ne=H74IGadN]D<HCXf&9B,"eip6nmP>7#Ok6%6Q(iNLs/m5;Yi#TA3d9dPhW2<RTYn2)%+49TSiTlU3L;/qnQX7cl(buM";J"Ys_eAH\4-F3t8k0,kc4%C]K-ja,Cj0u_-/192<LBYslVR2\U'Oi$C?]F%>kPHJ_*c?i(=R_>R(CkK7Q[,;j_2bVp>gS-5"XEI?2tF?k"uZgRbl$!6La1SA$S:>/&i`?i>N?Gf//=1Qu=CkPX"u2O8Khc?2TE]dIDMqE`fUZgM.G]>G3ErJs1lX(milt^)GoC/r+7MARWdaH;Q`ebf/duf]@RH`##XMPE]"uZDEU41u8dk=9\%O?CYM1WYU6rGB$1$cH?r?ctGYH0e[Y_0iC6P!C)@f!:O]lV!Yg%HF@g)m2W@b!5A6oc"2EpG*(C#2*d_4<[PFK?%'K(W4E0ln-)KgS<<:U^<GaN_VH<l^qITDSGo)US9jBPnR!3098^,/SAeOm]klCW3emD9=00smV+2KN;4+A/9GOFg'VcpII$Z*8cL^C"L_]e5/1F=VLP4Xc<"CtI!YJq!cU&6IYK'ND>%nIGMR/'&4daRa(?\')0.WqrS9DE>Sk.ddg#*O8`jeiN::!GIN)P]4:b4Yo\/R7YRkk?JnE36KVDsP[(4(\prg;OA3P]sY;,3`H?%Q9[/='J0mIU9i@.KpL8D!lY8^h0IC_ktH`Yci8%LE5r*V>Q1p2SAHls^eoDo<]J1RWT5d!Q`L=\t(.h;9p1?&+QS5DK'Z77Xah@1&TVU30D6k`B=ZeI2m4bqWeQ#0AW"7or*GL%q)]N,p7E;,+R=bTJg^hb^-D'OC4)L+Z@N:5A[inWIVYau.Z^jD%Gn>\k92(]/?sbm:)58#E"%Ysf+<\T84H4+/Hkab'"tLj9<i'1;.Yks/s_VFm_%Stb4.9uN@QTr';4XHW>YRaqK+8l[t$VU-QT%B.oS0E#k!<?YYb>iLOD5T)1%n`GuZ'^('24ab@lcObkj2sEA5CE3(_&lVm:$kXt-<MY2>O4>qtS]q2//A-`>e=me`-j0)PBtV;Y\C\&=Wn7r+-q#8_+_^:?L6:>`E#Q*>=a:N$mZ0$rrJbcggjFc76&=D_W:B.:+_CS.M2;A=R*fF50LV4cn91h5JSI.*+X,Vi;ik"s\Wh#haFP0?R"qs]*g81XB;3@J%N$eu_;p]n/57!Gi&b@9Pa=XC!r&;jAgL;eE0`T`E%Q-\9.pBslO/XqdXEH(&.81Xg`QT>%W3oN!lbWdl?FP&Vk1]mBYcS9&g(3S)PL3``/`C;I0tS#^r)e:ZT/bf2?u@3fa#aX=FK(I3\e8B(HO7&(+_l3fWqRXJU`0^PAJdt%0c%Se'IIoUcb!SH+VBpp_:LpCQPU3b6L8TqgOeOc!iB3<uUS-Cr#+;Bu$XP!E40<!M@L=9Zr\*Hn$*)WR?<Hap-(pPm2WY)cYA0B0dBJHROjPhM/Wt3MtA&bB;(dFm,O:%0[50bUG0+F]Slgq2.jj751O"V;Go35>E*:=9j=%W2Z`f$0$l-/mEZJb^"%s0GBJ9.>3q3E<VrS\EBr5JRUb#ihR9+VE8\-:j)(^:Ah5Eq1J19Xr3D*3pkH(?.O0>7cI@B,L`/'MGtDd)l$P2RkD=G%sFqr&O.7M;rAUl^0WXtilphuoUoX3CrD>=n5;!@:_EX\&7>,5D+1^*OR2V/Cc?t#*k@TlAB]U0r=ik:oeQ\Mm8VmL`YDuS<]WY/2a_WABX*g;EAI)co[+OjWXK`(VR<St2T/RGoECQ\J@jYO%9Si8F6tG'3H0ji6q"'4D4=R'/)c:d"^]GGFoq\>&E`qeqd&4j.6n^A;29+a6^O_R>Z-G"NZiUk^Voo'CU+jNbnW;q;"qrgXG/WoC>P6$^,RHt=9gOt6-,g8d8]H+NRO7VqkD(.GuaTlTG"^*;B+=Y]j&K6qDo?ZUt4o8gs9RLQfpu$L9<1E?jOjIH1UCWfD4Lflt18YM/l^r471DqGH)23nkBjlDR*0i/gHNqY/VJV=gb$(NmV%j[i2#k[&):'dAlle((e2DKXDX5&Z&W82[Jjgk;d6,L7B>XFRaWho^L'*UqLKo3*7(hj4dGWUIc)r.>%.tj]&T8<PQkP6C,=YmsLr.b%J]OK<f.OpIrA?$&Cntj:tEb?%f2&OgDrJgA"sml??M_Fa.H@kBAeU>sUfd&`\PZ(6Fru7$r'\e5o5)"TO_P%c:4CN3nF\b3J/a8=jh[Y'<jbf8&\n"E_"M;6V\aA0uRR5GmEo9TTU$X<XZqfpt#j(MTbl?nOSdBhZK_"Z/DNlt74Wm<"t=&MDVZ!Nb!8^l[)C'<B5i?!P5h:)M#2a:AL%M\mD@pN5LFTUn)a=3W_J,I+eB1;"/@BM"I?S*$qQ^qO<"/YFRad$e^5TiJ&&Elcf*,m6M:W_LXMLu99*m-HU_#E%l]*p^U$CHia95`*5,TcFgs[!eW74Xa:.C1h[_F@0hh6'Z:Y0pVHJ!K+#J3h/HH<L@W*)ROFt-(/mr2<l;>CKpa-48LBr48hkHmDQ5sE5)"0`\RQ9]PtO5?U5&oD=iD'!*3bkOhsk$3_L];FAmtW\5=>H*DB<-'g\=fJ(88LrN+t3/?pdp-XJ9!*[&ghR,:nQg-`.Xc5FD.a%MsIqh;-2Sfc2sh)tI4?u%ZN_Msn.SU,a:WE<Ec=U+[.8UddL6<oksnH90LlRrE4ZN9Elj8?PA9!>o[VXVguJH$92km8HiaX=;aQh>$^m0g/kTQCL7jnJT4U"taB7g-bYbUONl0tO:^me#Q4Vu38df$_9`kJ^_,rftMJZN3b%O/O)poreo/,g#HT/HiK%Fo!/tV5qccM$8Xj$8:QYYXJ;]L7a?m=d(e\,><2Z5[b*(8%X5pfVftuZXaf;kkfFa"'f@dDZD>`N^F0.>4IKF8@G;$hh/9V8N%RACqliVm5p7h#1+[+k3g5bW%7;i%60P*p:C7n_!+I1g][H)"6$%%]Tr%_PR_:8VsO!035<H[,4Iou(Or[Nmb6Rg[/tUI5?<J>P5~>endstream
endobj
84 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3145
/Count 10 /Kids [ 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R ] /Type /Pages
>>
stream
Gb!#^lYkP!&c_:6@ZdC>I#TQBo'M'6pn>mAQR7`h!rX6@=Hb7n0jj'@Z?8Y9pWi=UMBX?=^7r#t.+I\1c?k!r$q<#Miq.0D8*F]H#/=Q!#o_,$<[AK?5GR34jS8rA4&o#'9heZNY%a'#==Th&q=@n9Amt&T,[nt=NTl:iDN>l8J0HU!_29CMB^EV_5X>6gL.lSU&&HR0)LmMWI<-^U^YV$@lZde96AWt*3+2j!]Xpm^NdobO/SV!bB=@9rp=#R=RiK0Od=`&5I:>JTL1o#qdS,+<Q,<;.G)Rb\./Q"m4U3\Q4M&?ZMV403S5#b<HsNH"cb&XpT/(c^@&JcXM5CmH]Juj,m[+P[D`N/%7-CG[iE1I&pcnDUX5(`J]uUXbh7A*'Q$7T-_9.i$;1BAW&/'oRlfWiEi[c;QCWud1`\+s8b&3c9[j#_9R8<Enr#Z/3lASeapqhTe!W$sMgsMc^rbIeqdr:9.8J:Rb_-iga#&i:$4T9S$@YHV.q@#eLR31hu?5PjXU;P;+1-qO"RjN"iS>.c]_#k&oTUpRIY%U3Y$uC`Wf"=9p'$3'p=">6>99L#J/;qj#Bb`K/5=H^uDR!UaJrjfRpE_B_Q>c485?n=f7F<;u^p^(a7_1XR;)Fqs'8N`#;kAe]rLMW`^lBk91Hqa99;C?PNXMieU<@i'P<.+!\[P?.DXN(/C>?&7$WfMkW6(I7TuUb6.Cdmg+/>d<;:9XjO@8SX?K[M9E*s."im<H41V3&gOn/8sYX+>,l_-"A0hoM%Z%,#_N$H&]n3^jI1%^ep4j@I4-m\.'+#,'7Bm199dYme])?RcBGX=158bu\W?'EXs,+/NPDW\S;XGrBf_3=h6BdStlin@uI7LK'Yl`MoDGbT_,mZN,&D3r/br#FhLDr[d%;n<:f&8OhEj>BGjC_B08OJH!iCm[aK1h*Fdn//qiMh!(=6nm"c+"I=^d-N-Q.":b>L=NY"9$+'2rg=kVou\H)HimYS4bBhg.u3&V7Q6%L,RZ>#[W&U*9YAhNR@/'s<beDq0X+^0mKc3(OtQ(@O<-j7Y0j?m(B2`7M/FA\h#jE,Mt[TW:u3O4(!4AG%%t3`+niGU+n(5i!%$S;oEURd/aY-(CsQfXl!\$rcH;B7/PaST+qFDM8BaM7FV&)US#]SM'r5Q!.Y53m5o1iGH>=^=dfQ=<LfEX_cKl+Z'g?)m#UI')K?&+Tc%KXL>DhuJdfG'#3DVVJ%[*_c"-I'5j3Jgp*54'L_=JjE.*iX\X;XMf<&G0W_p!#qe^K@9Y#:$m[Ef_CZ3W`hSUME#/&2Dj2I?6Z34[3t98g:js$R1R$/ZmLOUm`H15bo]Y/A%3>\)UfEg!:rOEYudY7%R<=o(,Kh&mS#T-ko,+ts[pUSUUP_$"-(+dBnK#;7MXb[+SH<8=>V+DO\NfJ+*be:$NZlLHu'+$l7o6.!#9Vbc]jkWimYCk15^$9@Z0fs%I=2;-pVnE9\*A.h8[0WKWZIl`,fpJOs-J"<q)a[;hF6*>YiDgX.?pJlAnPC`:(=b*DZ!D61"!M5/P-p3auGUaK%Sl?K`.9dq5b+(c%:d3qkHu$V'WbG(-\!0q+U)Jc^k8X+=#?!o!@fZ`E1e78'a;)8=->2N=!K3rs-"D)Dh?t"%<;3+Z<N1MdQp!*-OiY]m@[$ga(JtE+oa=_:f;ZA<#V.OeAZuH3K(()-,L#D&,?7IAkl!dBM$+hog)ZFZ$4UD^AMpnD\Rq_Ao+AhOEk1B4cCAV"(0,*V-;t_uWHto0\c_lb)6aHB:'r@;NaT'<Z"AUA[YP#r6ZN2/W<]/IhLGO8Y)"@n[d4gGBc]S"A*BZDFi;Yr]7J=F<_%H&F;GT@>-j'Hd+#tm?!>s&Aui(n!Fg$WraU`/<f2XS599ahme2*SZeZrh@;\DfHj@?paZK]4"87>hFO3HX6p!RQ.$@Dki$)+N;/VV1MRjV:bh[qt&7U:!l`&g<>lMC%MT>me"\>YOXB7VLo[QplD<JWp[nTe1\&m<MFL$RiiRB_`6*QV9L&&1b4:S/6-hRR"NTc#\\]Lk0iah_,-dc*3Q[[E\C\G$0`$<ct]7_h0j.%a2!>"B=@=Ap11gW&X;a/,2/sSM(%b8,oP)L\Uangb3%>o%g)\/B7kRtHKNlKWD/a\KFROX`MpZsii($4epY.03(-&p]r&pI_QOkZ6XF(WW_C+Gc#<lN'lPeUtU?IoV+*Nm=]H"H0*A1b"+`.U%8Fc^7d^B&/bG_8UI*IbQuH8E50ELJoE`S:1RDo44m:9t5>GT5IfqD,_`E@R-i)l3$H)n\+MDFbZkW4E?OP9$Brjndi]NiD@emDr"#RQVl4e_Ef!d>f(2&@-@f[!/leO@.bgi=CC<5@M?aZ6<FB&AHK<DgV(*>7suAE<PYJ`pMDQ7h%u7N\mfSX_RO[U/g!JW(pk^L&rm6UVSU*V![O?Zd`-Q$dmX?JO!0Enj7kin-*?IT>!Yd%Lt%%:`RkcZ5s08qA9$QcW#(KGoQCaBBE6pXqTp7<HgFUEd"p-n=gu(L-8JE;@Nfkm\<9r#:/''RSH1cW+M8$;2k/N8m%/<4?%N=264T"L;Or[.fe!mI<?aG+[clb:sHhOcV`8mjmRWGG%nA7#d,=W5&@g/-u`)UO^9b.R%4+[^0[fO1j)f9Z?5j"'\(4H`!;kp%B%?sc,6Lf).R0m=;-9+<1Q=ClPYqq0n[os"gTjQ,K0WkCJ*^rihl:?A3l@Nbbej[I)qXYB3/R?8M#e,6<PM%jb>!V*SEi'G@*i\?l`:4o$4DB:=iZgS[bs8lq5mA%KgrLqVtQY=I;R?QbS4nI-9gqRr3YT]VYW.7In>VqG<hrn6.0q-VFJ5#"o`8#,2e@7&p$GB\0+<Yi02C)@7C80;.'(0`9m>Q"3o["BC^NYaML>%T2GBp3M%".fZsMc.uM.M;;V>/u"tdeUM&/c)m(6@%X0s"/r[FSmhk934-p^0S.4fhf/).:gm6mYGl)>k272QApZ(RKZ7'*'7`9j:#D4"00kk[-a=UQEob[sQMsA]f8jBUM\i6sLMkAb/"@[I^^;!W1Rhj2eRe#JhUg;'e[D>c_s%;;&Ji-o^)i;(e!o<_gYpDSX`sT;,Y:'\DF.lNF+XPp<%Lu&At25+%UA.DkjCkhKX%ZsB')PGj?G':j3m~>endstream
endobj
85 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3400
/Filter [ /ASCII85Decode /FlateDecode ] /Length 856
>>
stream
Gb"/)qet61&cUU9`P@65b132qHqErR./Zm]j_VnuPbLFn$8f;V(fR6ILEAZas7Xb/-#+_u9.).qoUs,8\\#2[1HXKA1F)u=5:$2C0*0A=d!eK8-nq4nd3K1@f?bHYI6Ad":STG^.adcj_&oP/_m!.(]8EVh+K;4]GIeo>FN)`8K_$F\%3ln?FAl(n@_`qW6:bPY1Wj7#U5uDCl6E,,2;l7@;'n:O(mi]VY+Zr%X",ibX-s:T@S:dQfPdD;e?0.#;R7iW7TE=_7V54P]p0$MjlsQ(99c)\&kjXFAHr]n%HB)qrg?@TKV,Y?U)T9NO\J-X8lbBXnbBOnYUZ+TdI9935k#5jI+P!3ZE*$=iNH=GWA`:hHrr[$6:k1U,1h`)e^Idi.'[V-75/FEq6.EGH%nEG"cnl!oeSp9DQ9#/Mi6G*1qi5bqRt(i.MA1X@kX:P*`c-ZZ00UDBaB/!6Q@FM9H@fAX$$U[eCgT>UXN1.2uV.&5Id/RpWeN,iF*0%c+n%L*7dr-Z%E#e$rbRqFm*"-Fn>og4hL,h:-T8m&*lPQ4JrPfLMAI8`q!_-\AU`IK]'A&je4'\<FdcHZ5u%=a[oD7NQ9Z"hVW5J6P4MT'$i#J4KP4<@P9:^KEIh3hZJ:1\`$jJ;S#T11?r3UHGf!OpZ]#OAq[$p%Q&mlD/#u2En/.9d#)?%D0@8Lq-*:O`etsriPG(i4@S\nhs4lFdMhCdGW+taYPU9WZ&#]=jDQM@&NE8)`I:F2fYR`$;sN^66-XC^g`$aK"@,IFoZ!VJ&^4r?F[X+P$rAbhK3_"-"9/=@,^#B4VA%n&LK@!/%Z_oG?`kh(]C]Kq2TaJRH/l><kud1J,D\)RC(jnh9h=S#/U18P+ITDii)S0TKY>fa=%*5>oL]3l'b*^Q.h-`'1uMB1!WSDm<]AU1jpa^[ZU;NO>$e:SWldeC:=``X'^_MPj(l5:FEQ)ed4qImLSQ)<G6_D,4)j-+776)!+PdH5'JS4".`*$igD,Z#UsU[]U\^'O:8s^P3TZlN6d"DX'dF7#[6gqVS8)ZE)!5$l[Z#<2Xl#$3=ocSoRlETcA,5nqH92ErG'=P=X6?qHG3Fn]%Lj_V`bdj&cYY?)kA:u#IU_e+[=!<5K[Hh8Y%L>_,#fnRE$D=a,AAJh4\7q!Dd29tYuO;hqTRS3OYIb49XF0N9N+q];6;qYl.)i;qG3UHNS)LeWk,&IQhQ!ed-XTQC6FS`2/hk+ho:&TCd4;*s1`-K6JQB%'n#1BY<Go6WZi=dnIi[)1pTJm't]%si]OP-s$J_*]U@mbm:5A*?/P2QM)XRN54`sDr>0K4g[YI([BYQS^u"^f3H%P#n"i$C)^-iPYV1WR$"Z/Zm$-gQc>%Y2A.ZuUF:,F:)5hCW/E_,'n:GogJaYbj=+/Qb+Ee(TrW&E64I[A>V<,#*$UiJSHmeaoEc.@BhEolXfrdDh'ufe,;a:7..T=M!p(Ee!hejM,?R6Nr@XkD'[Y42q?U?>od$9WeW.n3n+*<+N4R^(T1Zo9(qp'$3h6cFe']PM[1F-O3UB_tTLm%S(7]_H;d`^V1odOhFY@2/1DJ&0jU3':hM$*N0K\O>.FI7r!VGamL&b`![9ELE"8NDVUh]Xk!kGj<IDlqgg")35ogV60`1B1W`q=D?h#cV_Wh)N=b1h;7XriELU2I^4al7]I,ON'lU8%cCfV)>1<<F.Sc=H30ufpG]Z"*RMACp0?/M'&\<)F"IY!#l9%J+!W'rYBBb7,BXDY9euE+p6N.]$7h;*E90-^hK#EVGK]1%N2m]lE__OO?0l_3sNlP1,MX>*HuU64h*dU+#aPXV]'kmqEJ*>2mU.@rL+iir<V8(?=VG+anen'WVDbjq\(VLWNlToK#Dm.d%"J/e[8'Xr8MAun$1IFEYo2qV\#ZbP*>hP,V'*k%R8001KE^6Xa9<HKGF29W(9cTS99_T&-3-@!h]$5Hp>?UAnBp3UQ5K]=kn2HE4`1G'Wfj-F#/NX^I29T7:YbsZ1lQ^W!_t+3B'DiLHuJQcHpcEWUG1HQf87bGnJ;);Qq?QmT%bAfqYc9=Qg,p.$>sWCD`j*_Q"M'47Eh_h4uS/:K_RnOF#'UJ9U3](<kS>lLV_Iacj.H=Qd$>%#jafC+\TOi^J\mq=LeFSWD35WmlZddMRgMO*l?Q]qSO9&PG6+)350WUT(m[G[u6O3kb_!qO!BbQHka!,AS($68!ngBD=8Be>%hW6$`n^_*q,X/<ODFP&O/"R#\0Z8M/ItisZ*4c$*?)^;[U-Tr\reJ12)P0SP2q/_X'\5EY4=/45OMf&!eCN/cp[#e,g#l(AJQGKH'edqE=G!_#`sa7%p^_)\]O7iL)^7.Z1X.A9rKH`0=m]4.5d\mnDr,$*?OPnbrI!'*aJHigY$RP/k4a8?R]Ajl_^BASggUe;QQ09!sJJcB<eh<,cO]dk>cSL%3F,dM_iUJt-`odICPG%etE]+U'ilWN'a&KkC2"dYq*))iAQZ*jXJOQMU[9'AO-%qGu%YF3f8ZT#t&?sW7n'4_T,r#k,,I]skE*plF:LcLpBh"7=c@Abj`!QAAQ/o*8MEIIcN;<5!Le]ks=RA,r[+r1J-N$>G?,FU-`C/)!=.5ehFj7G/7]a634Y,bk\S:cR!jT/c8%,%P]K91@@R66Vb1&b>a.n;TP.oQGDUJTpJmn"t.,!?*AaSU5d$;;9.Bp-[7]6nAkA+CO"[+ifuYUNRd[&1qa40&p(DU7fjXUB>j*3EjdTn@3Nc+`M3"l%iKIG80L@WnQ-Tlt4"Lib_AP':SeW\4G"F!DG9(5RkcO69_[qBN$G+c+*F#Q>,6=Nhs7G?/q+e.Y<&.=s/'Q#Q[KMQCl)Am:(Tb\$8V0KVLMQ5Ku<LFs.d2p=Qc[KhrVYuN-p))BNr-q-qNhcaY+/Hi_<FGs,hN>4ON%lD4tis!8IZJ&4A/Oi&7l+oN2cF\l]'mJge9,>HOhk<j0@u9Y`<11Bg2A2Z@lsR@ri[iM&K*dGk7dM`r\-=[Hb$gHTR@"h=q!Tdc.%iiMPN3nl?8;Li03qudbTigF<>TkH,dUU0A/$%0KuMQU@2d+(1h%-@$Co%HHPG1s.VXcC:La_%X.hu!+Cn)`BuSY/8M;WGoajJGG>EEBU)1.QQ"CVBVE%qYgJus.7+l)#\6('KSBLLtiOLP-AB<GsJ6#Ajh1YX!)QkM$If1f4W+Qh+UK"cbl[beas(_'sW78(LTt3dcr]@dr[39hn]\;s<)ug\<\D.+r4E"!bH<TolKj.o\B_L$+L=Gho<IZ]Wc\(k4ZqECU4T7>-%k`UMS).QN,@62;rUkM<>=qZ`IGTS8?a)!p,Q'Tepk-V2^OB+`1>d?sgf$G#Ft,bi!*!0XaXTI8NSTj@Y5aN6dJ%p%WLRVq91sPO<pbI5rr<`gM)5~>endstream
Gat=*9lldX&A@sBlnQW3MH6?g9[fdn*?U`;p65qpb6]$g0&SS^pQ]\O+13hJ(gDWgp\*jV.g^d\#L!-9%.H-)l[&bF&?Gj8&J31E/suR)i9*cWM=Mo,TX?,2qnh@Z0VKQJOos[WU=o^D-1_:,p,oUM\.>>XLi!D%-s[+u>QAl.OE*E(/E,U?isbLF1b27/1<<2`(+fqW0r?,OQpnB>(1@fOaX%(n&7!&YNONpMluP_'66^3eP+o,k\ntM(-ZURQSU,&ZFWIepSb&It\+"LE8b6C0XuA#m(Wa^U^;#jgH[`Q-PkR_6RP7O(;O\>aB2,kl.E;)A^$[6X`hd8?#t(Sk>7r[nX"2BXSn\b1LZX\]:dDLl;"QTNIh&_Ic)].K'rQ?Q=[r&TQ?C0^/+\Pp?W=Itmli$L]=L#DWj4'0cnEl:4u2Hcd7cl`6r6kG0`MX7>LR"uU0T5?/;8BP!b*tDc*jj!1ghnJ:a\]#^s+?&_Yh;fO&mCt6[WWg5FT&0Deqh^KqH2@4]:rd)f@H1m[:9fMsdK+TQbb`7[]]CAbY1*h.j;+ZS4$T:7(iPJ)CCJ7iJ`71#D\I)OB&n#1T[&h>LX[+2*iJGr&T&I%63USi\jRBH-\*KVKQV(PBHcGiF,@@[>bkO7CfWZ)$:*`ATVG!QE)kJEkP[mY5e5p4rU[:5HrtOS5^&Bck+EgC4#9+80]&(qJ6Ubf_0`*2'EOg6gN[EeMM>(7IUl-?D+tjq+XlILG5g(u9f-)PL=?<?jm>+_h-u+a?@U>?6GCTm%U$iV"qT=s&c1cP.k'd)2kgM&(nN6+?6OQTe9=#A,1k,\KMdhZG3^7.eXVjorW026W8O0_krP3e[h~>endstream
endobj
86 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2852
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1034
>>
stream
Gb"/)CNH71(B'h3EBh$I3Z.C1VKT#g8NQ7l`(<&9c>JoJ;T-X7'+>"_\ij9phtM^3#0]FYajeg@=1T'_'h?]7ONtBP!>0fPnp@eHpb[R$B*(JQaW-*\-nr2`MojB<&_WH!$pg,7$CWlg%g)tW9;:rPYW-[`6F$lS3Y3P\BlHaV#UmoH3YDXcW#H).s/&R(^$;R@ZD_k1*fsE1h<9BiWNE\1e,`Vl[,PPj"2f006XhgT=CaAaH8>-@_8+5R6A+Z=k8tl#%)PM8LnJPr"u/@rZkk>(*c1-E9R_c=:GLp3r7St#<>.c+*-=IgN[A^0\f4t90$[mIIs"aqM_#>@U>QI'C,lDm0J`p]<^?-F59Rf0Ioc0+:F0#qh'`$qC#N>j;[T,[-5:VcA5Dj5T#3Ubp%0BmU;kHhZX,<sc4Bj!e+)+Xe+'e8[-7f"ZC,GUY]oQicYN@hCtGE=)gN=B]WLo0HXXPR`:,!I0)d_BVh5;b^rFG'<i0C,5qU_IhK7\)gb@!h&A,4<YVa7/4#Qs*g\IQm/G"Q%]g0s#Qd]Gl&&Fb(#_Hd:U=S$'e$b^F"AS(H8JF/q+e<n]'t+dp&"d4Qg8R^7CR6cP]Sq^/V<;dT;k./HFe]/4</%e+oXf#H1jh"C@5FAIdEbT9(R*hN"ljpT<'g&F6X9DpUb3<D$K:Bf/>-TC/LGf=d8P?.Qq:Vm@W*NE\%]7g1&$DES\6tfIb5T=WLWXLZPa3>`pW?6F3\'g$4:kKap]MZFV_]@Z_gkUFX-$Wk,fTZLAaC/_LEJ1nh#>B2&)E<VfQqH6m,N<s,-i+58"Ar=&]7_^Z3K^6%s66Jehbu>CY\K*T"p!F<&@Sp2R>Sf\_^Ie3"??TR7"uZOki_HjDCS&:0jO"L$5R3h'@SYL3E^QWsNodK"TZ>QCtU!;_j`!3afN?KD7`Dr8fK06[Gkb1hacPE9):8WZAX43V\,]1Csh99V\>"jKl+$Vf(Q>pfk-_7fnu8dgll:2CkE)C"0;mp(B?gci3aFK8&1ar5c`H_b88(nH_L'3%$sP/6hNN<O0#l1+_4$,aAcEIaN5jR3!f7Q8(VH\ZQ=8^bF]q$p]h5%R3lkJE-oK'E/m4kj;hQ?;g'5Go10kF4bJUQA`!HPApMY2G44]\UE3);+*I-[;=N(dC+LSWBZjK\@5_:T[%MW&8$ZO]u>=X9=1N7\3hS+(\&fHq)s+FmJ-iRZ(&O,?MK")Nq2E+NTE>"[Q4dJ^TjU-mfk4P7_X9]/i)P5d!jOZiF1*-ORB6abU_flL[IF[lPDSJm4e;-ma]gM^6CMl.*l]WF/.WB>%dDIiY10)kV-r+4u-7?:<!.5Q>gu`eNC11Snj]@10''e,.83_f0]U^::lo0c4Q/<C3n^s2e`eBQX'tH&OA*-6QrC[n@s='b+i?aQ*$[Nql5:pIGAPo1"o55)Fe/gqCqQ$_Y$@SU>pk%\nbXe13Z]A2sEE^)>!"$S+pG"]g(Vg(AID1^.s@XA9.GEVVE>I>I+0pB!/']SFntj+cISViH;C*2cNc+Eql&85X^Di>#ssO!5qKC=De_\<L/?Cie9;\smVMrLeAV,K(Mm_6I'b'N=_0o[^j*,SW4D-4>:qU_:WrVjZqqgo5pV^>SGP(J.:k8k&%/4nE(:i9Z:F6M>h9:BWNLpDV)uT/ub0#j@]_:^g&p7<q_!#Z*?,/'u,7apm7u[<bj++M#'f]]p$fGMm2&<)=t"a,eGVqtP/<kPFt](5qG;7t$Zce)\D0L0l+_)p)dgpp#)Q+2@Nl)8;[,C,LD:Eer-4nH8A$^:3q7L/W'_=262nhaAg]#f"Y?M>?X7(TgXe4;sJ_<j#USrK[%Kf!]>hZ4#9a(KndnA50((0=%Ti"ZiRuV6""I[=u'4n`gbjWHOC<,?JqjT)D/;r(dtp9F8[5U50nZ9bd-X^.oC4-S8Ih&O1$pX);f\A/r+J/icZ&_R)]$"(rRf/FfMmfoIkA9.u+"><:"#Z+QqK%RDq9Z`(Jr-o7,VohCXHfself0!j4ho!]4_Cr]6FE=8[<=jMB,a_<*VIoeA+W.1BS[V04*%,/FJ#\H-aqBJM_OJH[;&S;2^EeOI*ftOOL2;,]L]N-[Yph>7#C\>!/a9%JCdX`#S=b6.S+;3!?8P8YtI%B/TLa^'j1!DcG5at_P6jB*Q<E4^87G:?-qBJO0U?cc05K;TjAOhiXh,,<[>(L<jrTE)uDTop_U#,H]JubjeJA2TXna2ZIT[.EN`H4o_CsN\Rp5HR+"hYF`:kE-n[o'A8piMW&6^ZU<Kh"2u:nt1,Yb2E&K8?5_#d/JBpB5#d:79c.48ib;[/ZdH+K='oQLm.&E]^l1#T%,di1R#gi0pK&])(,h3:gBS+jgV?f8]ri.#Ca^a/>nQGCak&FN-(nr:$N>%u%RhrO^tkMuJ4crU[e#JRUZV75X\FFIno,-1^9qnI[M)8ObSmKFqM+/.TK0h;HpMDBNiYcS=b-@5%u=MZjRMV\kmQ$.<3XDe=hWAd*G:4X.\$:YjLS+[\VQ.d1"u27l6sATpf%LIZFZKPt"C*B;)$'hX+mLCGqc>M,;n#FBuX)NXn)6[M5/]&2jqYVa=:DsksT@9`R]Un=!qNU7Q2#qb6*g2VC8h2K3cA9kM(Ht8@C^VIu#SuOhMI``2bS-HJK25mIT?\X`jqbI*9%X,%Zi4JY#3,=I*^C//K.nFj_43'+D@3n08"(BMqeW4ATY7,ukNfrb8DoQ/4LOcS_G/(iC?n*W%(^o8lB,MCXXr.q9JVH6)]MQBrKj[AEK+f%]S8ic19O,+0\0']SD+=4-*nRQKHPp^X@uAUjm[/)(f>M1So/nra[tn+,cZM,sB4+.od1g^Nhr3dKKS1?8~>endstream
Gatn'bAQ&g&4Q?hMHM930Hrs!\oSI].+#h+XR6-,ZGbCs,uGg7Vtp4MA1)%3:$I0>//d%!g_l82=/HPe7`Tr1!.;oIr/q+mOP^-$KL>_ZVYS?i#sDP8,8-nO^`c8^&qh.CqsZEK;AM_FO>)TF,R'?!/E7H:q?3E^T.i*P]Kl``0Gk`7Vg5PI"fPWR<GP$=bo,TW+TF:&YAeiH*sWnGLO2.;FGu<AF@ortlV8>VJE<1P/0hAI<TaDm;d[n5^pU]<V&#&#T%WXMb(5]=&YBJ=Do\On"]5!A)s]bd^<$d!)qEQ*"$?;!m!^bNSA7OZ)eh`THgNN@E>JF\8'(,c#"Mj_KpAZlU924GVu5T3Q];nqh/ndsAH'i)RiKb&DqnimEB*A)$Ob`DQGD*dm[tctXb&];0qU%&A44.CKJ:q[C!a_=Wcb:d1&%f$_kJeW@E^GU6Jj7:\@QkA1@Aoq,X_+(YkFB+>_nrt9i9)W$S/J2G#J"e5n=EQkt/,^ebpDDHEFQ]S&U"#0OOI2^dV[i<FH#tE[.%4s7e!(*rk(BaKRQ2"5qN3UXV5kiNO,%kbV9`dCMk>HqOa]aE<CR[c5+l5jV\TLSCuJ?.NcXJ<-WfcPI-trTH0ji=\*DB/\.Sc8s?6[6f8D2_Nh/$dmMi@5*-?kRY2,J"b83/k"B&M0X%?qm0W("p;2s&UIN[A<$5dlIN8'0$]g\o3i>m=>#OGeXu0%BY.li*T!j@n=fqBV`T3Gk+Emff(/%WoBO2M$7]&e,Tug3hf&q?[Hal1f,/k8YhN?l'2C!4]_+:BNGd2'P-<qbR-`'>/qt:&O4pc+j.M-R.sqa5hkY!t$U5X=&4b1a-35.&DdS%_-p:gcb+aDu0nkt7=3;R'63t]I*=P0*\cl91;LAZacle,n?%u"reC*]CZd>MIp'ES>Tn`<0Z$F7#dTaMKjqjAgPN#n^"*RUF0R_R3Xa&+uh%hj`J.eJcaK*ZZ_C82gG^8(;J')4iikp6iIg$O?N$Mht!fKT;BfZHBb2=6AHNo(c58e\!KE~>endstream
endobj
87 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2847
/Filter [ /ASCII85Decode /FlateDecode ] /Length 140
>>
stream
Gb!#^gN)%.&q0LUoV43PP6?-\b`e73'@4[T7oJKk<@N`W,UO5)+\5u6laK0B'IiW'HagF_Nm+0L(SK1=1ggA'IRs19]*3Go!;2c\Ts.W"0ba^*T4,;jqr`q!P(or<Ni<n(gU<j@'*I.0@=43%\d3l+(+>G$X4K1T?=flM`+q=[<.U*X(IZSR*[^>`nH0QA82GbSk?uGQci>f:U6CH\7<>DFlCd>S9=#X8Cm.U&Jr7l@q3k`bNt[3[C;D4D+m-$*"a.s`+et5J)'r3p_!uX=(3(gB@<;sI-e8T]*PL'7>AH"MUXsI2p$1ZGrhB@oH,t#^Jt8_LI??cU:;=MMas&(qfgB?APStlH_>-gB\#jpBFfJQ4Fctb!=ci2!c.0;bDWln0C'+m-WkitlgdYTgE7hF+1E`P\-B+s]-$+S,cr8CQ\.kD\:3ak?<_I*mZc>Nij4btBT!npm-VeH&R-^k@meNP9XSq3=<F'<7:J)>)<>Kn#jEiKmanK'\rSVSA&6S2R3S^53r^5r(\L?V;ra!PY39Jj2\=V^3]RL+mbqBg?9n:A"<t0BuGj*/n]0qqSW'Vr2UcDn?6F`V17VU>V;8/ZS(V+N"[9)TJdQuT&M5ibD=FGRE<.i8'_'TeO\k18?:t]_6<2"KR@SXq_'!D3&WBUftF2.*`pIMWW@@<Q%:fdMbYZ?VerS<J](M,e]A=*5"QHRE#B'W2ce3P1i=mnQ1?!cFEp4kh<opfm(O@<"H9L+hYGRTrpEqLQ4_;h-UZ@mRO&UssM`&r9TEQl9fF9G0pZ(BaVfOl;`pBO9Z(e]!=P2d!3G;jom+Q%?f#+sqmI32Eoak0Fe+^5-QMJMC(CJ<6]4!(^2=2p5C4r7$2`s[^P:r(Xhj1$1b(Z:'dOEr==AL\CNGt@"`bJe;enk]2ZEMb_F2G=1mhm5Pm'GDN\Y-pK4$2GFR4<)_K"'Y*,[>J?\Ud^F,HIX0d/;K>6<JU(K(d]9F)8W4[!4c9E!2#,L]B4ZmE7q0-0b-+'HW::>W>Ilm<>iTMr;]8)S?9E1<'D#$rcOGO,u;"KV:[]J[W\tWYnWW7*,c3i.a0*2amVBZGNsP899^S!q^;&HmZk<Clu?`nM8k/'L<5nR^]NE:EXRO>qn(p65NMtEqiZFF4FZd*/ekQN<gnc"+$_FY^&Xbl(/JZ#09neF`R*?e_K8='5.704'ps&$NW%qK\",7XE@T6*FYfK;bMaK=":fAEG=`Q1U$'cM]mAol4VI#IOa;?aB*_eAFTr4)OmW3u2d5`&I8SdTG9"%K)PXb],FJZ]2l[_3j2RQR8<Ng+G_QY@)[).6"\[-M*im.bGN5GUUh?`r)oTA/X.A?`9G6Sq\dWs&q/dDT*T-b=B@m*R)l0ZMHGNG7,D#h#3?*O&`G<$D8T\3I$+1LBIT5L/M7@dRWjPD6&QE9mgmP%%M%cpco9La4$U$Rh@jM*CjFkh2q*qq/@a]V5WpYDU5J_kDGp0L9ZR5C..1(YQOlGEl)3QroP5O`l6<@i2FSkko>,/LuJFeE@Wk\$.V"$aXL/f,pomQbM$n@L3?=juhM@Jk[CimSj@F,c-XnI[!Q-k^>qT6Xu,nmd>=*HU<"7rsM#iBMB'p9)K+XBGN'r2pul.7XpX\MPID'6_J"^;g]71nO/Q'0i+8m5`Vp43l]2+h[*(bqb/Q'+lPPdJGcWE#YDF`uTc<HG?J\Z0)-$5O;gQ(f.^Tieijlh^'ACWRG%p57rsdSCXoVq\6_)/DZ'"I[oPPHsiUA%I2;8o=>__f*GaVs?4_i*0Xj^GIL934`P+H]Jh;#`N>^L&t_KP4l2X+!Af2(4$Pe>JHqF(5u2$[#3Z\b%W^S$.g#a8P``5s0'Yn*-0P*,B0::X:I9])QicZ?a2FI<]urm)P`?3DV5\NRsg$AL[-+]dGlfTc#DMRe>:>48CrKB*cE7c0Q2Zq1C9DaYbW/?*K-pu:d9(9V(q<J^A"T)QH4H=HG42=d#9N3rrnLUB]-..!VbbpS8iMDZ2%foj0A;s(q+0L/XAC*KM/jf%'HN`CF;"erEfS?mQrFqlDC>DLmP6"U`0RO\\Ml@^#_iP]5kSQM3I]&IOc9p\5=.k(LT?gWTMYC`,Zr1n@CueJ,)@f/rm.Tf^L^Z0&E3W,4QWS[Q=DBWRafZFJ>*'A&6_q@)9IdOTJZ7cJQH/+0mf]3nFqiBY7gB]8pf^c(c6H=+]Lp?FLE-m(&nj%(pFk<#iHMT`>Nlace>R+:X*jD`[m3ZgkJ)9k=+6]]kWL-]I%:$iGMGM[ThD@"F3E/D2#gk#pC=N2M3MI#G,R)kg@5?+%6sqEbqFCiRWr*!X.iT%2,^#G]uA>GJLY#lKbd2OPf9]CR=uh!bmKQ\PE\[k4^f?T/7RD@e)l(EIFIFefuB./l-03k?tZkR+#IFtf_FPQG>,_nu*u:#rj_E2+Gjh"_':\;N"WP)6#;V9Pn(`>[<b_"YdUiNjX*"GGPuG-PkK+T$4ihOW4&qi4[5q'>hZ;NXB%X;2+]2j(n/>s?F6Q1k'(Y`Bh)/*"C]:%k)J,4b,5J3hA+D88)=_Xi+Pgt0F;3;Sa8PmUdPr<nr56\eHq`>u%AhoNto,WC!?K9[O:Aifh+;6&!"fhQLBY*B&ue(%K,`e3Vm?N.XW!,mr4fqks;VCal.62^;`4E<^po&0,[!L>UL'';cORmCXE^%ut8<OUc@/`F"c.LJ<52(uH;Y"]<b-XH[^IkH/[Sm@UF>Yb`l0TUpeGrSp0&'4t/`R3-7LE/`Wjf9Au)T?_j[.!VNm-gDSe+mDRo/g*NB2"m<hk0B2CCG4T3$dO$rRK@Wqhf08F]\F(2&c?RkTn/!(uU&ofsR)`4#m*J:hSJH~>endstream
Gar'`]aDVA&B+*fTAj4X`?fRI\P"GdAL$O\#RWm*IK./0>U9b60^r:$Y,=E)$_3dH.MVD#as#e(/oDa=2+r)O^V;GfW,6,V;^^n2rk5*EC76*HKHdgU0,tT,)NXY45AfCtfFMZc*Cg~>endstream
endobj
88 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2091
/Filter [ /ASCII85Decode /FlateDecode ] /Length 140
>>
stream
Gau0DHZRn1&HCX[@Y^gjS;*5LH@Y4(1-!+T1JU8eb]K_h*a'I*>=aWH34MPoHh[.4ECL-p/Js,IHi(DQmI!OJ(#N3khjjk>%7*#+5bg$'J7]>pL0)_B*dp3"E_aLt<m+GOBJu>JeSPE?+W2)2.p8;F_`:OC(+\Q)]q2$!(#g[l[2+=B\4F8?$DVnY`cENtmb-gb"GXB>Hmpn$`qMBn(+&*dX[j"<2-#$2V1,d0oaXflces6fncVirauP=n9Qa)Wl>fJ5Ga]<:eTFc/delS4G6q"uL7!t6R(3OmR1hAIAdj?#C&.3/3Q[54?l==h2Y;Ts]n`5%mH:[dQqc!O-#D@X@cs\/Beob#Sjbn(AVm#m@D`i0B1Wa+[\?;VU&fB:`JH_=?;kI[nWOil?F_0?VPk(aX]=F?..D]Tkp'_:[YX+Q0MYa>I.;o@;>jdE#[\B!IXj,,hP\1D<P?\LP1HhAnt#Z9kt_q#Y!#/<k<AN%^+2k%jFR4i=L,*XFUF,n0q5I[)uapt'=D9Kp"aqj=[+3#Cs<WYd&,A.H*W^OC=3j7^56B6'oDS&pK3M>nf;)Re-hT+`d&@<#G[LMe?eQIV0C<;75g3j[Abp[#[b13(!.30iUYqgE]Aht9AMEN?1RRUmIGi`>EWY8mC)dSHgO)8%',K9ib+#83C+J&b5q*^KqZY%e-RQnSlSptHj)>UAlZ(@ROV1>]2cbk[#(2,*8H=p]5<odHlp)p0@OJ)fGKb_cFS$t_Xs,i$%2?K8kWt:fQZ%Gftn;GS72;'OWQae&%j<"alnEEDF9^uYMsN*RqLr^A7uT?>YdJSES82D*n0FABGlo#7$9u/M]:PpPtdd71go:+Q__#SjqFj[c*jutmhI(*BU5c%k6_\s"iI$tP"hU%]+p:<-$3N_.2MJCm"673G;o<MD4YIr`*-m4?LVZ+n)Y\d(I@!7i69-qfS_H(DB/B\X\mH"7UCjPXCP;5N7g>+(A8>(gMNA+C9B,B[l%m"=j`_k1.$'?X>B(34u)O@Cu%k$gHU)l(NC[V(EBh@Oq:o_)2FbH<kZuB6KFM.d!lgpJ0i?$%O$]O##iM8K"KXOrDW*n&<ViAGH3IW"/rmE[V_%/[0kd1+'F6N>a#E*#,>%pr&-1cpe;SJ+__?,,1ZrGM@^+S;hopEbJW7?=tk]kmkrTpCY+S^0/=(.f;mU7__F$oDJ'PRD^PjslB\ILh"5H&nYnb.&o>P7DQ'Us%;&?dm('mH,S'!&(>)'\'_<^]3*R8bH-HS\k\VfS#!ZK6ZNqIT3<"8(^DIH-5H_lIU%[]G._q#TP[kiod$ILSS$Bk&Y\]T_Gg3pOfI9jgg9,U,ZqOr-RT0Z6UM19$B/g`=DtCP&a8B^?JYi#03oBN,n:[R.ML__8dSO!R#8SL'1SHUrj8OJ;gqscLXAku'71D)lY\]99[o*I)EX-m5>`[pB@fq)4a3;(A5Y!2=\R^I-Mk(":H\u3u4+T2!F"sZjGc]sMlbr$]3lfJ\2ih]<T$q5YJ_0u7pjU`"!p:V0-Q\3FlHI^%+T=kSI4PL-rc2;!1T1@f$dZk^0fjR`6(!1$6r4Wt@rIC3i#t>"o7H7^A$tg=XdPhdH7??lD,K-=J`sP=2HrG8-FF:WA7'l19T$Gk'<4n;)Amf`KhbsK8Fau.Ye+g^+fRF'jR7I.o'V[!GFr>9+#VEH'5R6fEs>mN4c-$E9=Y$a"]EAU'r!I6<2[Z4X_143,VfACMa^B?4$m.uW7/oS5'WI,MF_tcBZR2oQJ?ksGD3WK>3lZ0q=q:NRH%VcZ,:5+*7K%qjOoIp^Hqn$o0sdl*)R)S<^l.#J6?Tn%[bTJ#3X.h3?A4?kL%s'QGXFD9KurG4]Ga+&Pj;&>_,D-nK.S;LO>jJJ%[5!Eo5p?p5$(hdkEY@^\dJ[Yl9)%Wl9>p>.jE7O:p(6I<FSY]&kM_C_q`#VF85#Jq-oK!r`o;X;`Ge?=a73m4:dpe*8./oXUtRi<Vf>[S87kUi*2cjpVJ:G<S"SbR58tksH)D9gM*uQrKjsnk,GJDSmERo@\^[C/GqkLG83>*hDZ9M'*'i+BLBlEA$_tZ>MhkXCk*"+fCP_E:bf[^j;4~>endstream
Gar'`YmS?5&;9"kTAhN!`?fT9b?\:;.iVpS5Yr"ikkc/CiMs+9!s@G<@6O#R>i=W62kc&B:^RNDF*7@`-qPm%a8WcSTt6XP9T?-Sg@m_L:r^$YF3%8(pd1>2d;Zrepj!M`_u=?S*Cp~>endstream
endobj
89 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3562
>>
stream
Gau0F=``=W&q9SYkXTo-;Zq>,[1?%!a^iC/4-J`#<A'/^,fUP7nF3\eqqnm!6_Z"!P-a8<fG("H7\eB0I16gNnV:ZT3ZETF1Dp-eJ5DUbJZ+_=ZTG[fSc(Yq`Cs9qFAnB'0J$M(Z>/=lcFtBk?ttj%9_`mfP0$`BPr+kFJB6aE*NGoC$B9*"'<PYa_jtneJcq7GOBnEplpkYi2JWHELYL/.B=$KKFl+,H0XRs9K+44=1iaGCOhFEuoXin8a4X9OVD=9FSWHA'0oc+OGg3":"Y>h"f;+1]](umaZ.N7a&@#l/]c9!%B$t/I`pI3-VS9s)M4LI4JRo?S:+gBJ>h^qS"me)IoH]>;qe1HX&]2WLOdE_s`dWPbm4AurnWGbW\cp+aD$Pj95.CEVY:?IIGKQMF0]QOAhjE`+Ri^8uj`KZKU^Q($@#`Gm0VEY[%GC>68](7;4H?87r;%o5B[t!Y8l,3*KS:C4hfbAHUg<+7D!-WYmMM_fEZ9H"n&4I"_qigT(_\DQ.:m2gG\P?7:,RJ"X4s>Z>*OV&.6TGp"#o52le$4J(e4E.F-9R^k3"mt8E`-1LLW!(gij:aGLTu0QrDfhf2r:th1mPkIe\43K&c$;kXf^d`p^/@fod%:-I')+eg4&<e<UF#SB5Bd"BdL&]ig&,R?FW_X_!)2&PKT:-;[:].;bYa>*;>a]k)dJTp-<-Qjq4F[J_F?Cc?)^2Hr:FGFM.mO@CCS=ndC/e7qsXlphdN8/i.jp0:W/PUqhIJ-?F,R1'$gmUG)T\86f\U)lHj*eDXi'dRt0@S&,eCs=)7dBeTcd>PiDMdJ8)4?V(Z%StY"[>,oS.r[pb7WuYD(m"K8INm`,*m#tBo-!0Z]-n[VEps2slpP0I`##XOP;HaQi<p1&7(ftu@HmBMG^bZcK,P;?X<`n%SX2u#&njM$F#S4SYu36k"ht1<&+:/>"0M3El.Mi0Hg?3!')KLMXY5)R*.DMS<=a5X=kW-OFnM8[;0<>.mg5pL+5+ILr%X[(#^:cO4nf<@7-nRO7Ee2MM*G.%/h-@LE#)fTpTeYVkigtQ%8SN8*i0+`miY;<*`IdWG)B-0,bAKn/C&&06&679)\ri@5(\GtNiWJUE.NhM`8cF9qeq6f"CaD5W!mkZe[mN)h9F:CXPYj0h`,3I9Kh.Ek@TWJU,9lBl9m1M7)L4'E?C!(kLe&u%F"MSHnT`UaNdc'ifFC_iOD+MpODqBhCq^^4]R)<<%O&5SCO'G6o+a;m&-oa2F)s>ANl#k$tB]W%#9K<`X_je>C!aA,'G[L?Ig;ji(iF+mC/^B.Oggc1hM53V:u:YZTj3Ae3QS^>+lb_:K<C3%S8RXU+%36Q7a+'8;9ScQ&%+%n8"=DcB9TL3a?-*&..kc'IeKg.JT_a;l!*W$ME;qQZT?.Y!u3KX&tp5EFcRaSC])HA$n.S9L97<XTGBTHA9U:T*_a-+T*-c?,HQY:jXN@8<GB$dUi@k(&)Dd;K@\aW[r-bRMVnA4g^EQG,0#,CL]50,+W%d_)>::A]%^2"gL<1:1VE2b6[>t,T,=S+'J!qj,i4H?"]*N_E;\U$l2#sPT2P1;BUaq6SqJSV_^Rt%3M5CegSNi=qTR`)QrQck'Fa-'cS)4$DFD6#i&XK@AK*\>/[RkJ,o3$/,oN[8"P/#$/u)%7e`X3X8@j_oa)"imD!'uO28dH=`?H;VX"Rco2m"G_QC*H))[r-U5^a>+@ZLbTr`pfp4h*Jd<q/\L'p7#fdAIH;u/0B:08+jD&=,-r>1#fmBAH-F.tHYbKS_F9AeKK!i(RW*srM]!^6oL#XFr5S'.(I0n#?KgkajU/+>W(YY"f3_iqi%W7A>]6T'7`J=n=[nFr8c:BdW?!=r6)*kO@1hm]+N9Q0ns#A2>7#7):gZML3gs,StXUkYl]W;iH:3CAo!;V(!TXt&Co&(>>[Y'r"lI4XjL<G!3eK8$uoJ5>8,(@TBG5*Z4PZ7?%P<"<;=Xpj5e3Ijnj!W9,@^`$Dp^o)R1$Jm7U5o@:`.#e/^KY(4]9=Enn>-:bG4/%9:+)/#'@SZHDXP2BiM`51`9,g5:=o*QtG)R9!0\4'E$>M'%NIppLV9@/U*TXlA,a_/VaV4frgpdF3A'?q`4J3NeGW6RnS&puNcDbR6`eh/:0Y\Df<@O'/VDWQF'[tc2(l1tMN_FJ:-q[e#D2b3)9tJQ#5+&0%973tINPIJ(I@Y&=LeEK)Q4>`FoV:&Y%pfmN$5Lr14n3)BcmH[n6*f$XZ?[/>G/uQ%A&dlW<DR$-8iJQ!ZrM5r(aiLZWjIi,Du.tp_."oBiah+EeA2l66@,_&BkF&5LoCI?$S;;iZedM0H'hmFD*'%(E/Ie3Mc.;aRmtdUM%Hp!]UH7p"TBJfb^3g2X>*$Kcj"o3+"jqh'&(5LV:bbaEf9ZbN/tIql_2g5YpBKp?d)"t[!C#BY>"Z.<F*[MJ/Kt+*__J=9"/`?A+7&c>+DLk\gIWG0W!CTdOsh619T"^W?<CmBcl;_3lSTs8%L6j4OF6u5dm__UMjLPj%n-nnT?86@BJrS#6Wb<g4RRaK?6a5]+"(;I5UA;bc"g.[B.prSnbY#eWs)P=%hk[/KfFh#qN85>I8#4g`X8%TBE#P=E8j>dDkA(40?PhVtV>$a0N_Ad5Y7cQ?jTgP.43uSG+M2U.)-Z6iIehltcXH=1[^F<Xdi#HWE>V"Dj-LBV[uOiJa.V0K!ch[^]'MSlL_ef-s5Y4ki(XS))VBFp/3,KKQQ8[fS=kf+<l.a8.5V')u<Zh;LF&S<5]A:0IU%1s%O+g_N\-G^mg$5sPZJ'b1'26=ub^nma"!_ZZqMf/eL5kj;qkE0FmCp#a[)MT/&s0nI@AS3Nk/6)OO"Mf>Y=%q*oT!W&=@RTN"UF`@_C38kIh6%1P=?GtKpI8;-o!VNa1gMY"ZO2U(LPl?XB5te4g=kEPY!d56<pB%@H"KeX5BhF)ZPC9UJCEWu+;B6sn-A&X<ZaJ7mmO9o8HAk#IN886u4XKAgLU,O1:j.g*]%<mR['dMB\tQCB5V,@09XFQ&!2<]P#q&PP$I^k.rT<`VP$'#.6i)pJe*+O";,=aVl"76i-\fYJkBh,]%/p4B$\qCR'spe=#%,ID@"nG3;V2=MVeIQ^DX,Rg'D3O!_#b@b+_VPfY<"8FT-!ep<nJ2C'jiFe*[&f=\_#DAg-N"FcKW.ULJ+0\qh;-3SmT_^]Qs"I^t,jtKc;Z;3d&+=9<i`$BAr#4,l)3ZA(u!**064i^&:iZ2!r,Na>*D<%P+^<%@6M-msoloPk9nFnEei4:)ES:SF.<"oq6DC7*?\CQ\W!eH\VlCk:u:94N?TVqKF<ZY!;)&)J(/<#s<.o;YaC#MbJIO[4\1si7EG[%$2`]%qmSo4eC+5+C;Xj>hH<scl:s*qunY!^8U"gim"Rp]AO8:\gj@,qLPF/]]7YC+pP)Y'pkl2H]gNsUm$!&Q9j+GKl)fo`@rR4rPa(_1<m9%<)gGu0^p,KQ/F]Dem?35nZpuec:Wg`#aW^2mp42]/m!"k7FA/Lf.]r/`A3!ZP(m@#K2s3+`^'6Y$Cq&*.q`QD~>endstream
endobj
90 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3217
>>
stream
Gb!#^>Ar9=&UsJX=JVl=T3;qQH'Joq_A=LGD43GM$M6W_YU3EeA)>G+A?/3!HY7U;8WaW3T;&`U.+I\1c?s[T"sY"7EUpU#+`ok5K9$jXJgPPl<CoWC05*1&Gs9't:0!L";j14WX+hlM6P[n;r:)CKo-!U;*&IJP7eB)D[RZB+5S4g!?oY9^M$K@I!V+Jr1;t!A)qSMIN2AaR)7eqoHA$_M&*IW?N0b,D1^p9pB5$i<9n#Ak"@(#Gi1jVTib)WMLa2QHA9'UuLbF?.Aj3f;qqQa+gdhn"Cu="7V`VRM3BiJMPRmqF!jI7Vi8W0iIXRK5kRhusVe7FV3<Yq+)"8UfrtRt=`?NT>@2-AW;=3Q&GJ=[4hE0BSTgYVX83,!,C=O>'U?O7B_.YJq\RJZfq=m1]Z0TWRY2%Co=^AYSS!J8&fYQL$Mm,DV4`C]5+T9O3=d46NIuW-re&\5lfBKEDi`="""nQEiNrNUE8<!("$=5\G2F-0gJNN/3-^oK&:!b)E6[ga,C]_uANP!BSTC3)fE/%;PTod9P_bIoUJu<1)pc1bikY#=2fEqH`'LWF5?nMWD^@0>":R)=j)^>/:DbsDiA/h,`=V,U(8Wt9_`TNR5j-kRl4D=l+fJ%>38@mIN)W\D>gO%!LQ9Jha[.J4^D'>L5X:?@g%]F;9JR_oKa!+^e?rfCo,0C^\&*hXWYIBqe!#.\?[0V"^-b<1Lf'2&Y4ciL">8Ffdg4Kek4d.?T2?QC4!m0=)W,H,"GC5K?n8V=gP<Nq_C!<?fK.V/UFCPpRptE1Wa4PB/&@.,36%kV$+'cet?Tr^c]lY.g;\kte&Ub?+G*5XeL.](OBVq3$5M)n]/;,Ar'qHVrA_ApI>qP(?Yi2CtMa6#FNg;fac^&0.FdHIi>cj.$<m._jeGtm`8j-h+!'n`dE&56oRJ,ApC.ClTToR&0;GFIU8<Q]ABF9oeTe792Opm<Y<@iCeiREs>,X[DrU8'nQTHHPl?\"mGc*eJ,VCb\4:.=j%m#\B:%KZ,0FB.u>\dC&1Jqk9#V!KG-Md`nkF">>M3u+$\.3gN?$gPO:=P.Ks6m7^Glc5).LWldG/KYc%dOpAo*dZWEUCiFX$^+HF-905%LJ`2e]/1Z(\HOU(Mlm'!_%ZGGdp=WmX_;5sBJf*b@V20%6*E414%C:M"cuiBaD)rU5.B.G*%OS/%L%DFO+%lV<4t/N[%RKY&j2GjLbgO]GD2*6`M*uO3WA%c\>I+uQ`WZ%W*t3!CG''+a?f=fW%UL(AFeh%/`?N#,^<W"1$+m*XoTG03><C$GsSI>rU=p'Nm#qGZgDhR+>&2o;S+%GmM]gC-oPE.M)^pF5l6JL#QI1Hj"]F7+d!;#n1"kD094:B2-`Q(rGn&J=-.W/_/Dun>*8Y@nf0k85bBDL8j+jCPbXL27D]13i;oam,mPqL1sB8H*gb(tG9CYFP-SRE7&\kcrUn]8>(-03$j6TH!N/GiL$1d:Ur7qZ:*H[N$T9R$\kP6\/,]3_,+6AG22pgmpRb2'_nG+K`nSFJG]M1k=cghabE]9mc+_VdAhoI>8dk-Q00fjo/\k<!!/[V\!)NCljHJ!n4J`F=$r^XI///U4$fB_(!nEM]X:LTIH:?A8;RU"PjZmRG_aK^j#b!"(8]6K[D:>hLr<8)j&/Y(!?+6S&`)>EK8m.ui*(K:?l%hT21_Eae93js!.&pXIb.(4&R=e^`i@fh[s5XD<Icb'^LH8=5bnBFLb"j;HE0BXfE):3R'/-Dk4jB(V3VGJC,K+WSq)>WmBj4QZIAonG'W7>CMX+U,J"?bCd,ZJ6UkfWL2*=o6OP?(`O":Ph5Tm<soT/l&^Xdsl@s:Rq5+LaY"?qPmlWm!`%DUp2ACEZ`CT"eCQl+'t4p%^=jh"@C1?N!cMudBb"SQ=/p/[!(bWd'FoBu5Kk]XR4["D&+i;#9WET0Ce]_^su(#ben<nKAq*%6sM8oToEFd*aiOeQ^s0+0.>0"BOVl$>sE;C6mZ982OpR0AjT(Kk>JGh6"1=gsCf;VkGK;7fQKhLioW@YS/YVGtBtmM+sD9(:?&'qEba=>ZfaNpFXL%_tC%GeB/P/\i[io_tA0Ck6g6Cmdk>+uM":C:iC)4C[H,5t%JjK0Np7$t3&%d:K.X-V%'hMPMY7hpB#%a2Nc8-PX.FmRQ;/q0gEr7T<YKS+#%6XD>u373/mm)'o`__$YBoL6+<*b`!DqQ[5#o'?aip1sTDbV6=Z(P7CZ'>[5tXKj)[c1bk]KA0#2Xoe0-"?bSh'RuP/=I(LETr]Eman+(>dm;Jc'5>P2g]mLcKrq(>Ts791mM)P_%5:aB*E@q=r&>8;8PYZH.d>R\2UE*:d5MD6hVDNWh0WM[MY+cpkg*("iaCt$U`up/GK>J\B<dV]P0$/i14G*'N<rKHcYFoP;RJ.!@[u=ORPDgE?SfMO_%_&J">Otm8-W$AT<e^Zk[\L[b1"(7=q.]&od09"*1LF*\2KAmJ-/f5fn/d"3mMu^<bb-qio6<%uK((Gen"-NF*qM;J[V+`'5hCk`iQrT?[[>n<)SE#(_Q[\<<kseqmQPr=G*HN!U$3gj"e'ET6pB08<Pi?9k;rUkY#uM-1*!G^Q5<(Rn`iNN,(q%[JEGe;k;_kYZM-OS]<pF0"?.W52JfrU!B@4782$SX9[A/>?8'h7R^st-BtF1\$?BZkiWDuIL/Z(*k2B9rN)<_32M<1WQ"NqUAd5)3Al)[95Uph3Oq5@4VPL(3DCQ\7()5tW&tOpAiZVNDSQui%8n9n,XedS2j^Q+><?8&>Fa)`_*QgE:[,TB6AY%]Ohk\2Uotmjc]plfma1+?:LJSB-0QaY1E.]6[PBE(kDl'r8+!=.(\3M/,C)O+=M>,,Tcf2cu7I,Lq70=,OrZKq&)>,SkR@f5.%`+LYm4B4TE*alZjpsaXV%7CF.Z-q7qOkNnSsmg:/A8VVFWn"OaPKAXe$&UDCgGj(i<Ap(qSn)4Hco>]PdCp;1CK/8_8nMSr%_6M'Z+X[R?n*0L</%#o,j[2(%29u%s*nXV9_fM'(Ir%r'uc0qS\Qs8E"f%6nRrGeEtVbR:_<)K+1pKUL[u#:U.K)?&STk)R#mB(iRCW7+!28IW]]f)NSO?UT^:[[oH`&Z:dcPG$<[caBE_=%0`\4VO#1\LY1rTbl1GF*Q_,42KVpugf12.nqWC"Q)>qM22+SU1,KS&]S<\ZJC)cm!,SKP%6F:q7Mbs$~>endstream
endobj
91 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3439
>>
stream
Gb"/)qfCN%&cUU9`K!%)3*1kZpnhsb*QM2#j_VnuPYPkk<^Ve,`.T<L55aWhol';N02W90P4k`eoHk(T!jE%`G!CAd,QSMWOQ?H;)W9ESHLD.O#pp$&MP.cG)Z#YmmmeWBWMkD\W1j@)8H_mK'qBL?kM(M>r*XA1&[cPZ^cE*liPG'j-'CS$&QG.!;2#&iqmlc[.6..j2,(a$j<phiF/:Y0&9OK,9NcXkB&FS`$CX_IrpN@/BLoEYK-6YPW#HlCWamT4/]VAME1EYkJj^jnh@LP+$B(NQ-Ms!f6)><+KLDI7r+@q2,`RCq3Sie3C85$6HA5\XCm9i@h<!Y+6ZNhnP<_p69\OPB)6L*=-X#h+;XQr0">b%k\Soq;0.OR?;)LYh7C/guW@[h^A9(m)=;FV^.-OIQ&:?hscgd<km.,N>MY0FojfUKSRgmk>-n,Oh`-S\BH+JnSa7D;#6^XHufsa'#IY'ZHq@D',obtXX]:.jZihAXYcS#+463"7D7'.0ilpVNJAeT;'qi4h\%D_Q[Lk7TSk_1(4g:dNGg'8%^l!4a?1Dl/X_lMJ&rqWKWC:6qh%@i,CZ\>uK*W"tRbX_u_Tdj?m0c9oWr-E<Bq_Ga#[RD_:S1RnI<-PT+QHQFEF:pe<gBfGJ,7.T5HpuZ[d"t:g\f,6;\XrKoIQJCS$)^h`3<P\o#3mi7_EpoJi&]^RTT:$>3#G)IdFB`,_:>bSRZ709^U1=@.i$lk-5X9I/J1m^3`c\:;<5GcIBq4D!Y8&5o&C#D/_<9AEgGRu0LM#Sd9`U>8UknH\/@uo(orr"?"6GXgo.j;c`nQpkWj2]mDC!p*Hrk/dI=dPkd1r8ZY6`Uk&cnMVSPE%:c&IU.bFHOs1TN\L86=L!WI.^FbD3\6c%F,>>!#+/rYuHZ.pMjr%+-<QA3lp@Z8(WL!@7<Bmlrc>BpI:q,.I+ndZr3V%.>'*D"XP*SALrOG]AcYa'E?X42]MMZq9cl]nddU<9GKYalPhm7q4i995;0(QH*-1O&U_#,Z+3TOPXUB40HppamT'JW#YfIDe\H7058>rjE*-@A]GK^4:qWh[AbRUdCnmBSFU;.B$_,jIj9MqG%$N=Z18I#05`nC&-pOE7qFq.,'>e]q.q7e?`j3GVn]ZVa'iZhcog,%ItkNO#+tKYP]Mj[DDO;a]jG@QkE/)=^WX/`5bBa&!fA:gduS?<iEUVG%[V0L.tUJ41\7!fp617:47N_b)lW\k=-\>Z_=\)8B8^<NVU"t."W^[;I.#='!pe?bd[W0ZI`.4CaTsFmngLmWfUa_cp[7]JhLgt&"HATpti@KbjPB>_k_Q6h$Mf5^f`^ijT6'5bR6QLmB6&!jD8n\o0$`H>mpcEVMEuQ>MQlXmS%JV\.HKM%,s:3W?KqDf%ZbGoF]0[?Y&C8=s#OqDf2hMe+(6HQQc-qqfLK_?+5I=e\_"hCmOR,G!srJ_^[;Nd^ei"iQmU*gJ%DL_EQ:hSHWgXqO:!gkXAIJQ5LYf1<$b<*qMTB(m8F,Q=ii=)VGa<q1D9rKNU[EjUWh=&LAC3+(rS87/!%?WNgfIT+Zrin^!;]<K6F'5Tl#P9,b)gk,"E>l0C/)XM5"Z;&eas:F/S.+=?[<o*B5h=$e\X;%0FAoki?BMOI]sd7L%mV'Yl:52s;aEI.ATpH@a=)S5J02dt_uru*)W^6M["M'FFi#UN>)C/7f+%7/;EF?\(aNT._]q;ZMHero_b=kU0(C=GVr`e'YK:dM53]lF/WI\J#9]FG&F2AK]iS**"\Haoa\Z!p=+95*?RW[\jS7d;QTai+8*U4b4Q8lG(fXBi940#3:s\<(t=Q=m+/QIIt`kfUJ\r4)a_aB9UJaHHBa=PjKhhhZ`B&Y4@RmsA,WVE^7:-&>HVX]FelI1]'e-$\n!T$:We=^*J]AX_Wq7q;=M^%RT+i:V$nIR5YIffqj:Z'",:e#XfnV=r-55J?6a_L;h,$-KVfSaC9M!!QH<7sPbsR+trQZLGp)V]g[DDS,)Ah+_tqen3r'WPNmf_nD;/1O%[.qj/!r>OK0d2b#obTc]PIk]^L8+8Y/em2`rg&^=KXYX2aVQ.K9oUTcsbkVH>>X<R6i%AicQQ"<i%i,;_CQa0.EA\$'he2*["]Z8[1@-QHFO,pDWQF*4"2P6P:@$Ds9></SmXU6W%e=VE<5Dl*_;\)o$@jHppo'u5HL0>1B/FgYi4KKNh-Lq6<JW3Chp]:lg6V;B$3`d#SX@:&7\I>($i%JJ:QQdpUa\N0K%WVo'N>-^Q#><d&l,XJL`59_U_2pJ)Co=i*:Dc%:NKo#+0I%bZVQdAC<A0=#.oQ<]b@!(9/d(R^@NC,+a->e4L4Q[C`f+T@Z0!WqQEhnsCqW^/[JrLE\J<QZiE\e6<rN+L;.u:)o;+Og`$8fHIFqZLl4f>t"Abr"#d!.!3]Z>hTUR50<,+UY(F2WjdBAMLHG9-NK'm]2d&Y:ppg?Z&)7E\]-:jS1TCka4;@Md1d1$,r/G(K;M$OZpeh*2?aJW*TgU#u_?k&=t&Q&i:#kNU(609aTrc%i@fbA615"U@MToeG-r5=ZI]u?c&3!q?0'3LW.j=fkaVBDPU=.%1V);7%krpNbGZ'a&n!e6c6PoUt_[6PR<C^niO=-hs:A@YZSI(RA^=WFqM<p\UB]hVB/%33Op^l^(OcQ!lIo6<<E,`?11[M;ieZ5luC!(^^q_9q,g6<$O&!mHacF)r%_Xm"e%POT1R9`+#F2%JjC=?p:r@a]3gPBV1N,0J]4iBN2#G>8ii[BlodD451BH=k!:[n#=*cUJ]bo0Am?0ZZqo1='h2l3lKlSWI+b/&XlhO-b2WrJB'W&B#c[qq_B-Y__+sS?GuKWMb[V;Zp<B.,i0?,uNcY/G9W&?7_U:@-@Fn8pX$QE#8WWIDZ+3@=&Ph/mDo2Jg$,dOA_$:r3#7qB[J.V1p+!0B>]bn4Upo/EIIjk]\,++/`)-rdXuK1.3$^\W44oJ?F*;[nSJ&X0c#*GhC@"+a@:Qa`nXp>i[DM)Ohh0G)'a1QD7BdIeWM]pW^p6Es4kMD*"(aX8^?e?9*RZJV(91YZ^]<:X,@]_P+Gd,A/#+kJ]6\tKB*fcfn`?NbI?LlgLI99aTBj\4cLc/YOV]70-O8E9.R=9$@6-g=HBBe>.(s()a2f]=.2RRR:UK*mT4*u6HU@M7enN:jBTDl%A'*oP7/<JCgg=28iBQ>5bY`CCC5`%5>)1F)+F'D<A&'(.&p9K[W^P5Id+JRD)1FJ@adaY^VA5J3]iKP:R_H)VKI2TB1MA$UR+35p8,%>'`t;IhU(MPSK4Em#$6H9"MP;.pW>,Ir6+0MCbWL=ol']EaU`WckOt5YPoONPr3Wn/r(p['i5Si_-p#$O;i%K')^amrb6W^&&>USeIr:f'!@:[k12eVp;O&OoQV@Q-<DWuV&f`pZ!SQ/o.p$]^?\W-#*W~>endstream
endobj
92 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2912
>>
stream
Gb"/)CN%re(B'h3EBh#jN@a@s%!I1YEDt11:?jf#]79oLZ"R>T=]4l_lWNS(h^_imjbIBp:5WKmUhqSenrPu.aE*D55f=b-rB$SQHl>9I1BA]9?ii_.'Gt(BB5mEh6Lp;.+c%mN5uTZ=O/ZNp/=QQkdh=AdUr]4-VB?IBK2Ws]87D)4M-t(mDCDab];R$6]5"Gm'E&JQ;;$kDOop5W@kY!^*e::`HZ<Wg!*h(eQf4Kr:<XbC(<P`pSkT`0CN@Ku?Wta2C)'Xl19<6$"D*EtV?!_gC5"Ja3VE[pr!A!_;TQ':Z[sLf>gl.5&G0jY!"Zd?mT$H3=keHXRK??*Eg7)Mj(<8li/8(1lgm=`_ejm(X6gBC<QjiplM[GrhT97!Z2[5*88'+H\KrTkkTaa*Z#\$K?KDrK&(fDA";e3<0S4?QT'2oE\#dsYB*(Xm)d*t7DV!WSb!7pNn3>7r(LPJb_\UXS*uN(2C13+8#L@ZjkXTSSRso;:`KYXpmt]3<nb*X6O$)Y(CTsE@-JUI:H@@i_>j!bT_m8m"$P32jBb#lB(b;AL(!ZGN_[jMP0:Ka5?^T3l#eL%VIZ!S;plh3j(q+6q-NR>0h:*]`3q#W!fH!D&m!Eo_T.#/5^5\l&Y?f/4c"0T(>^HAR!QF<b;(lhF8QC!?6GEb#8>D;I%pRK#O+)@<kR>$]*QIcDWIa_d%WUI^N-\1i."ldEj,dG![@-7;7ka(7?m^6Rejgr&]^7"rbrcnnFS=,'qY"SV9AjX4)NSSH0b/s\Soa<T26\u_YH93Ba_^#72f>(lga[J=b\6>j%<'/L61_sCl<a!4Ik31Q0loo6<oV+Am_JfBs8I9f(m;&#"?(c(Y>,38^1GuS#]j,1QS.(RSMF2:"6IKO0!5Gtnoe34VFI#0<^Uo((66$G_TO]f3G(.%QUM0Yb=Vo@M?'N7PlP,*!DFC^!PBl`Ql&j*GZ=l#*NTD5WX.N_-%LJG_d"9p*[%JqS3n_3ji**!=k&`n+H;^(7JuJkHr3j/1K<F%6R5qb>DpG"J1Qrh2Ki*e)pTfTi[i.a"Cljm?#%reA3J\3s2.icq%5)[.i0QZ>V"WO0\bE^^=l8SH_7DZE8-/jh7l>Gp5`Wt)f@&q3]Q`HV/tG/XP!&+G]>:=K"uNKbNn\WNh>7]igj`d<Z!os0pC^TU,^*1IC_sn6Fa9ea1D0O0/SX9]#3*1J+u=.I90M"MFJVo7`m0#CFkm=^eAZG\]+BlR'G4#?hd$HY#\^B6pm,;)$Ds@-:#pXa]'bX_n-0GZ[+lJOj!ojRQM]>-UCqZ;LCEk1Sfa15S"V2jmXSKJU;i>2s5[up)]uf5Po)6EVNto>b(D@_<n2U]BFHV3^&4fROgnUZ.;1KQn[[<r9-7'0Y^1UaaodO,@HfUdO+q5T>nLo,B_n\+';Z<P4:FO_(G(]<pYUg4GJJ>JM;r?#++T\4(-G&r>XW&jFr:&-N#`%rg5]#FWJ[B-E^A;(*6obN%Jr^ds9l,<k*A^%tK][ILDf>('mTQg?a1-#FPQ_d=-H$#TnSX+t!6Dq:'?@;//V*[(4$D(>l4iLOP&uOD<.)lcbnZV//![POL0:#0m@9"b69B'#e-JBXod;]*]^0_;4E)nLPqsLTC'5()]%j];J'<C+S]m5stWX@g;"s6<UP4<HpG(bR+Y67R/#u2$+It(0"-hCQ/<_1!9V'A?0agkJ+^@Wf6s\[CmqhI8BdLEZ-8>FAUi7O3Ep`n`([Wp$lfLQDBQ`or+BVPIL9'IYEGn,\+^3O3NmXnS>=#_O%=+]a5dq*+DV:pjm](^=W1d_^W+k)rMCbY9K0TK\sU$M>:E$+^1jGGVgnHZJ9>koJ>g"Z>[A:9-1690=%G]P,q6_l:"aLZG6M+7G1Wn<aoRmjneWS6(qR\W`30YkHhq8iBL!M0c>iRM'@CZ2GqDRH^lMD2_A0#&O5R#=)`%_A8Gg7LNo9[KkZ>'#;.ra=lQ\CfhXRr1I$ht[rK^Xj5uf=G!;XoS5$]9<gfX,Wip0'Eh#<W;J*7PjKBf2fhS42j/sCfAN^+g.L2N7i(_1pUAd,(Ct%$W(ps5B,+.U7m(5d?@+$oZKOqt<O7<1nm43rjj7_U)>.lK/&dg7$lP"97J1(u>_%%`f;&7eH(IZ]>,>!T\:9U_Q&J53Ag4uqODeYD@%2lIEm:lnQMj-m/qBJNuU?cdc4JlK@as0GTIM@TaG3D#2q`-c540s'+W--Q0i+hP4&0rD^^&)gToJpnt//OSenf3eXN2[Uj^`256,q+Lf)[497:Rr[H_8L=B4OT(I)Kefm.:kIZ7!,t+n?,i776oPjJr/U!M_?TCo+sOl8_&R$Uo+F=?17&'F=o2]78`*^%81n%l.F$qiHqLii\QrIXp^XG8It3dVl:YSMKEe#N*.,*d94(%#nuk+GJOffmJj!ZkC5E3'[pJ@U.WJSH!u\FaJ0iQ8&Qr;H`GI;MWl,#BaC<o!h]GO!n(ESR^/M*#(n=l:2,sD@dC%GX+4p8-aSKiAHCY3NsK\D;"+=bbKphu'(iK#RU)YJZMU%'^nWc9_RHV;K^NQW6>>*GYle%b#RbG9i\L!ie)u4h^H\T[%@\=l#</O4h<d?P6.hOt$Y`[REaq<BP0riXrOD.Zm`*sqAGbC44gIWGhdC>U:V-h;=XsdBKSHu^25mHo>WR.II]MLT%eJ:R#eYHm>WEi#-7&%b6->t]'pc[nFom=S&C(D[rKr?(aq4D@S@QssQ%#Ni!+34sIY"Q9:f?pL(;MrVnk`;jk+RS>1u-RLK`V`5!\8/73,+NB)0c,*_NcX)LFt4-<pYe(1%B)8bA^,@;lkV`@l>lC'2NVoo=_Nd1gS@ScWr6+Fc%e"R\H,=?-j<kh)*d^]s9/ocC'9Mq\9i4eF]]FC`9h4#q@)f7S_-W2DVYj'0,e0+ruV%~>endstream
endobj
93 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2896
>>
stream
Gb!#^gN)%.&q0LUoV43PP6?-\b`e73'@4[T7oJKk<@N`W,UO5)+\5u6laK0B'IiW'HagF_Nm+0L(SK1=1ggA'IRs19]*3Go!;2c\Ts.W"0ba^*T4,;jqr`q!P(or<Ni<n(gU<j@'*I.0@=43%\d3l+(+>G$X4K1T?=flM`+q=[<.U*X(IZSR*[^>`nH0QA82GbSk?uGQci>f:U6CH\7<>DFlCd>S9=#X8Cm.U&Jr7l@q3k`bNt[3[C;D4D+m-$*"a.s`+et5J)'r3p_!uX=(3(gB@<;sI-e8T]*PL'7>AH"MUXsI2p$1ZGrhB@oH,t#^Jt8_LI??cU:;=MMas&(qfgB?APStlH_>-gB\#jpBFfJQ4Fctb!=ci2!c.0;bDWln0C'+m-WkitlgdYTgE7hF+1E`P\-B+s]-$+S,cr8CQ\.kD\:3ak?<_I*mZc>Nij4btBT!npm-VeH&R-^k@meNP9XSq3=<F'<7:J)>)<>Kn#jEiKmanK'\rSVSA&6S2R3S^53r^5r(\L?V;ra!PY39Jj2\=V^3]RL+mbqBg?9n:A"<t0BuGj*/n]0qqSW'Vr2UcDn?6F`V17VU>V;8/ZS(V+N"[9)TJdQuT&M5ibD=FGRE<.i8'_'TeO\k18?:t]_6<2"KR@SXq_'!D3&WBUftF2.*`pIMWW@@<Q%:fdMbYZ?VerS<J](M,e]A=*5"QHRE#B'W2ce3P1i=mnQ1?!cFEp4kh<opfm(O@<"H9L+hYGRTrpEqLQ4_;h-UZ@mRO&UssM`&r9TEQl9fF9G0pZ(BaVfOl;`pBO9Z(e]!=P2d!3G;jom+Q%?f#+sqmI32Eoak0Fe+^5-QMJMC(CJ<6]4!(^2=2p5C4r7$2`s[^P:r(Xhj1$1b(Z:'dOEr==AL\CNGt@"`bJe;enk]2ZEMb_F2G=1mhm5Pm'GDN\Y-pK4$2GFR4<)_K"'Y*,[>J?\Ud^F,HIX0d/;K>6<JU(K(d]9F)8W4[!4c9E!2#,L]B4ZmE7q0-0b-+'HW::>W>Ilm<>iTMr;]8)S?9E1<'D#$rcOGO,u;"KV:[]J[W\tWYnWW7*,c3i.a0*2amVBZGNsP899^S!q^;&HmZk<Clu?`nM8k/'L<5nR^]NE:EXRO>qn(p65NMtEqiZFF4FZd*/ekQN<gnc"+$_FY^&Xbl(/JZ#09neF`R*?e_K8='5.704'ps&$NW%qK\",7XE@T6*FYfK;bMaK=":fAEG=`Q1U$'cM]mAol4VI#IOa;?aB*_eAFTr4)OmW3u2d5`&I8SdTG9"%K)PXb],FJZ]2l[_3j2RQR8<Ng+G_QY@)[).6"\[-M*im.bGN5GUUh?`r)oTA/X.A?`9G6Sq\dWs&q/dDT*T-b=B@m*R)l0ZMHGNG7,D#h#3?*O&`G<$D8T\3I$+1LBIT5L/M7@dRWjPD6&QE9mgmP%%M%cpco9La4$U$Rh@jM*CjFkh2q*qq/@a]V5WpYDU5J_kDGp0L9ZR5C..1(YQOlGEl)3QroP5O`l6<@i2FSkko>,/LuJFeE@Wk\$.V"$aXL/f,pomQbM$n@L3?=juhM@Jk[CimSj@F,c-XnI[!Q-k^>qT6Xu,nmd>=*HU<"7rsM#iBMB'p9)K+XBGN'r2pul.7XpX\MPID'6_J"^;g]71nO/Q'0i+8m5`Vp43l]2+h[*(bqb/Q'+lPPdJGcWE#YDF`uTc<HG?J\Z0)-$5O;gQ(f.^Tieijlh^'ACWRG%p57rsdSCXoVq\6_)/DZ'"I[oPPHsiUA%I2;8o=>__f*GaVs?4_i*0Xj^GIL934`P+H]Jh;#`N>^L&t_KP4l2X+!Af2(4$Pe>JHqF(5u2$[#3Z\b%W^S$.g#a8P``5s0'Yn*-0P*,B0::X:I9])QicZ?a2FI<]urm)P`?3DV5\NRsg$AL[-+]dGlfTc#DMRe>:>48CrKB*cE7c0Q2Zq1C9DaYbW/?*K-pu:d9(9V(q<J^A"T)QH4H=HG42=d#9N3rrnLUB]-..!VbbpS8iMDZ2%foj0A;s(q+0L/XAC*KM/jf%'HN`CF;"erEfS?mQrFqlDC>DLmP6"U`0RO\\Ml@^#_iP]5kSQM3I]&IOc9p\5=.k(LT?gWTMYC`,Zr1n@CueJ,)@f/rm.Tf^L^Z0&E3W,4QWS[Q=DBWRafZFJ>*'A&6_q@)9IdOTJZ7cJQH/+0mf]3nFqiBY7gB]8pf^c(c6H=+]Lp?FLE-m(&nj%(pFk<#iHMT`>Nlace>R+:X*jD`[m3ZgkJ)9k=+6]]kWL-]I%:$iGMGM[ThD@"F3E/D2#gk#pC=N2M3MI#G,R)kg@5?+%6sqEbqFCiRWr*!X.iT%2,^#G]uA>GJLY#lKbd2OPf9]CR=uh!bmKQ\PE\[k4^f?T/7RD@e)l(EIFIFefuB./l-03k?tZkR+#IFtf_FPQG>,_nu*u:#rj_E2+Gjh"_':\;N"WP)6#;V9Pn(`>[<b_"YdUiNjX*"GGPuG-PkK+T$4ihOW4&qi4[5q'>hZ;NXB%X;2+]2j(n/>s?F6Q1k'(Y`Bh)/*"C]:%k)J,4b,5J3hA+D88)=_Xi+Pgt0F;3;Sa8PmUdPr<nr56\eHq`>u%AhoNto,WC!?K9[O:Aifh+;6&!"fhQLBY*B&ue(%K,`e3Vm?N.XW!,mr4fqks;VCal.62^;`4E<^po&0,[!L>UL'';cORmCXE^%ut8<OUc@/`F"c.LJ<52(uH;Y"]<b-XH[^IkH/[Sm@UF>Yb`l0TUpeGrSp0&'4t/`R3-7LE/`Wjf9Au)T?_j[.!VNm-gDSe+mDRo/g*NB2"m<hk0B2CCG4T3$dO$rRK@Wqhf08F]\F(2&c?RkTn/!(uU&ofsOgt42j)`Yq7s74tt7*%0WZ#C0'+IOZ_:m_uXU&-6Z.Hq=t.moXa/kSG`\-^@(^~>endstream
endobj
94 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2141
>>
stream
Gau0DD0+E#&H;*)YsZtp:;]YI8-73/A8m-1B:OVTRH[CZ4[L,2>=aWH34MQZHh[.666HB%(5tQ5]m[M@G5"Bj`A`eVgN.n'!@X9K."f>=W(&T\gd#Lko(@[5S=333VQO[\BJbNK2`4iqA6_Z,Z7(FC*#OltPtMm":L^=2i=r<!8YG6",0-1iYj2&CgkqU,5!1oZ_&Wqj8r]J5]h>EBLq[(D&u8^2b3thPO63=r4t:Y74Nr0b6**_i7$3Y3.`b"`/r:ZF;aS(,8hs/-hIq,:_=GSWo!&jK3s%.C64VD%K+qQmr]:6`1_V!7`f@S#*A;.Ji$Vb+q.hqMP;l)F+*Xj63ltX\$p_Lt6pNeEaIa,[_[TRX;&"hPU(huC"0)?Y'fa><<G($,UD^.>W?:u6W$0WL<TH%dn@nqe,:$01L_hj3N4AV0nX4o9oj)21?PbhP"@%S-Vu@f>^!<4>eute<?+>gW:D.'<4[\Pu*csW\b=bUk61K*)jLWLb.5\,\I*.d-psZ6;e=-3bGN0DqIMNL"1J^ue)RL[ZA1*#W?n6t!'1nrFM=ef1\/0#XN\>>9GY</=Z@e,7iRr,67;%8$^$=`(S&WS&<9][$0AcGdj9e5'q03i\69qTNDOM1kH$T=23Sp,V8MCPG>Pt,,p)mdu<QO:\1ILr-TM+@B!;O=G;!'S!KGYq0X".>e!a6aZA[!p..T*I_Q,?3QM4QIBh1mUE/XS(o(V]OEj(*<-(a:%S3lS7Tl!*@!nBJd!?!t:]^=.\^(5BmD*8:u7>lPChk6(gHL1b%H)_s6k'o/R?]KeC`L.:.^mDO"T-sF-t@sjgRbla+E84CqB@cTSYZAI&#"tY/@-#kLbo#]H(B3X0#%uQK8W+"9#Es2fJN8`D\aX#6Qh=AS2'&#$M$k)kTFM[\Lq[n;NS#;`&0im"P(OVP!qdPY6$dZ.K3&:k&F99[kO_*FF2%&&69C!-"Q%UWO0q\?PdQSjeq^p9cNKn(1[O/$>-,#-g"#L68gAT=m'*D%MenOk>^%4aD&_<[q+])r+o$Oihj.P5GWcro\M&c*nqThOgnORr@+[g<uDlU=-GQ1jXInicq&[@^J[qZT(LWU!=gZH"G.H.E-OYjSm2/0iV0HB5tDs[m,htS6*U>"N[i%;0b!24p![I5Pg_Y6e5$c[/^]n3gFXibA>7H,KiH;ti&*)jc9FqUMDFqc*8h,)XoS%eR!54o+AJur-s`9d>&j8-^0T)/mh6@TJUJR&s_Ym>_Qn<H:rf:mbShSp0Yn,oO2&"qL)e%^[gX21J+j2Ok7C(8M3!aP=_M<4gKIIX\R)*=>ko2\GCf>@?=T4<SSltZi0;^\#+NDbRJ%?6`(_pKTRS(?[]k$JKO/B*sbl'<EG-QMeY"B;psR^urfZ4Pu^$177&p[?;u!L?Qq<)HpNWhCT)@:C4jjZ3YtG*'2gFp)\D2R'YRba\n>Cj=M\Q>AeDTbV!aNtDeAbHn'n/gjX8O-N%DSNNGXc>g20BWLje3N^BRQTG0[hciguZQ?oj_QiI2eiZ+tidVZj_a4pn0AGVKK.:iFE*TI^_m<G&q%6_3"BF\Np>u>_*qG59a")'f7MF,&</8%^cNTZ69ifm35jG5?2OZlL3\rWCZd6O#3l>5X$)>^p)TEgoTp(fk;SH'Fm-Zr;81[Mgichs>H2#G"]2,]MNuD-KM(.2*c@Ci;PA!RmPR9*S+LQ&h+\DjXlAQR[nLVe?W!L3:@[RnkNj.XHl=aM[#7#<OOU7'T%7sPpP$@;I/lT6]`Cs[*N^%<H=n\s<>%2Y*0O7aOT$0ap)tYc:Di1<R-#5f/<@Ms"^aq@S%[bU5#3Wu<.38N/VpX0>QK&]O9KurG4'#[3&Pb@E>_,D-nH&N3J:&q%J%[5!Eo5p?mY!E"6dmIu^O,EEYl9*pWl9>p>.emL*u!0%I<FSY]&q1UlkY5M-:bkPN.=ti!rca6X;a/$?6o`obTo_We*8.-oXV%Ti<VdhVTDFLA6i7C9,WaRmX28*RH&:kj+el]RmI,bE`+?nOB;"sGNY"ic=[NieY4s`&&.3jDOp.TM88^K,$-ZpGqO%qZL0j@XCoW66dDg@+UsFZL&o9^Fhru;@cZ!qQ]%0TRM\NJ"GXfTV9Lu?<N9MZT^%7Y3;FB\.Z_U~>endstream
endobj
xref
0 89
0 95
0000000000 65535 f
0000000061 00000 n
0000000146 00000 n
@@ -535,68 +586,74 @@ xref
0000004811 00000 n
0000004960 00000 n
0000005076 00000 n
0000005514 00000 n
0000005620 00000 n
0000005698 00000 n
0000005847 00000 n
0000006072 00000 n
0000006156 00000 n
0000006362 00000 n
0000006568 00000 n
0000005182 00000 n
0000005260 00000 n
0000005409 00000 n
0000005493 00000 n
0000005699 00000 n
0000006137 00000 n
0000006343 00000 n
0000006549 00000 n
0000006774 00000 n
0000006980 00000 n
0000007186 00000 n
0000007273 00000 n
0000007588 00000 n
0000007663 00000 n
0000007755 00000 n
0000007858 00000 n
0000008007 00000 n
0000008097 00000 n
0000008189 00000 n
0000008299 00000 n
0000008421 00000 n
0000008566 00000 n
0000008668 00000 n
0000008784 00000 n
0000008897 00000 n
0000009012 00000 n
0000009100 00000 n
0000009230 00000 n
0000009342 00000 n
0000009494 00000 n
0000009585 00000 n
0000009697 00000 n
0000009807 00000 n
0000009902 00000 n
0000010009 00000 n
0000010115 00000 n
0000010224 00000 n
0000010331 00000 n
0000010454 00000 n
0000010558 00000 n
0000010676 00000 n
0000010787 00000 n
0000010907 00000 n
0000011035 00000 n
0000011129 00000 n
0000011232 00000 n
0000012440 00000 n
0000016061 00000 n
0000019298 00000 n
0000022790 00000 n
0000025734 00000 n
0000028673 00000 n
0000007392 00000 n
0000007598 00000 n
0000007804 00000 n
0000007891 00000 n
0000008206 00000 n
0000008281 00000 n
0000008373 00000 n
0000008476 00000 n
0000008625 00000 n
0000008715 00000 n
0000008807 00000 n
0000008917 00000 n
0000009039 00000 n
0000009184 00000 n
0000009286 00000 n
0000009402 00000 n
0000009515 00000 n
0000009630 00000 n
0000009718 00000 n
0000009848 00000 n
0000009960 00000 n
0000010112 00000 n
0000010203 00000 n
0000010315 00000 n
0000010425 00000 n
0000010520 00000 n
0000010627 00000 n
0000010733 00000 n
0000010842 00000 n
0000010949 00000 n
0000011072 00000 n
0000011176 00000 n
0000011294 00000 n
0000011405 00000 n
0000011525 00000 n
0000011653 00000 n
0000011747 00000 n
0000011872 00000 n
0000012819 00000 n
0000013945 00000 n
0000014176 00000 n
0000014407 00000 n
0000018061 00000 n
0000021370 00000 n
0000024901 00000 n
0000027905 00000 n
0000030893 00000 n
trailer
<<
/ID
[<551952d3ad7bea00713487e65aa30a36><551952d3ad7bea00713487e65aa30a36>]
[<61e6dc8dc43c449d33e78ae8cbec84ac><61e6dc8dc43c449d33e78ae8cbec84ac>]
% ReportLab generated PDF document -- digest (opensource)
/Info 48 0 R
/Root 47 0 R
/Size 89
/Info 51 0 R
/Root 50 0 R
/Size 95
>>
startxref
30856
33126
%%EOF

View File

@@ -1,5 +1,24 @@
# Platform scaling and multi-environment architecture — specification
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-06-12 |
| Last modification date | 2026-06-12 |
| Co-authored | |
| Severity | medium |
| State | scheduled |
| Document type | spec |
<!-- doc-meta:end -->
\newpage
\newpage
---
**Document type:** SPEC
**Source draft:** [docs/drafts/20100612_1_scaling.txt](../drafts/20100612_1_scaling.txt)
**Design review:** [docs/DRs/20100612_1_scaling.md](../DRs/20100612_1_scaling.md)
@@ -17,6 +36,19 @@
---
---
**Documentation index:** [README.md](../README.md)
---
---
---
---
## Table of contents
@@ -26,6 +58,8 @@
- [2. Vocabulary](#2-vocabulary)
- [3. Current state (baseline)](#3-current-state-baseline)
- [4. Goals and non-goals](#4-goals-and-non-goals)
- [Goals](#goals)
- [Non-goals (this revision)](#non-goals-this-revision)
- [5. Requirements](#5-requirements)
- [5.1 Must (platform)](#51-must-platform)
- [5.2 Should](#52-should)
@@ -51,14 +85,15 @@
- [14.3 Enforcement layers](#143-enforcement-layers)
- [15. RBAC and operator model evolution](#15-rbac-and-operator-model-evolution)
- [16. Commercial and paid services (platform hooks)](#16-commercial-and-paid-services-platform-hooks)
- [17. Observability and SLOs](#17-observability-and-slos)
- [17. Observability and SLO](#17-observability-and-slo)
- [18. Safety constraints (current topology)](#18-safety-constraints-current-topology)
- [19. Phased delivery map](#19-phased-delivery-map)
- [20. Out of scope (this SPEC revision)](#20-out-of-scope-this-spec-revision)
- [21. Related docs](#21-related-docs)
- [Changelog](#changelog)
<!-- /toc -->
**Documentation index:** [README.md](../README.md)
**Documentation index:** [README.md](README.md)
---

File diff suppressed because one or more lines are too long

Submodule examples/gentoo-portage-experimental added at baae36de00