
1. Pendahuluan
1.1 Latar Belakang
Dalam penelitian statistik, sering kali tidak memungkinkan untuk
mengumpulkan data dari seluruh populasi karena keterbatasan waktu,
biaya, dan sumber daya. Oleh karena itu, metode sampling digunakan untuk
mengambil sebagian data yang dapat mewakili populasi secara
keseluruhan.
Namun, hasil dari sampel tidak selalu mencerminkan populasi secara
akurat karena adanya Margin of Error (MoE). MoE adalah ukuran statistik
yang menunjukkan sejauh mana estimasi dari sampel dapat menyimpang dari
nilai sebenarnya di populasi. Semakin kecil MoE, semakin akurat hasil
estimasi terhadap populasi.
Dalam penelitian ini, akan menganalisis rata-rata waktu tidur
mahasiswa di sebuah universitas dengan populasi 300 mahasiswa dan
mengevaluasi bagaimana metode sampling serta ukuran sampel mempengaruhi
Margin of Error.
1.2 Tujuan Praktikum
1.2.1 Mempelajari berbagai metode pengambilan sampel
Menjelajahi Probability Sampling (Simple Random, Stratified,
Systematic, Cluster) dan Non-Probability Sampling (Convenience,
Purposive, Snowball, Quota) untuk memahami cara kerja dan kapan
digunakan.
1.2.2 Menghitung Margin of Error (MoE) pada Probability
Sampling
Menghitung MoE untuk menilai seberapa akurat sampel dalam mewakili
populasi.
1.2.3 Menganalisis bias pada Non-Probability Sampling
Meneliti potensi bias dalam metode non-probability karena tidak semua
individu memiliki peluang yang sama untuk terpilih, yang dapat
menyebabkan hasil kurang representatif.
1.2.4 Membandingkan hasil dari berbagai metode sampling
Menganalisis perbedaan hasil rata-rata, MoE, dan bias dari metode
sampling untuk menentukan yang paling akurat dan representatif.
1.2.5 Menentukan ukuran sampel untuk MoE ≤ 5%
Menganalisis seberapa besar pengaruh ukuran sampel terhadap
keakuratan hasil penelitian.
Pada intinya praktikum ini bertujuan memahami metode sampling,
menghitung MoE, dan menentukan metode terbaik untuk mendapatkan hasil
yang paling representatif.
2. Metode Sampling yang Digunakan
Data-set yang disajikan:
MHS001 |
Laki-laki |
Teknik |
8 |
3 |
MHS002 |
Perempuan |
Teknik |
8 |
3 |
MHS003 |
Laki-laki |
Ekonomi |
3 |
5 |
MHS004 |
Laki-laki |
Ilmu Komputer |
4 |
1 |
MHS005 |
Laki-laki |
Kedokteran |
8 |
2 |
MHS006 |
Perempuan |
Psikologi |
4 |
6 |
Pada bagian ini, kita akan melakukan pengambilan sampel dari data
populasi yang berisi 300 mahasiswa menggunakan berbagai metode
Probability Sampling dan Non-Probability Sampling, yaitu:
Probability Sampling (Setiap individu memiliki peluang yang sama
untuk dipilih)
Non-Probability Sampling (Pemilihan sampel tidak acak dan bisa
memiliki bias)
Pengambilan sampel dilakukan(dibantu) dengan menggunakan bahasa
pemrograman R, yang memungkinkan kita untuk melakukan seleksi data
secara sistematis dan acak.
2.1 Probability Sampling (Sampling Acak)
2.1.1. Simple Random Sampling (SRS)
Simple Random Sampling (SRS) adalah metode di mana setiap individu
dalam populasi memiliki peluang yang sama untuk dipilih tanpa
memperhatikan karakteristik tertentu.
MHS179 |
Laki-laki |
Hukum |
1 |
4 |
MHS014 |
Laki-laki |
Ilmu Komputer |
3 |
6 |
MHS195 |
Laki-laki |
Teknik |
7 |
1 |
MHS118 |
Perempuan |
Ilmu Komputer |
5 |
7 |
MHS229 |
Laki-laki |
Ekonomi |
8 |
6 |
MHS244 |
Laki-laki |
Kedokteran |
1 |
7 |
Metode: Semua mahasiswa memiliki kesempatan yang sama untuk
dipilih.
Keunggulan: Tidak ada bias dalam pemilihan.
Kelemahan: Tidak mempertimbangkan kelompok dalam populasi.
2.1.2. Stratified Random Sampling
Stratified Sampling membagi populasi menjadi beberapa kelompok
berdasarkan karakteristik tertentu (misalnya fakultas) sebelum
pengambilan sampel dilakukan.
MHS152 |
Laki-laki |
Ekonomi |
1 |
1 |
MHS066 |
Perempuan |
Ekonomi |
3 |
3 |
MHS065 |
Laki-laki |
Ekonomi |
8 |
6 |
MHS012 |
Laki-laki |
Ekonomi |
5 |
6 |
MHS194 |
Laki-laki |
Ekonomi |
3 |
1 |
MHS257 |
Laki-laki |
Ekonomi |
8 |
2 |
Metode: Populasi dibagi berdasarkan Fakultas, lalu dipilih proporsi
yang sama dari setiap fakultas.
Keunggulan: Representasi lebih baik untuk semua kelompok.
Kelemahan: Butuh informasi tambahan tentang kelompok dalam
populasi.
2.1.3. Systematic Sampling
Systematic Sampling memilih sampel dengan pola sistematis, misalnya
setiap mahasiswa ke-3 dalam daftar.
1 |
MHS001 |
Laki-laki |
Teknik |
8 |
3 |
4 |
MHS004 |
Laki-laki |
Ilmu Komputer |
4 |
1 |
7 |
MHS007 |
Laki-laki |
Hukum |
2 |
3 |
10 |
MHS010 |
Perempuan |
Hukum |
1 |
2 |
13 |
MHS013 |
Laki-laki |
Teknik |
3 |
7 |
16 |
MHS016 |
Laki-laki |
Hukum |
4 |
5 |
Metode: Memilih setiap mahasiswa ke-3 dalam daftar.
Keunggulan: Distribusi sampel lebih merata.
Kelemahan: Bisa bias jika ada pola dalam data.
2.1.4. Cluster Sampling
Cluster Sampling membagi populasi menjadi kelompok-kelompok kecil
(cluster), lalu beberapa cluster dipilih untuk dijadikan sampel.
MHS152 |
Laki-laki |
Ekonomi |
1 |
1 |
MHS066 |
Perempuan |
Ekonomi |
3 |
3 |
MHS065 |
Laki-laki |
Ekonomi |
8 |
6 |
MHS012 |
Laki-laki |
Ekonomi |
5 |
6 |
MHS194 |
Laki-laki |
Ekonomi |
3 |
1 |
MHS257 |
Laki-laki |
Ekonomi |
8 |
2 |
Metode: Memilih jumlah mahasiswa yang sama dari setiap fakultas,
hingga totalnya 100 mahasiswa.
Keunggulan: Representasi yang seimbang antar kelompok.
Kelemahan: Tidak acak, dapat menyebabkan bias dalam pemilihan.
2.2 Non-Probability Sampling (Sampling Tidak Acak)
2.2.1. Convenience Sampling
Convenience Sampling memilih sampel berdasarkan kemudahan akses,
misalnya mahasiswa yang tersedia lebih dulu.
MHS001 |
Laki-laki |
Teknik |
8 |
3 |
MHS002 |
Perempuan |
Teknik |
8 |
3 |
MHS003 |
Laki-laki |
Ekonomi |
3 |
5 |
MHS004 |
Laki-laki |
Ilmu Komputer |
4 |
1 |
MHS005 |
Laki-laki |
Kedokteran |
8 |
2 |
MHS006 |
Perempuan |
Psikologi |
4 |
6 |
Metode: Mengambil 100 mahasiswa pertama dalam dataset.
Keunggulan: Cepat dan mudah dilakukan.
Kelemahan: Rentan terhadap bias, tidak representatif.
2.2.2. Purposive Sampling
Purposive Sampling memilih sampel berdasarkan kriteria khusus,
misalnya mahasiswa dengan waktu tidur kurang dari 4 jam.
MHS001 |
Laki-laki |
Teknik |
8 |
3 |
MHS002 |
Perempuan |
Teknik |
8 |
3 |
MHS004 |
Laki-laki |
Ilmu Komputer |
4 |
1 |
MHS005 |
Laki-laki |
Kedokteran |
8 |
2 |
MHS007 |
Laki-laki |
Hukum |
2 |
3 |
MHS009 |
Laki-laki |
Ilmu Komputer |
4 |
3 |
Metode: Memilih 100 mahasiswa dengan waktu tidur kurang dari 4
jam.
Keunggulan: Fokus pada kelompok tertentu yang menarik untuk
penelitian.
Kelemahan: Tidak mewakili populasi secara keseluruhan.
2.2.3. Snowball Sampling
Snowball Sampling digunakan ketika populasi sulit dijangkau. Sampel
pertama dipilih, lalu mereka membantu merekrut sampel berikutnya.
MHS001 |
Laki-laki |
Teknik |
8 |
3 |
MHS002 |
Perempuan |
Teknik |
8 |
3 |
MHS003 |
Laki-laki |
Ekonomi |
3 |
5 |
MHS004 |
Laki-laki |
Ilmu Komputer |
4 |
1 |
MHS005 |
Laki-laki |
Kedokteran |
8 |
2 |
MHS006 |
Perempuan |
Psikologi |
4 |
6 |
Metode: Memilih 1 mahasiswa secara acak, lalu mencari mahasiswa lain
dengan waktu tidur yang sama hingga jumlah sampel mencapai 100.
Keunggulan: Berguna jika sulit menemukan populasi target.
Kelemahan: Bias tinggi, tidak dapat digeneralisasi.
2.2.4. Quota Sampling
Sampel dipilih hingga kuota tertentu terpenuhi berdasarkan kategori
tertentu (misalnya jumlah mahasiswa per fakultas).
MHS152 |
Laki-laki |
Ekonomi |
1 |
1 |
MHS066 |
Perempuan |
Ekonomi |
3 |
3 |
MHS065 |
Laki-laki |
Ekonomi |
8 |
6 |
MHS012 |
Laki-laki |
Ekonomi |
5 |
6 |
MHS194 |
Laki-laki |
Ekonomi |
3 |
1 |
MHS257 |
Laki-laki |
Ekonomi |
8 |
2 |
Metode: Memilih jumlah mahasiswa yang sama dari setiap fakultas,
hingga totalnya 100 mahasiswa.
Keunggulan: Representasi yang seimbang antar kelompok.
Kelemahan: Tidak acak, dapat menyebabkan bias dalam pemilihan.
3. Perhitungan Margin of Error (MoE) dalam Probability Sampling
Secara umum, MoE dihitung dengan rumus:
\[
MoE = Z \times \frac{\sigma}{\sqrt{n}}
\]
Dimana:
- \(Z = 1.96\) (untuk tingkat
kepercayaan 95%)
- \(n = 100\) (jumlah sampel)
- \(\sigma\) = Simpangan baku
sampel
Simpangan baku (\(\sigma\)) dihitung
dengan rumus:
\[
\sigma = \sqrt{\frac{\sum (X_i - \bar{X})^2}{n-1}}
\]
Dimana:
- \(X_i\) = Waktu tidur mahasiswa
ke-i
- \(\bar{X}\) = Rata-rata waktu tidur
mahasiswa
- \(n\) = Ukuran sampel
3.1 Simple Random Sampling (SRS)
Diketahui:
## [1] "Simpangan Baku (SRS): 1.88 jam"
\[
MoE = 1.96 \times \frac{1.88}{\sqrt{100}}
\]
\[
MoE = 1.96 \times \frac{1.88}{10}
\]
\[
MoE = 1.96 \times 0.188
\]
\[
MoE = 0.369
\]
Jadi, MoE = 0.369 jam.
Pada metode Simple Random Sampling (SRS), setiap
mahasiswa memiliki peluang yang sama untuk terpilih dalam sampel. Dengan
MoE sebesar 0.369 jam, metode ini cukup akurat dalam
menggambarkan populasi, tetapi tidak mempertimbangkan variasi yang
mungkin ada di antara kelompok mahasiswa, seperti perbedaan pola tidur
antar fakultas.
3.2 Stratified Random Sampling
Diketahui:
## [1] "Simpangan Baku (Stratified): 1.76 jam"
Maka:
\[
MoE = 1.96 \times \frac{1.76}{\sqrt{100}}
\]
\[
MoE = 1.96 \times \frac{1.76}{10}
\]
\[
MoE = 1.96 \times 0.176
\]
\[
MoE = 0.345
\]
Jadi, MoE = 0.345 jam.
Sementara itu, Stratified Random Sampling membagi
mahasiswa ke dalam kelompok-kelompok berdasarkan fakultas sebelum sampel
diambil. Dengan cara ini, setiap fakultas mendapatkan representasi yang
proporsional dalam sampel. MoE yang dihasilkan adalah 0.345
jam, yang merupakan nilai terkecil dibandingkan metode lainnya.
Ini menunjukkan bahwa metode ini mampu memberikan estimasi yang paling
akurat karena memperhitungkan variasi dalam populasi.
3.3 Systematic Sampling
Diketahui:
## [1] "Simpangan Baku (Systematic): 1.78 jam"
Maka:
\[
MoE = 1.96 \times \frac{1.78}{\sqrt{100}}
\]
\[
MoE = 1.96 \times \frac{1.78}{10}
\]
\[
MoE = 1.96 \times 0.178
\]
\[
MoE = 0.349
\]
Jadi, MoE = 0.349 jam.
Pada metode Systematic Sampling, mahasiswa dipilih
dengan interval tertentu dari daftar populasi. MoE yang dihasilkan
adalah 0.349 jam, yang hampir setara dengan metode
stratifikasi. Namun, metode ini memiliki potensi bias jika terdapat pola
berulang dalam daftar mahasiswa yang digunakan untuk pemilihan
sampel.
3.4 Cluster Sampling
Diketahui:
## [1] "Simpangan Baku (Cluster): 1.91 jam"
Maka:
\[
MoE = 1.96 \times \frac{1.91}{\sqrt{100}}
\]
\[
MoE = 1.96 \times \frac{1.91}{10}
\]
\[
MoE = 1.96 \times 0.191
\]
\[
MoE = 0.374
\]
Jadi, MoE = 0.374 jam.
Terakhir, metode Cluster Sampling mengambil sampel
berdasarkan fakultas yang dipilih secara acak, lalu seluruh mahasiswa
dalam fakultas tersebut dijadikan sampel. MoE untuk metode ini adalah
0.374 jam, yang merupakan nilai tertinggi dibandingkan
metode lainnya. Hal ini menunjukkan bahwa Cluster Sampling cenderung
menghasilkan estimasi yang kurang akurat dibandingkan metode lain,
terutama jika fakultas yang terpilih memiliki pola tidur yang berbeda
dari fakultas lainnya.
4. Analisis Bias dalam Non-Probability Sampling
Non-Probability Sampling adalah metode pemilihan sampel yang tidak
memberikan peluang yang sama kepada setiap anggota populasi untuk
terpilih. Hal ini dapat menyebabkan bias, yaitu penyimpangan antara
hasil sampel dan populasi sebenarnya. Berikut adalah analisis mendalam
dari empat jenis Non-Probability Sampling:
4.1 Convenience Sampling
Metode:
Convenience Sampling mengambil sampel berdasarkan kemudahan akses dan
ketersediaan subjek. Misalnya, dalam penelitian ini, kita memilih 100
mahasiswa pertama dari dataset tanpa mempertimbangkan karakteristik
lainnya.
Keunggulan:
- Mudah dan cepat: Tidak membutuhkan proses seleksi
yang kompleks.
- Biaya rendah: Tidak memerlukan sumber daya tambahan
untuk menjangkau responden.
- Dapat digunakan untuk eksplorasi awal: Berguna
dalam penelitian awal untuk memahami tren kasar sebelum pengambilan
sampel yang lebih representatif.
Kelemahan:
- Bias tinggi: Hasil penelitian tidak dapat
digeneralisasikan ke seluruh populasi karena hanya mewakili kelompok
tertentu yang mudah diakses.
- Tidak representatif: Mahasiswa yang lebih aktif
atau lebih mudah dijangkau bisa memiliki kebiasaan tidur berbeda dari
mahasiswa lainnya.
- Tidak dapat digunakan untuk inferensi statistik yang
valid: Karena tidak ada jaminan bahwa sampel mencerminkan
populasi, analisis statistik berbasis inferensi bisa menyesatkan.
Contoh Bias:
Jika kita mengambil 100 mahasiswa pertama yang kita temui di kampus,
kemungkinan besar mereka adalah mahasiswa yang lebih rajin dan lebih
aktif secara akademik. Mereka mungkin memiliki kebiasaan tidur lebih
teratur dibandingkan mahasiswa lain yang sering belajar hingga larut
malam atau yang lebih suka begadang.
4.2 Purposive Sampling
Metode:
Purposive Sampling memilih individu berdasarkan karakteristik
tertentu yang dianggap relevan dengan penelitian. Dalam penelitian ini,
sampel diambil berdasarkan mahasiswa yang tidur kurang dari 4 jam per
malam.
Keunggulan:
- Fokus pada kelompok spesifik: Berguna jika
penelitian ingin mempelajari fenomena tertentu, seperti mahasiswa dengan
kebiasaan tidur sangat sedikit.
- Efektif dalam penelitian eksploratif: Dapat
memberikan wawasan mendalam tentang subkelompok dalam populasi.
- Dapat digunakan jika populasi target sulit
dijangkau: Misalnya, jika kita ingin meneliti mahasiswa dengan
insomnia atau gangguan tidur.
Kelemahan:
- Tidak representatif terhadap populasi umum: Hanya
mencerminkan karakteristik kelompok tertentu, bukan keseluruhan populasi
mahasiswa.
- Subjektif: Pemilihan sampel bergantung pada
peneliti, yang dapat menyebabkan bias seleksi.
- Tidak dapat digunakan untuk generalisasi: Hasil
hanya berlaku untuk kelompok spesifik yang dipilih.
Contoh Bias:
Jika kita hanya memilih mahasiswa yang tidur kurang dari 4 jam per
malam, kita mungkin mendapatkan data yang menunjukkan rata-rata waktu
tidur mahasiswa lebih rendah dari kenyataan. Ini bisa menyesatkan jika
penelitian bertujuan mengetahui rata-rata waktu tidur seluruh mahasiswa,
bukan hanya kelompok yang mengalami kurang tidur.
4.3 Snowball Sampling
Metode:
Snowball Sampling dimulai dengan memilih beberapa individu sebagai
sampel awal, kemudian mereka membantu merekrut responden lain yang
memiliki karakteristik serupa.
Keunggulan:
- Berguna untuk populasi yang sulit dijangkau: Cocok
untuk meneliti kelompok tertentu, seperti mahasiswa yang bekerja sambil
kuliah atau mereka yang memiliki pola tidur ekstrem.
- Efektif dalam penelitian kualitatif: Dapat
digunakan untuk memahami pengalaman individu dalam kelompok
tertentu.
- Menghemat waktu dan sumber daya: Responden membantu
dalam pencarian sampel tambahan.
Kelemahan:
- Bias sosial: Responden cenderung merekomendasikan
orang dengan karakteristik yang mirip, menyebabkan hasil tidak
bervariasi.
- Kurang representatif: Sampel hanya terdiri dari
jaringan sosial tertentu, bukan seluruh populasi.
- Sulit dikendalikan: Peneliti kehilangan kendali
atas bagaimana sampel berkembang karena bergantung pada rekomendasi
responden.
Contoh Bias:
Jika kita mulai dengan seorang mahasiswa yang sering begadang,
kemungkinan besar dia akan merekomendasikan teman-temannya yang juga
memiliki kebiasaan tidur yang sama. Ini akan menciptakan kesimpulan yang
bias bahwa sebagian besar mahasiswa tidur sangat larut malam, padahal
populasi mahasiswa secara keseluruhan mungkin memiliki pola tidur yang
lebih bervariasi.
4.4 Quota Sampling
Metode:
Quota Sampling membagi populasi ke dalam kategori tertentu (misalnya
berdasarkan fakultas), kemudian memilih sampel dari masing-masing
kategori hingga kuota terpenuhi.
Keunggulan:
- Lebih representatif dibandingkan metode non-acak
lainnya: Memastikan bahwa setiap kelompok memiliki perwakilan
dalam sampel.
- Lebih cepat daripada stratified sampling: Tidak
memerlukan pemilihan acak dalam setiap kelompok.
- Dapat digunakan ketika data populasi terbatas: Jika
tidak memungkinkan untuk menggunakan Probability Sampling, metode ini
bisa menjadi alternatif.
Kelemahan:
- Tidak sepenuhnya acak: Pemilihan individu dalam
setiap kuota bisa subjektif, menyebabkan bias seleksi.
- Rentan terhadap undercoverage bias: Jika beberapa
kelompok lebih sulit dijangkau, mereka bisa kurang terwakili dalam
sampel.
- Kurang akurat dibandingkan Stratified Sampling:
Karena tidak menggunakan pemilihan acak di dalam setiap kategori.
Contoh Bias:
Jika kuota ditetapkan untuk setiap fakultas, tetapi kita memilih
mahasiswa dalam kuota tersebut berdasarkan kemudahan akses, kita mungkin
mendapatkan perwakilan yang kurang akurat. Misalnya, jika sebagian besar
mahasiswa yang diwawancarai berasal dari kelas pagi, hasilnya bisa
mencerminkan pola tidur yang lebih sehat dibandingkan populasi secara
keseluruhan.
5. Perbandingan Hasil dari Berbagai Metode Sampling
Dalam penelitian ini, digunakan berbagai metode sampling, baik
Probability Sampling maupun Non-Probability
Sampling. Masing-masing metode memiliki karakteristik,
keunggulan, kelemahan, serta tingkat bias dan margin of error yang
berbeda. Untuk memahami efektivitas masing-masing metode, dilakukan
analisis mendalam berdasarkan margin of error, bias, dan tingkat
representativitas terhadap populasi.
5.1 Perbandingan Probability Sampling vs Non-Probability
Sampling
Sampel yang diambil menggunakan Probability Sampling
memiliki peluang lebih tinggi untuk menghasilkan data yang representatif
dibandingkan dengan Non-Probability Sampling. Hal ini
karena Probability Sampling memungkinkan setiap individu dalam populasi
memiliki peluang yang sama untuk dipilih, sedangkan Non-Probability
Sampling cenderung bergantung pada faktor kemudahan dan subjektivitas
dalam pemilihan sampel.
Definisi |
Metode sampling yang memastikan setiap elemen dalam populasi
memiliki peluang yang sama untuk dipilih. |
Metode sampling yang tidak memberikan setiap elemen peluang yang
sama untuk dipilih. |
Contoh Metode |
Simple Random, Stratified, Systematic, Cluster |
Convenience, Purposive, Snowball, Quota |
Keacakan |
Pemilihan sampel dilakukan secara acak |
Pemilihan sampel sering berdasarkan aksesibilitas atau karakteristik
tertentu |
Margin of Error (MoE) |
Dapat dihitung dengan presisi dan cenderung lebih kecil |
Sulit dihitung karena tidak ada aturan pengambilan sampel yang
sistematis |
Bias |
Relatif rendah |
Tinggi, karena pemilihan tidak dilakukan secara acak |
Kemudahan Pelaksanaan |
Memerlukan perencanaan lebih matang dan sumber daya lebih besar |
Lebih mudah, cepat, dan murah dilakukan |
Representasi Populasi |
Hasil lebih representatif dan dapat digeneralisasi |
Kurang representatif karena tidak semua individu memiliki kesempatan
yang sama untuk dipilih |
Dari tabel ini, dapat disimpulkan bahwa Probability Sampling
lebih unggul dalam hal akurasi dan representativitas. Namun,
Non-Probability Sampling lebih mudah dan cepat
digunakan, terutama dalam kondisi di mana sumber daya
terbatas.
5.2 Perbandingan Hasil dari Berbagai Metode Probability
Sampling
Untuk mengetahui metode Probability Sampling mana yang paling akurat,
dilakukan perhitungan margin of error (MoE) untuk
setiap metode.
Simple Random Sampling (SRS) |
Memilih sampel secara acak dari seluruh populasi |
0.369 jam |
Tidak ada bias dalam pemilihan |
Tidak mempertimbangkan perbedaan kelompok dalam populasi |
Stratified Sampling |
Populasi dibagi dalam kelompok, lalu diambil sampel secara
proporsional |
0.345 jam |
Representasi lebih baik untuk semua kelompok |
Memerlukan informasi tambahan tentang populasi |
Systematic Sampling |
Memilih sampel berdasarkan pola sistematis (misal setiap mahasiswa
ke-3) |
0.349 jam |
Distribusi sampel lebih merata |
Bisa bias jika ada pola dalam data populasi |
Cluster Sampling |
Memilih beberapa kelompok (misal fakultas), lalu mengambil semua
anggota dalam kelompok tersebut |
0.374 jam |
Lebih efisien jika populasi luas dan tersebar |
Bisa menyebabkan bias jika kelompok yang dipilih tidak mewakili
populasi secara keseluruhan |
Analisis
- Stratified Sampling memiliki margin of error terkecil (0.345
jam), sehingga menjadi metode yang paling akurat.
- Cluster Sampling memiliki margin of error terbesar (0.374
jam), yang menunjukkan metode ini lebih rentan terhadap bias
jika kelompok yang dipilih tidak representatif.
- Systematic Sampling memiliki margin of error yang sedikit
lebih besar dibandingkan Stratified Sampling, tetapi tetap
lebih kecil dibandingkan Simple Random dan Cluster Sampling.
5.3 Perbandingan Hasil dari Berbagai Metode Non-Probability
Sampling
Non-Probability Sampling lebih banyak digunakan dalam penelitian
eksploratif atau ketika probability sampling tidak dapat
diterapkan karena keterbatasan waktu, biaya, atau akses ke
populasi target. Namun, metode ini cenderung memiliki tingkat bias yang
lebih tinggi.
Convenience Sampling |
Memilih sampel yang paling mudah diakses |
Tinggi |
Cepat dan mudah dilakukan |
Tidak representatif, hanya mewakili kelompok tertentu |
Purposive Sampling |
Memilih sampel berdasarkan karakteristik tertentu |
Tinggi |
Bisa fokus pada kelompok spesifik |
Tidak bisa digeneralisasi ke populasi luas |
Snowball Sampling |
Responden pertama merekrut responden lain |
Sangat Tinggi |
Berguna untuk populasi yang sulit ditemukan |
Bias tinggi karena responden saling merekomendasikan teman dengan
karakteristik yang sama |
Quota Sampling |
Memilih sampel hingga kuota tertentu terpenuhi |
Tinggi |
Memastikan representasi proporsional |
Tidak acak, bisa menyebabkan bias dalam seleksi |
Analisis
- Snowball Sampling memiliki tingkat bias tertinggi
karena responden cenderung merekrut individu yang memiliki karakteristik
serupa dengan mereka.
- Convenience Sampling juga sangat bias karena hanya
mengandalkan individu yang mudah diakses, sehingga tidak mencerminkan
populasi secara keseluruhan.
- Quota Sampling memiliki bias yang lebih rendah dibandingkan
Convenience dan Snowball Sampling, tetapi tetap tidak seakurat
Probability Sampling.
5.4 Kesimpulan dari Perbandingan Metode
Sampling
Berdasarkan hasil perbandingan di atas, dapat disimpulkan bahwa:
- Probability Sampling lebih akurat dibandingkan
Non-Probability Sampling karena memiliki margin of
error yang lebih kecil dan bias yang lebih rendah.
- Stratified Sampling adalah metode terbaik dalam Probability
Sampling, karena mempertimbangkan karakteristik populasi dan
memiliki margin of error terkecil (0.345 jam).
- Cluster Sampling memiliki margin of error terbesar (0.374
jam) dalam Probability Sampling, yang menunjukkan
kurang akurat jika hanya satu kelompok yang
dipilih.
- Non-Probability Sampling memiliki bias yang tinggi,
terutama pada Snowball dan Convenience Sampling, yang
paling rentan terhadap bias.
- Jika memungkinkan, penelitian sebaiknya menggunakan
Probability Sampling agar hasilnya lebih akurat dan dapat
digeneralisasi ke populasi yang lebih luas.
- Jika Probability Sampling tidak bisa diterapkan,
maka Quota Sampling adalah pilihan terbaik dalam Non-Probability
Sampling, karena memberikan tingkat representasi yang lebih
baik dibandingkan metode lain dalam kategori yang sama.
Dari hasil perbandingan ini, Stratified Sampling adalah
metode yang paling direkomendasikan untuk penelitian ini karena
memberikan keseimbangan terbaik antara akurasi, margin of error
yang rendah, dan representativitas populasi.
6. Ukuran Sampel yang Diperlukan untuk MoE = 5%
Kita ingin tahu berapa banyak mahasiswa yang harus kita
survei supaya hasil penelitian tentang waktu tidur mereka
tidak meleset lebih dari 5%.
Dari data yang kita punya:
- Total mahasiswa: 300 orang
- Rata-rata waktu tidur: 4.51 jam
- Simpangan baku (seberapa bervariasi waktu tidur
mereka): 1.84 jam
- Batas kesalahan maksimal (Margin of Error / MoE):
0.23 jam (karena 5% dari 4.51 jam)
6.1 Langkah Perhitungan
6.1.1. Kita pakai rumus untuk menghitung jumlah sampel supaya MoE
tidak lebih dari 0.23 jam:
\[
MoE = Z \times \frac{\sigma}{\sqrt{n}}
\]
- Z = 1.96 (angka standar untuk penelitian dengan
kepercayaan 95%)
- \(\sigma\) = 1.84
(simpangan baku)
- \(\sqrt{n}\) adalah akar
dari jumlah sampel yang kita cari
6.2 Kenapa Harus 246?
- Kalau kita ambil kurang dari 246 orang, hasilnya
bisa lebih meleset dan kurang akurat.
- Kalau kita ambil lebih dari 246 orang, hasilnya
makin akurat, tapi lebih lama dan lebih mahal untuk dilakukan.
Jadi,agar hasil penelitian ini cukup akurat dan tidak meleset
lebih dari 5%, kita harus survei minimal 246
mahasiswa.
7. Kesimpulan dan Rekomendasi
Dalam laporan praktikum ini, kami telah melakukan analisis mendalam
mengenai metode sampling dan margin of error (MoE) dalam penelitian
statistik, khususnya dalam konteks waktu tidur mahasiswa di sebuah
universitas dengan populasi 300 mahasiswa. Berikut adalah kesimpulan dan
rekomendasi berdasarkan hasil analisis yang telah dilakukan:
7.1 Kesimpulan
Latar Belakang dan Tujuan: Penelitian ini
dilatarbelakangi oleh keterbatasan dalam mengumpulkan data dari seluruh
populasi, sehingga metode sampling menjadi penting untuk mendapatkan
data yang representatif. Tujuan praktikum ini adalah untuk mempelajari
berbagai metode pengambilan sampel, menghitung MoE, menganalisis bias,
dan menentukan ukuran sampel yang diperlukan.
Metode Sampling: Kami telah mengeksplorasi dua
kategori utama metode sampling:
- Probability Sampling (Simple Random, Stratified,
Systematic, Cluster) yang memberikan peluang yang sama bagi setiap
individu untuk terpilih, dan
- Non-Probability Sampling (Convenience, Purposive,
Snowball, Quota) yang tidak memberikan peluang yang sama, sehingga
berpotensi menghasilkan bias.
Margin of Error (MoE): Perhitungan MoE
menunjukkan bahwa metode Stratified Sampling memiliki
MoE terkecil (0.345 jam), menjadikannya metode yang paling akurat dalam
menggambarkan populasi. Sebaliknya, Cluster Sampling
memiliki MoE terbesar (0.374 jam), menunjukkan potensi bias yang lebih
tinggi.
Analisis Bias: Non-Probability Sampling
cenderung memiliki bias yang lebih tinggi dibandingkan Probability
Sampling. Metode seperti Convenience Sampling dan
Snowball Sampling sangat rentan terhadap bias, yang
dapat mengakibatkan hasil yang tidak representatif.
Ukuran Sampel untuk MoE ≤ 5%: Untuk mencapai MoE
tidak lebih dari 5%, diperlukan minimal 246 mahasiswa dalam survei ini.
Ini menunjukkan pentingnya ukuran sampel yang memadai untuk memastikan
akurasi hasil penelitian.
7.2 Rekomendasi
Penggunaan Probability Sampling: Disarankan
untuk menggunakan metode Probability Sampling, khususnya
Stratified Sampling, dalam penelitian yang memerlukan
representativitas tinggi. Metode ini mampu memberikan estimasi yang
lebih akurat dengan MoE yang lebih kecil.
Hindari Non-Probability Sampling: Jika
memungkinkan, hindari penggunaan Non-Probability Sampling, terutama
dalam penelitian yang memerlukan generalisasi hasil. Jika harus
digunakan, pilihlah metode seperti Quota Sampling yang
lebih baik dalam hal representativitas dibandingkan metode non-acak
lainnya.
Perencanaan Ukuran Sampel: Dalam perencanaan
penelitian, penting untuk menghitung ukuran sampel yang diperlukan untuk
mencapai MoE yang diinginkan. Pastikan untuk mempertimbangkan
variabilitas dalam populasi saat menentukan ukuran sampel.
Evaluasi dan Validasi: Lakukan evaluasi dan
validasi terhadap hasil penelitian untuk memastikan bahwa data yang
diperoleh dapat digeneralisasi ke populasi yang lebih luas. Ini dapat
dilakukan dengan membandingkan hasil dari berbagai metode
sampling.
Dengan mengikuti rekomendasi ini, diharapkan penelitian di masa
mendatang dapat menghasilkan data yang lebih akurat dan representatif,
serta memberikan wawasan yang lebih baik mengenai fenomena yang
diteliti.
LS0tCnRpdGxlOiAiVHVnYXMgSW5kaXZpZHUgIgpzdWJ0aXRsZTogIkxBUE9SQU4gUFJBS1RJS1VNOiBBTkFMSVNJUyBTQU1QTElORyBEQU4gTUFSR0lOIE9GIEVSUk9SCiAtIFRla25payBTYW1wbGluZyBhbmQgU3VydmV5IgphdXRob3I6ICJPbGl2aWEgTWVpbGluZGEgRGF2dGluIFBlc2lyZXJvbiIKZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIgpvdXRwdXQ6CiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246ICAgIyBodHRwczovL2dpdGh1Yi5jb20vanViYS9ybWRmb3JtYXRzCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQogICAgdGh1bWJuYWlsczogdHJ1ZQogICAgbGlnaHRib3g6IHRydWUKICAgIGdhbGxlcnk6IHRydWUKICAgIGxpYl9kaXI6IGxpYnMKICAgIGRmX3ByaW50OiAicGFnZWQiCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93IgogICAgY29kZV9kb3dubG9hZDogeWVzIAogICAgY3NzOiAic3R5bGUuY3NzIgotLS0KCjxpbWcgc3JjPSJJTUctMjAyNTAyMTItV0EwMDA2LmpwZyIgd2lkdGg9IjMwMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87IiBhbHQ9IkZvdG8gRGlyaSI+Ci0tLQoKCiMgMS4gUGVuZGFodWx1YW4KCiMjIDEuMSBMYXRhciBCZWxha2FuZwoKRGFsYW0gcGVuZWxpdGlhbiBzdGF0aXN0aWssIHNlcmluZyBrYWxpIHRpZGFrIG1lbXVuZ2tpbmthbiB1bnR1ayBtZW5ndW1wdWxrYW4gZGF0YSBkYXJpIHNlbHVydWggcG9wdWxhc2kga2FyZW5hIGtldGVyYmF0YXNhbiB3YWt0dSwgYmlheWEsIGRhbiBzdW1iZXIgZGF5YS4gT2xlaCBrYXJlbmEgaXR1LCBtZXRvZGUgc2FtcGxpbmcgZGlndW5ha2FuIHVudHVrIG1lbmdhbWJpbCBzZWJhZ2lhbiBkYXRhIHlhbmcgZGFwYXQgbWV3YWtpbGkgcG9wdWxhc2kgc2VjYXJhIGtlc2VsdXJ1aGFuLgoKTmFtdW4sIGhhc2lsIGRhcmkgc2FtcGVsIHRpZGFrIHNlbGFsdSBtZW5jZXJtaW5rYW4gcG9wdWxhc2kgc2VjYXJhIGFrdXJhdCBrYXJlbmEgYWRhbnlhIE1hcmdpbiBvZiBFcnJvciAoTW9FKS4gTW9FIGFkYWxhaCB1a3VyYW4gc3RhdGlzdGlrIHlhbmcgbWVudW5qdWtrYW4gc2VqYXVoIG1hbmEgZXN0aW1hc2kgZGFyaSBzYW1wZWwgZGFwYXQgbWVueWltcGFuZyBkYXJpIG5pbGFpIHNlYmVuYXJueWEgZGkgcG9wdWxhc2kuIFNlbWFraW4ga2VjaWwgTW9FLCBzZW1ha2luIGFrdXJhdCBoYXNpbCBlc3RpbWFzaSB0ZXJoYWRhcCBwb3B1bGFzaS4KCkRhbGFtIHBlbmVsaXRpYW4gaW5pLCBha2FuIG1lbmdhbmFsaXNpcyByYXRhLXJhdGEgd2FrdHUgdGlkdXIgbWFoYXNpc3dhIGRpIHNlYnVhaCB1bml2ZXJzaXRhcyBkZW5nYW4gcG9wdWxhc2kgMzAwIG1haGFzaXN3YSBkYW4gbWVuZ2V2YWx1YXNpIGJhZ2FpbWFuYSBtZXRvZGUgc2FtcGxpbmcgc2VydGEgdWt1cmFuIHNhbXBlbCBtZW1wZW5nYXJ1aGkgTWFyZ2luIG9mIEVycm9yLgoKIyMgMS4yIFR1anVhbiBQcmFrdGlrdW0gCgojIyMgMS4yLjEgTWVtcGVsYWphcmkgYmVyYmFnYWkgbWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbAoKTWVuamVsYWphaGkgUHJvYmFiaWxpdHkgU2FtcGxpbmcgKFNpbXBsZSBSYW5kb20sIFN0cmF0aWZpZWQsIFN5c3RlbWF0aWMsIENsdXN0ZXIpIGRhbiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcgKENvbnZlbmllbmNlLCBQdXJwb3NpdmUsIFNub3diYWxsLCBRdW90YSkgdW50dWsgbWVtYWhhbWkgY2FyYSBrZXJqYSBkYW4ga2FwYW4gZGlndW5ha2FuLgoKIyMjIDEuMi4yIE1lbmdoaXR1bmcgTWFyZ2luIG9mIEVycm9yIChNb0UpIHBhZGEgUHJvYmFiaWxpdHkgU2FtcGxpbmcKCk1lbmdoaXR1bmcgTW9FIHVudHVrIG1lbmlsYWkgc2ViZXJhcGEgYWt1cmF0IHNhbXBlbCBkYWxhbSBtZXdha2lsaSBwb3B1bGFzaS4KCiMjIyAxLjIuMyBNZW5nYW5hbGlzaXMgYmlhcyBwYWRhIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZwoKTWVuZWxpdGkgcG90ZW5zaSBiaWFzIGRhbGFtIG1ldG9kZSBub24tcHJvYmFiaWxpdHkga2FyZW5hIHRpZGFrIHNlbXVhIGluZGl2aWR1IG1lbWlsaWtpIHBlbHVhbmcgeWFuZyBzYW1hIHVudHVrIHRlcnBpbGloLCB5YW5nIGRhcGF0IG1lbnllYmFia2FuIGhhc2lsIGt1cmFuZyByZXByZXNlbnRhdGlmLgoKIyMjIDEuMi40IE1lbWJhbmRpbmdrYW4gaGFzaWwgZGFyaSBiZXJiYWdhaSBtZXRvZGUgc2FtcGxpbmcKCk1lbmdhbmFsaXNpcyBwZXJiZWRhYW4gaGFzaWwgcmF0YS1yYXRhLCBNb0UsIGRhbiBiaWFzIGRhcmkgbWV0b2RlIHNhbXBsaW5nIHVudHVrIG1lbmVudHVrYW4geWFuZyBwYWxpbmcgYWt1cmF0IGRhbiByZXByZXNlbnRhdGlmLgoKIyMjIDEuMi41IE1lbmVudHVrYW4gdWt1cmFuIHNhbXBlbCB1bnR1ayBNb0Ug4omkIDUlCgpNZW5nYW5hbGlzaXMgc2ViZXJhcGEgYmVzYXIgcGVuZ2FydWggdWt1cmFuIHNhbXBlbCB0ZXJoYWRhcCBrZWFrdXJhdGFuIGhhc2lsIHBlbmVsaXRpYW4uCgoKUGFkYSBpbnRpbnlhIHByYWt0aWt1bSBpbmkgYmVydHVqdWFuIG1lbWFoYW1pIG1ldG9kZSBzYW1wbGluZywgbWVuZ2hpdHVuZyBNb0UsIGRhbiBtZW5lbnR1a2FuIG1ldG9kZSB0ZXJiYWlrIHVudHVrIG1lbmRhcGF0a2FuIGhhc2lsIHlhbmcgcGFsaW5nIHJlcHJlc2VudGF0aWYuCgotLS0KCiMgMi4gTWV0b2RlIFNhbXBsaW5nIHlhbmcgRGlndW5ha2FuCgpEYXRhLXNldCB5YW5nIGRpc2FqaWthbjoKCmBgYHtyIGVjaG89RkFMU0UsIG1hc3NlZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmRhdGFfdGlkdXIgPC0gcmVhZC5jc3YoImRhdGFfdGlkdXJfbWFoYXNpc3dhX21peGVkICgxKS5jc3YiLCBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCgojIENlayBkYXRhCmxpYnJhcnkoa25pdHIpCmthYmxlKGhlYWQoZGF0YV90aWR1cikpCmBgYAoKUGFkYSBiYWdpYW4gaW5pLCBraXRhIGFrYW4gbWVsYWt1a2FuIHBlbmdhbWJpbGFuIHNhbXBlbCBkYXJpIGRhdGEgcG9wdWxhc2kgeWFuZyBiZXJpc2kgMzAwIG1haGFzaXN3YSBtZW5nZ3VuYWthbiBiZXJiYWdhaSBtZXRvZGUgUHJvYmFiaWxpdHkgU2FtcGxpbmcgZGFuIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZywgeWFpdHU6CgphLiBQcm9iYWJpbGl0eSBTYW1wbGluZyAoU2V0aWFwIGluZGl2aWR1IG1lbWlsaWtpIHBlbHVhbmcgeWFuZyBzYW1hIHVudHVrIGRpcGlsaWgpCgoKYi4gTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nIChQZW1pbGloYW4gc2FtcGVsIHRpZGFrIGFjYWsgZGFuIGJpc2EgbWVtaWxpa2kgYmlhcykKClBlbmdhbWJpbGFuIHNhbXBlbCBkaWxha3VrYW4oZGliYW50dSkgZGVuZ2FuIG1lbmdndW5ha2FuIGJhaGFzYSBwZW1yb2dyYW1hbiBSLCB5YW5nIG1lbXVuZ2tpbmthbiBraXRhIHVudHVrIG1lbGFrdWthbiBzZWxla3NpIGRhdGEgc2VjYXJhIHNpc3RlbWF0aXMgZGFuIGFjYWsuCgojIyAyLjEgUHJvYmFiaWxpdHkgU2FtcGxpbmcgKFNhbXBsaW5nIEFjYWspCgojIyMgMi4xLjEuIFNpbXBsZSBSYW5kb20gU2FtcGxpbmcgKFNSUykKClNpbXBsZSBSYW5kb20gU2FtcGxpbmcgKFNSUykgYWRhbGFoIG1ldG9kZSBkaSBtYW5hIHNldGlhcCBpbmRpdmlkdSBkYWxhbSBwb3B1bGFzaSBtZW1pbGlraSBwZWx1YW5nIHlhbmcgc2FtYSB1bnR1ayBkaXBpbGloIHRhbnBhIG1lbXBlcmhhdGlrYW4ga2FyYWt0ZXJpc3RpayB0ZXJ0ZW50dS4KCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CgpsaWJyYXJ5KGRwbHlyKQoKZGF0YSA8LSByZWFkLmNzdigiZGF0YV90aWR1cl9tYWhhc2lzd2FfbWl4ZWQgKDEpLmNzdiIpCgpzZXQuc2VlZCgxMjMpCnNyc19zYW1wbGUgPC0gZGF0YSAlPiUgc2FtcGxlX24oMTAwKQoKa2FibGUoaGVhZChzcnNfc2FtcGxlKSkKYGBgCgpNZXRvZGU6IFNlbXVhIG1haGFzaXN3YSBtZW1pbGlraSBrZXNlbXBhdGFuIHlhbmcgc2FtYSB1bnR1ayBkaXBpbGloLgoKS2V1bmdndWxhbjogVGlkYWsgYWRhIGJpYXMgZGFsYW0gcGVtaWxpaGFuLgoKS2VsZW1haGFuOiBUaWRhayBtZW1wZXJ0aW1iYW5na2FuIGtlbG9tcG9rIGRhbGFtIHBvcHVsYXNpLgoKCgojIyMgMi4xLjIuIFN0cmF0aWZpZWQgUmFuZG9tIFNhbXBsaW5nCgpTdHJhdGlmaWVkIFNhbXBsaW5nIG1lbWJhZ2kgcG9wdWxhc2kgbWVuamFkaSBiZWJlcmFwYSBrZWxvbXBvayBiZXJkYXNhcmthbiBrYXJha3RlcmlzdGlrIHRlcnRlbnR1IChtaXNhbG55YSBmYWt1bHRhcykgc2ViZWx1bSBwZW5nYW1iaWxhbiBzYW1wZWwgZGlsYWt1a2FuLgoKCmBgYHtyIGVjaG89RkFMU0UsIG1hc3NlZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmxpYnJhcnkoZHBseXIpCgpkYXRhIDwtIHJlYWQuY3N2KCJkYXRhX3RpZHVyX21haGFzaXN3YV9taXhlZCAoMSkuY3N2IikKCnNldC5zZWVkKDEyMykKc3RyYXRpZmllZF9zYW1wbGUgPC0gZGF0YSAlPiUKICBncm91cF9ieShGYWt1bHRhcykgJT4lCiAgc2FtcGxlX24oMTAwIC8gbGVuZ3RoKHVuaXF1ZShkYXRhJEZha3VsdGFzKSksIHJlcGxhY2UgPSBGQUxTRSkKCmthYmxlKGhlYWQoc3RyYXRpZmllZF9zYW1wbGUpKQpgYGAKCk1ldG9kZTogUG9wdWxhc2kgZGliYWdpIGJlcmRhc2Fya2FuIEZha3VsdGFzLCBsYWx1IGRpcGlsaWggcHJvcG9yc2kgeWFuZyBzYW1hIGRhcmkgc2V0aWFwIGZha3VsdGFzLgoKS2V1bmdndWxhbjogUmVwcmVzZW50YXNpIGxlYmloIGJhaWsgdW50dWsgc2VtdWEga2Vsb21wb2suCgpLZWxlbWFoYW46IEJ1dHVoIGluZm9ybWFzaSB0YW1iYWhhbiB0ZW50YW5nIGtlbG9tcG9rIGRhbGFtIHBvcHVsYXNpLgoKCiMjIyAyLjEuMy4gU3lzdGVtYXRpYyBTYW1wbGluZwoKU3lzdGVtYXRpYyBTYW1wbGluZyBtZW1pbGloIHNhbXBlbCBkZW5nYW4gcG9sYSBzaXN0ZW1hdGlzLCBtaXNhbG55YSBzZXRpYXAgbWFoYXNpc3dhIGtlLTMgZGFsYW0gZGFmdGFyLgoKYGBge3IgZWNobz1GQUxTRSwgbWFzc2VnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBMb2FkIGxpYnJhcnkKbGlicmFyeShkcGx5cikKCiMgTWVtYmFjYSBkYXRhc2V0CmRhdGEgPC0gcmVhZC5jc3YoImRhdGFfdGlkdXJfbWFoYXNpc3dhX21peGVkICgxKS5jc3YiKQoKIyBNZW5nYW1iaWwgc2FtcGVsIHNlY2FyYSBTaXN0ZW1hdGlzCnNldC5zZWVkKDEyMykKTiA8LSBucm93KGRhdGEpCm4gPC0gMTAwCmsgPC0gZmxvb3IoTiAvIG4pCnN5c3RlbWF0aWNfc2FtcGxlIDwtIGRhdGFbc2VxKDEsIE4sIGJ5ID0gayksIF0KCiMgTWVuYW1waWxrYW4gaGFzaWwKa2FibGUoaGVhZChzeXN0ZW1hdGljX3NhbXBsZSkpCmBgYAoKCk1ldG9kZTogTWVtaWxpaCBzZXRpYXAgbWFoYXNpc3dhIGtlLTMgZGFsYW0gZGFmdGFyLgoKS2V1bmdndWxhbjogRGlzdHJpYnVzaSBzYW1wZWwgbGViaWggbWVyYXRhLgoKS2VsZW1haGFuOiBCaXNhIGJpYXMgamlrYSBhZGEgcG9sYSBkYWxhbSBkYXRhLgoKCgojIyMgMi4xLjQuIENsdXN0ZXIgU2FtcGxpbmcKCkNsdXN0ZXIgU2FtcGxpbmcgbWVtYmFnaSBwb3B1bGFzaSBtZW5qYWRpIGtlbG9tcG9rLWtlbG9tcG9rIGtlY2lsIChjbHVzdGVyKSwgbGFsdSBiZWJlcmFwYSBjbHVzdGVyIGRpcGlsaWggdW50dWsgZGlqYWRpa2FuIHNhbXBlbC4KCgpgYGB7ciBlY2hvPUZBTFNFLCBtYXNzZWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIExvYWQgbGlicmFyeQpsaWJyYXJ5KGRwbHlyKQoKIyBNZW1iYWNhIGRhdGFzZXQKZGF0YSA8LSByZWFkLmNzdigiZGF0YV90aWR1cl9tYWhhc2lzd2FfbWl4ZWQgKDEpLmNzdiIpCgojIE1lbmdhbWJpbCBzYW1wZWwgc2VjYXJhIFN0cmF0aWZpZWQgYmVyZGFzYXJrYW4gRmFrdWx0YXMKc2V0LnNlZWQoMTIzKQpzdHJhdGlmaWVkX3NhbXBsZSA8LSBkYXRhICU+JQogIGdyb3VwX2J5KEZha3VsdGFzKSAlPiUKICBzYW1wbGVfbigxMDAgLyBsZW5ndGgodW5pcXVlKGRhdGEkRmFrdWx0YXMpKSwgcmVwbGFjZSA9IEZBTFNFKQoKIyBNZW5hbXBpbGthbiBoYXNpbAprYWJsZShoZWFkKHN0cmF0aWZpZWRfc2FtcGxlKSkKYGBgCgpNZXRvZGU6IE1lbWlsaWgganVtbGFoIG1haGFzaXN3YSB5YW5nIHNhbWEgZGFyaSBzZXRpYXAgZmFrdWx0YXMsIGhpbmdnYSB0b3RhbG55YSAxMDAgbWFoYXNpc3dhLgoKS2V1bmdndWxhbjogUmVwcmVzZW50YXNpIHlhbmcgc2VpbWJhbmcgYW50YXIga2Vsb21wb2suCgpLZWxlbWFoYW46IFRpZGFrIGFjYWssIGRhcGF0IG1lbnllYmFia2FuIGJpYXMgZGFsYW0gcGVtaWxpaGFuLgoKCgojIyAyLjIgTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nIChTYW1wbGluZyBUaWRhayBBY2FrKQoKIyMjIDIuMi4xLiBDb252ZW5pZW5jZSBTYW1wbGluZwoKQ29udmVuaWVuY2UgU2FtcGxpbmcgbWVtaWxpaCBzYW1wZWwgYmVyZGFzYXJrYW4ga2VtdWRhaGFuIGFrc2VzLCBtaXNhbG55YSBtYWhhc2lzd2EgeWFuZyB0ZXJzZWRpYSBsZWJpaCBkdWx1LgoKYGBge3IgZWNobz1GQUxTRSwgbWFzc2VnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBMb2FkIGxpYnJhcnkKbGlicmFyeShkcGx5cikKCiMgTWVtYmFjYSBkYXRhc2V0CmRhdGEgPC0gcmVhZC5jc3YoImRhdGFfdGlkdXJfbWFoYXNpc3dhX21peGVkICgxKS5jc3YiKQoKIyBNZW5nYW1iaWwgMTAwIG1haGFzaXN3YSBwZXJ0YW1hCmNvbnZlbmllbmNlX3NhbXBsZSA8LSBoZWFkKGRhdGEsIDEwMCkKCiMgTWVuYW1waWxrYW4gaGFzaWwKa2FibGUgKGhlYWQoY29udmVuaWVuY2Vfc2FtcGxlKSkKYGBgCgoKTWV0b2RlOiBNZW5nYW1iaWwgMTAwIG1haGFzaXN3YSBwZXJ0YW1hIGRhbGFtIGRhdGFzZXQuCgpLZXVuZ2d1bGFuOiBDZXBhdCBkYW4gbXVkYWggZGlsYWt1a2FuLgoKS2VsZW1haGFuOiBSZW50YW4gdGVyaGFkYXAgYmlhcywgdGlkYWsgcmVwcmVzZW50YXRpZi4KCiMjIyAyLjIuMi4gUHVycG9zaXZlIFNhbXBsaW5nCgpQdXJwb3NpdmUgU2FtcGxpbmcgbWVtaWxpaCBzYW1wZWwgYmVyZGFzYXJrYW4ga3JpdGVyaWEga2h1c3VzLCBtaXNhbG55YSBtYWhhc2lzd2EgZGVuZ2FuIHdha3R1IHRpZHVyIGt1cmFuZyBkYXJpIDQgamFtLgoKYGBge3IgZWNobz1GQUxTRSwgbWFzc2VnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBNZW1iYWNhIGRhdGFzZXQKZGF0YSA8LSByZWFkLmNzdigiZGF0YV90aWR1cl9tYWhhc2lzd2FfbWl4ZWQgKDEpLmNzdiIpCgoKIyBGaWx0ZXIgbWFoYXNpc3dhIGRlbmdhbiBqYW0gdGlkdXIgPj0gNApwdXJwb3NpdmVfc2FtcGxlIDwtIGRhdGEgJT4lCiAgZmlsdGVyKFdha3R1LlRpZHVyLi5KYW0uIDwgNCkKCiMgTWVuYW1waWxrYW4gaGFzaWwKa2FibGUoaGVhZChwdXJwb3NpdmVfc2FtcGxlKSkKYGBgCgpNZXRvZGU6IE1lbWlsaWggMTAwIG1haGFzaXN3YSBkZW5nYW4gd2FrdHUgdGlkdXIga3VyYW5nIGRhcmkgNCBqYW0uCgpLZXVuZ2d1bGFuOiBGb2t1cyBwYWRhIGtlbG9tcG9rIHRlcnRlbnR1IHlhbmcgbWVuYXJpayB1bnR1ayBwZW5lbGl0aWFuLgoKS2VsZW1haGFuOiBUaWRhayBtZXdha2lsaSBwb3B1bGFzaSBzZWNhcmEga2VzZWx1cnVoYW4uCgojIyMgMi4yLjMuIFNub3diYWxsIFNhbXBsaW5nCgpTbm93YmFsbCBTYW1wbGluZyBkaWd1bmFrYW4ga2V0aWthIHBvcHVsYXNpIHN1bGl0IGRpamFuZ2thdS4gU2FtcGVsIHBlcnRhbWEgZGlwaWxpaCwgbGFsdSBtZXJla2EgbWVtYmFudHUgbWVyZWtydXQgc2FtcGVsIGJlcmlrdXRueWEuCgpgYGB7ciBlY2hvPUZBTFNFLCBtYXNzZWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIExvYWQgbGlicmFyeQpsaWJyYXJ5KGRwbHlyKQoKIyBNZW1iYWNhIGRhdGFzZXQKZGF0YSA8LSByZWFkLmNzdigiZGF0YV90aWR1cl9tYWhhc2lzd2FfbWl4ZWQgKDEpLmNzdiIpCgojIE1lbmdhbWJpbCAxMDAgbWFoYXNpc3dhIHBlcnRhbWEKY29udmVuaWVuY2Vfc2FtcGxlIDwtIGhlYWQoZGF0YSwgMTAwKQoKIyBNZW5hbXBpbGthbiBoYXNpbAprYWJsZShoZWFkKGNvbnZlbmllbmNlX3NhbXBsZSkpCmBgYAoKTWV0b2RlOiBNZW1pbGloIDEgbWFoYXNpc3dhIHNlY2FyYSBhY2FrLCBsYWx1IG1lbmNhcmkgbWFoYXNpc3dhIGxhaW4gZGVuZ2FuIHdha3R1IHRpZHVyIHlhbmcgc2FtYSBoaW5nZ2EganVtbGFoIHNhbXBlbCBtZW5jYXBhaSAxMDAuCgpLZXVuZ2d1bGFuOiBCZXJndW5hIGppa2Egc3VsaXQgbWVuZW11a2FuIHBvcHVsYXNpIHRhcmdldC4KCktlbGVtYWhhbjogQmlhcyB0aW5nZ2ksIHRpZGFrIGRhcGF0IGRpZ2VuZXJhbGlzYXNpLgoKIyMjIDIuMi40LiBRdW90YSBTYW1wbGluZwoKU2FtcGVsIGRpcGlsaWggaGluZ2dhIGt1b3RhIHRlcnRlbnR1IHRlcnBlbnVoaSBiZXJkYXNhcmthbiBrYXRlZ29yaSB0ZXJ0ZW50dSAobWlzYWxueWEganVtbGFoIG1haGFzaXN3YSBwZXIgZmFrdWx0YXMpLgoKYGBge3IgZWNobz1GQUxTRSwgbWFzc2VnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBMb2FkIGxpYnJhcnkKbGlicmFyeShkcGx5cikKCiMgTWVtYmFjYSBkYXRhc2V0CmRhdGEgPC0gcmVhZC5jc3YoImRhdGFfdGlkdXJfbWFoYXNpc3dhX21peGVkICgxKS5jc3YiKQoKIyBNZW5nYW1iaWwgc2FtcGVsIGJlcmRhc2Fya2FuIGt1b3RhIHBlciBmYWt1bHRhcwpzZXQuc2VlZCgxMjMpCnF1b3RhX3NhbXBsZSA8LSBkYXRhICU+JQogIGdyb3VwX2J5KEZha3VsdGFzKSAlPiUKICBzYW1wbGVfbigxMDAgLyBsZW5ndGgodW5pcXVlKGRhdGEkRmFrdWx0YXMpKSkKCiMgTWVuYW1waWxrYW4gaGFzaWwKa2FibGUoaGVhZChxdW90YV9zYW1wbGUpKQpgYGAKCgpNZXRvZGU6IE1lbWlsaWgganVtbGFoIG1haGFzaXN3YSB5YW5nIHNhbWEgZGFyaSBzZXRpYXAgZmFrdWx0YXMsIGhpbmdnYSB0b3RhbG55YSAxMDAgbWFoYXNpc3dhLgoKS2V1bmdndWxhbjogUmVwcmVzZW50YXNpIHlhbmcgc2VpbWJhbmcgYW50YXIga2Vsb21wb2suCgpLZWxlbWFoYW46IFRpZGFrIGFjYWssIGRhcGF0IG1lbnllYmFia2FuIGJpYXMgZGFsYW0gcGVtaWxpaGFuLgoKCgotLS0KCiMgMy4gUGVyaGl0dW5nYW4gTWFyZ2luIG9mIEVycm9yIChNb0UpIGRhbGFtIFByb2JhYmlsaXR5IFNhbXBsaW5nClNlY2FyYSB1bXVtLCBNb0UgZGloaXR1bmcgZGVuZ2FuIHJ1bXVzOiAgCgpcWwpNb0UgPSBaIFx0aW1lcyBcZnJhY3tcc2lnbWF9e1xzcXJ0e259fQpcXQoKRGltYW5hOiAgCi0gXCggWiA9IDEuOTYgXCkgKHVudHVrIHRpbmdrYXQga2VwZXJjYXlhYW4gOTUlKSAgCi0gXCggbiA9IDEwMCBcKSAoanVtbGFoIHNhbXBlbCkgIAotIFwoIFxzaWdtYSBcKSA9IFNpbXBhbmdhbiBiYWt1IHNhbXBlbCAgCgpTaW1wYW5nYW4gYmFrdSAoXChcc2lnbWFcKSkgZGloaXR1bmcgZGVuZ2FuIHJ1bXVzOiAgCgpcWwpcc2lnbWEgPSBcc3FydHtcZnJhY3tcc3VtIChYX2kgLSBcYmFye1h9KV4yfXtuLTF9fQpcXQoKRGltYW5hOiAgCi0gXCggWF9pIFwpID0gV2FrdHUgdGlkdXIgbWFoYXNpc3dhIGtlLWkgIAotIFwoIFxiYXJ7WH0gXCkgPSBSYXRhLXJhdGEgd2FrdHUgdGlkdXIgbWFoYXNpc3dhICAKLSBcKCBuIFwpID0gVWt1cmFuIHNhbXBlbCAgCgojIyAzLjEgU2ltcGxlIFJhbmRvbSBTYW1wbGluZyAoU1JTKSAgCkRpa2V0YWh1aTogIAoKYGBge3IgZWNobz1GQUxTRSwgbWFzc2VnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBMb2FkIGRhdGFzZXQKZGF0YSA8LSByZWFkLmNzdigiZGF0YV90aWR1cl9tYWhhc2lzd2FfbWl4ZWQgKDEpLmNzdiIpCiMgTWVuZW50dWthbiBqdW1sYWggc2FtcGVsCm4gPC0gMTAwCgojIE1lbmdhbWJpbCBzYW1wZWwgc2VjYXJhIGFjYWsKc2V0LnNlZWQoMzApCnNyc19zYW1wbGUgPC0gZGF0YVtzYW1wbGUobnJvdyhkYXRhKSwgbiwgcmVwbGFjZSA9IEZBTFNFKSwgXQoKIyBNZW5naGl0dW5nIHNpbXBhbmdhbiBiYWt1CnNpZ21hX3NycyA8LSBzZChzcnNfc2FtcGxlJFdha3R1LlRpZHVyLi5KYW0uLCBuYS5ybSA9IFRSVUUpICAjIEdhbnRpIGRlbmdhbiBuYW1hIGtvbG9tIHlhbmcgc2VzdWFpCgojIE1lbmFtcGlsa2FuIGhhc2lsCnByaW50KHBhc3RlKCJTaW1wYW5nYW4gQmFrdSAoU1JTKToiLCByb3VuZChzaWdtYV9zcnMsIDIpLCAiamFtIikpCmBgYAoKXFsKTW9FID0gMS45NiBcdGltZXMgXGZyYWN7MS44OH17XHNxcnR7MTAwfX0KXF0KClxbCk1vRSA9IDEuOTYgXHRpbWVzIFxmcmFjezEuODh9ezEwfQpcXQoKXFsKTW9FID0gMS45NiBcdGltZXMgMC4xODgKXF0KClxbCk1vRSA9IDAuMzY5ClxdCgpKYWRpLCAqKk1vRSA9IDAuMzY5IGphbSoqLiAgICAKClBhZGEgbWV0b2RlICoqU2ltcGxlIFJhbmRvbSBTYW1wbGluZyAoU1JTKSoqLCBzZXRpYXAgbWFoYXNpc3dhIG1lbWlsaWtpIHBlbHVhbmcgeWFuZyBzYW1hIHVudHVrIHRlcnBpbGloIGRhbGFtIHNhbXBlbC4gRGVuZ2FuIE1vRSBzZWJlc2FyICoqMC4zNjkgamFtKiosIG1ldG9kZSBpbmkgY3VrdXAgYWt1cmF0IGRhbGFtIG1lbmdnYW1iYXJrYW4gcG9wdWxhc2ksIHRldGFwaSB0aWRhayBtZW1wZXJ0aW1iYW5na2FuIHZhcmlhc2kgeWFuZyBtdW5na2luIGFkYSBkaSBhbnRhcmEga2Vsb21wb2sgbWFoYXNpc3dhLCBzZXBlcnRpIHBlcmJlZGFhbiBwb2xhIHRpZHVyIGFudGFyIGZha3VsdGFzLiAgCgojIyAzLjIgU3RyYXRpZmllZCBSYW5kb20gU2FtcGxpbmcgIApEaWtldGFodWk6ICAKCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMgTG9hZCBsaWJyYXJ5CmxpYnJhcnkoZHBseXIpCgojIE1lbmVudHVrYW4ganVtbGFoIHNhbXBlbApuIDwtIDEwMAoKIyBNZW5nYW1iaWwgc2FtcGVsIGJlcmRhc2Fya2FuIGZha3VsdGFzCnNldC5zZWVkKDM1KQpzdHJhdGlmaWVkX3NhbXBsZSA8LSBkYXRhICU+JQogIGdyb3VwX2J5KEZha3VsdGFzKSAlPiUKICBzYW1wbGVfbihuIC8gbGVuZ3RoKHVuaXF1ZShkYXRhJEZha3VsdGFzKSksIHJlcGxhY2UgPSBGQUxTRSkKCiMgTWVuZ2hpdHVuZyBzaW1wYW5nYW4gYmFrdQpzaWdtYV9zdHJhdGlmaWVkIDwtIHNkKHN0cmF0aWZpZWRfc2FtcGxlJFdha3R1LlRpZHVyLi5KYW0uLCBuYS5ybSA9IFRSVUUpCgojIE1lbmFtcGlsa2FuIGhhc2lsCnByaW50KHBhc3RlKCJTaW1wYW5nYW4gQmFrdSAoU3RyYXRpZmllZCk6Iiwgcm91bmQoc2lnbWFfc3RyYXRpZmllZCwgMiksICJqYW0iKSkKCmBgYAoKLSBcKCBcc2lnbWEgPSAxLjc2IFwpIGphbSAgCgpNYWthOiAgCgpcWwpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3sxLjc2fXtcc3FydHsxMDB9fQpcXQoKXFsKTW9FID0gMS45NiBcdGltZXMgXGZyYWN7MS43Nn17MTB9ClxdCgpcWwpNb0UgPSAxLjk2IFx0aW1lcyAwLjE3NgpcXQoKXFsKTW9FID0gMC4zNDUKXF0KCkphZGksICoqTW9FID0gMC4zNDUgamFtKiouCgpTZW1lbnRhcmEgaXR1LCAqKlN0cmF0aWZpZWQgUmFuZG9tIFNhbXBsaW5nKiogbWVtYmFnaSBtYWhhc2lzd2Ega2UgZGFsYW0ga2Vsb21wb2sta2Vsb21wb2sgYmVyZGFzYXJrYW4gZmFrdWx0YXMgc2ViZWx1bSBzYW1wZWwgZGlhbWJpbC4gRGVuZ2FuIGNhcmEgaW5pLCBzZXRpYXAgZmFrdWx0YXMgbWVuZGFwYXRrYW4gcmVwcmVzZW50YXNpIHlhbmcgcHJvcG9yc2lvbmFsIGRhbGFtIHNhbXBlbC4gTW9FIHlhbmcgZGloYXNpbGthbiBhZGFsYWggKiowLjM0NSBqYW0qKiwgeWFuZyBtZXJ1cGFrYW4gbmlsYWkgdGVya2VjaWwgZGliYW5kaW5na2FuIG1ldG9kZSBsYWlubnlhLiBJbmkgbWVudW5qdWtrYW4gYmFod2EgbWV0b2RlIGluaSBtYW1wdSBtZW1iZXJpa2FuIGVzdGltYXNpIHlhbmcgcGFsaW5nIGFrdXJhdCBrYXJlbmEgbWVtcGVyaGl0dW5na2FuIHZhcmlhc2kgZGFsYW0gcG9wdWxhc2kuICAKCiMjIDMuMyBTeXN0ZW1hdGljIFNhbXBsaW5nICAKRGlrZXRhaHVpOiAgCgpgYGB7ciBlY2hvPUZBTFNFLCBtYXNzZWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIE1lbmVudHVrYW4ganVtbGFoIHNhbXBlbApuIDwtIDEwMApOIDwtIG5yb3coZGF0YSkKayA8LSBmbG9vcihOIC8gbikKCiMgTWVuZ2FtYmlsIHNhbXBlbCBzZWNhcmEgc2lzdGVtYXRpcwpzZXQuc2VlZCgzMCkKc3lzdGVtYXRpY19zYW1wbGUgPC0gZGF0YVtzZXEoMSwgTiwgYnkgPSBrKSwgXQoKIyBNZW5naGl0dW5nIHNpbXBhbmdhbiBiYWt1CnNpZ21hX3N5c3RlbWF0aWMgPC0gc2Qoc3lzdGVtYXRpY19zYW1wbGUkV2FrdHUuVGlkdXIuLkphbS4sIG5hLnJtID0gVFJVRSkKCiMgTWVuYW1waWxrYW4gaGFzaWwKcHJpbnQocGFzdGUoIlNpbXBhbmdhbiBCYWt1IChTeXN0ZW1hdGljKToiLCByb3VuZChzaWdtYV9zeXN0ZW1hdGljLCAyKSwgImphbSIpKQoKYGBgCgotIFwoIFxzaWdtYSA9IDEuNzggXCkgamFtICAKCk1ha2E6ICAKClxbCk1vRSA9IDEuOTYgXHRpbWVzIFxmcmFjezEuNzh9e1xzcXJ0ezEwMH19ClxdCgpcWwpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3sxLjc4fXsxMH0KXF0KClxbCk1vRSA9IDEuOTYgXHRpbWVzIDAuMTc4ClxdCgpcWwpNb0UgPSAwLjM0OQpcXQoKSmFkaSwgKipNb0UgPSAwLjM0OSBqYW0qKi4KClBhZGEgbWV0b2RlICoqU3lzdGVtYXRpYyBTYW1wbGluZyoqLCBtYWhhc2lzd2EgZGlwaWxpaCBkZW5nYW4gaW50ZXJ2YWwgdGVydGVudHUgZGFyaSBkYWZ0YXIgcG9wdWxhc2kuIE1vRSB5YW5nIGRpaGFzaWxrYW4gYWRhbGFoICoqMC4zNDkgamFtKiosIHlhbmcgaGFtcGlyIHNldGFyYSBkZW5nYW4gbWV0b2RlIHN0cmF0aWZpa2FzaS4gTmFtdW4sIG1ldG9kZSBpbmkgbWVtaWxpa2kgcG90ZW5zaSBiaWFzIGppa2EgdGVyZGFwYXQgcG9sYSBiZXJ1bGFuZyBkYWxhbSBkYWZ0YXIgbWFoYXNpc3dhIHlhbmcgZGlndW5ha2FuIHVudHVrIHBlbWlsaWhhbiBzYW1wZWwuICAKCiMjIDMuNCBDbHVzdGVyIFNhbXBsaW5nICAKRGlrZXRhaHVpOiAgCgpgYGB7ciBlY2hvPUZBTFNFLCBtYXNzZWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIE1lbmdhbWJpbCBzYW1wZWwgYmVyZGFzYXJrYW4gY2x1c3RlciAoZmFrdWx0YXMpCnNldC5zZWVkKDMwKQpzZWxlY3RlZF9jbHVzdGVyIDwtIHNhbXBsZSh1bmlxdWUoZGF0YSRGYWt1bHRhcyksIDEpICMgUGlsaWggc2F0dSBjbHVzdGVyCmNsdXN0ZXJfc2FtcGxlIDwtIGRhdGFbZGF0YSRGYWt1bHRhcyA9PSBzZWxlY3RlZF9jbHVzdGVyLCBdCgojIE1lbmdoaXR1bmcgc2ltcGFuZ2FuIGJha3UKc2lnbWFfY2x1c3RlciA8LSBzZChjbHVzdGVyX3NhbXBsZSRXYWt0dS5UaWR1ci4uSmFtLiwgbmEucm0gPSBUUlVFKQoKIyBNZW5hbXBpbGthbiBoYXNpbApwcmludChwYXN0ZSgiU2ltcGFuZ2FuIEJha3UgKENsdXN0ZXIpOiIsIHJvdW5kKHNpZ21hX2NsdXN0ZXIsIDIpLCAiamFtIikpCgpgYGAKCi0gXCggXHNpZ21hID0gMS45MSBcKSBqYW0gIAoKTWFrYTogIAoKXFsKTW9FID0gMS45NiBcdGltZXMgXGZyYWN7MS45MX17XHNxcnR7MTAwfX0KXF0KClxbCk1vRSA9IDEuOTYgXHRpbWVzIFxmcmFjezEuOTF9ezEwfQpcXQoKXFsKTW9FID0gMS45NiBcdGltZXMgMC4xOTEKXF0KClxbCk1vRSA9IDAuMzc0ClxdCgpKYWRpLCAqKk1vRSA9IDAuMzc0IGphbSoqLgoKClRlcmFraGlyLCBtZXRvZGUgKipDbHVzdGVyIFNhbXBsaW5nKiogbWVuZ2FtYmlsIHNhbXBlbCBiZXJkYXNhcmthbiBmYWt1bHRhcyB5YW5nIGRpcGlsaWggc2VjYXJhIGFjYWssIGxhbHUgc2VsdXJ1aCBtYWhhc2lzd2EgZGFsYW0gZmFrdWx0YXMgdGVyc2VidXQgZGlqYWRpa2FuIHNhbXBlbC4gTW9FIHVudHVrIG1ldG9kZSBpbmkgYWRhbGFoICoqMC4zNzQgamFtKiosIHlhbmcgbWVydXBha2FuIG5pbGFpIHRlcnRpbmdnaSBkaWJhbmRpbmdrYW4gbWV0b2RlIGxhaW5ueWEuIEhhbCBpbmkgbWVudW5qdWtrYW4gYmFod2EgQ2x1c3RlciBTYW1wbGluZyBjZW5kZXJ1bmcgbWVuZ2hhc2lsa2FuIGVzdGltYXNpIHlhbmcga3VyYW5nIGFrdXJhdCBkaWJhbmRpbmdrYW4gbWV0b2RlIGxhaW4sIHRlcnV0YW1hIGppa2EgZmFrdWx0YXMgeWFuZyB0ZXJwaWxpaCBtZW1pbGlraSBwb2xhIHRpZHVyIHlhbmcgYmVyYmVkYSBkYXJpIGZha3VsdGFzIGxhaW5ueWEuCgoKLS0tCgojIDQuIEFuYWxpc2lzIEJpYXMgZGFsYW0gTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nCgpOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcgYWRhbGFoIG1ldG9kZSBwZW1pbGloYW4gc2FtcGVsIHlhbmcgdGlkYWsgbWVtYmVyaWthbiBwZWx1YW5nIHlhbmcgc2FtYSBrZXBhZGEgc2V0aWFwIGFuZ2dvdGEgcG9wdWxhc2kgdW50dWsgdGVycGlsaWguIEhhbCBpbmkgZGFwYXQgbWVueWViYWJrYW4gYmlhcywgeWFpdHUgcGVueWltcGFuZ2FuIGFudGFyYSBoYXNpbCBzYW1wZWwgZGFuIHBvcHVsYXNpIHNlYmVuYXJueWEuIEJlcmlrdXQgYWRhbGFoIGFuYWxpc2lzIG1lbmRhbGFtIGRhcmkgZW1wYXQgamVuaXMgTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nOiAgCgojIyA0LjEgKipDb252ZW5pZW5jZSBTYW1wbGluZyoqICAKIyMjICoqTWV0b2RlOioqICAKQ29udmVuaWVuY2UgU2FtcGxpbmcgbWVuZ2FtYmlsIHNhbXBlbCBiZXJkYXNhcmthbiBrZW11ZGFoYW4gYWtzZXMgZGFuIGtldGVyc2VkaWFhbiBzdWJqZWsuIE1pc2FsbnlhLCBkYWxhbSBwZW5lbGl0aWFuIGluaSwga2l0YSBtZW1pbGloIDEwMCBtYWhhc2lzd2EgcGVydGFtYSBkYXJpIGRhdGFzZXQgdGFucGEgbWVtcGVydGltYmFuZ2thbiBrYXJha3RlcmlzdGlrIGxhaW5ueWEuICAKCiMjIyAqKktldW5nZ3VsYW46KiogIAotICoqTXVkYWggZGFuIGNlcGF0OioqIFRpZGFrIG1lbWJ1dHVoa2FuIHByb3NlcyBzZWxla3NpIHlhbmcga29tcGxla3MuICAKLSAqKkJpYXlhIHJlbmRhaDoqKiBUaWRhayBtZW1lcmx1a2FuIHN1bWJlciBkYXlhIHRhbWJhaGFuIHVudHVrIG1lbmphbmdrYXUgcmVzcG9uZGVuLiAgCi0gKipEYXBhdCBkaWd1bmFrYW4gdW50dWsgZWtzcGxvcmFzaSBhd2FsOioqIEJlcmd1bmEgZGFsYW0gcGVuZWxpdGlhbiBhd2FsIHVudHVrIG1lbWFoYW1pIHRyZW4ga2FzYXIgc2ViZWx1bSBwZW5nYW1iaWxhbiBzYW1wZWwgeWFuZyBsZWJpaCByZXByZXNlbnRhdGlmLiAgCgojIyMgKipLZWxlbWFoYW46KiogIAotICoqQmlhcyB0aW5nZ2k6KiogSGFzaWwgcGVuZWxpdGlhbiB0aWRhayBkYXBhdCBkaWdlbmVyYWxpc2FzaWthbiBrZSBzZWx1cnVoIHBvcHVsYXNpIGthcmVuYSBoYW55YSBtZXdha2lsaSBrZWxvbXBvayB0ZXJ0ZW50dSB5YW5nIG11ZGFoIGRpYWtzZXMuICAKLSAqKlRpZGFrIHJlcHJlc2VudGF0aWY6KiogTWFoYXNpc3dhIHlhbmcgbGViaWggYWt0aWYgYXRhdSBsZWJpaCBtdWRhaCBkaWphbmdrYXUgYmlzYSBtZW1pbGlraSBrZWJpYXNhYW4gdGlkdXIgYmVyYmVkYSBkYXJpIG1haGFzaXN3YSBsYWlubnlhLiAgCi0gKipUaWRhayBkYXBhdCBkaWd1bmFrYW4gdW50dWsgaW5mZXJlbnNpIHN0YXRpc3RpayB5YW5nIHZhbGlkOioqIEthcmVuYSB0aWRhayBhZGEgamFtaW5hbiBiYWh3YSBzYW1wZWwgbWVuY2VybWlua2FuIHBvcHVsYXNpLCBhbmFsaXNpcyBzdGF0aXN0aWsgYmVyYmFzaXMgaW5mZXJlbnNpIGJpc2EgbWVueWVzYXRrYW4uICAKCiMjIyAqKkNvbnRvaCBCaWFzOioqICAKSmlrYSBraXRhIG1lbmdhbWJpbCAxMDAgbWFoYXNpc3dhIHBlcnRhbWEgeWFuZyBraXRhIHRlbXVpIGRpIGthbXB1cywga2VtdW5na2luYW4gYmVzYXIgbWVyZWthIGFkYWxhaCBtYWhhc2lzd2EgeWFuZyBsZWJpaCByYWppbiBkYW4gbGViaWggYWt0aWYgc2VjYXJhIGFrYWRlbWlrLiBNZXJla2EgbXVuZ2tpbiBtZW1pbGlraSBrZWJpYXNhYW4gdGlkdXIgbGViaWggdGVyYXR1ciBkaWJhbmRpbmdrYW4gbWFoYXNpc3dhIGxhaW4geWFuZyBzZXJpbmcgYmVsYWphciBoaW5nZ2EgbGFydXQgbWFsYW0gYXRhdSB5YW5nIGxlYmloIHN1a2EgYmVnYWRhbmcuICAKCi0tLQoKIyMgNC4yICoqUHVycG9zaXZlIFNhbXBsaW5nKiogIAojIyMgKipNZXRvZGU6KiogIApQdXJwb3NpdmUgU2FtcGxpbmcgbWVtaWxpaCBpbmRpdmlkdSBiZXJkYXNhcmthbiBrYXJha3RlcmlzdGlrIHRlcnRlbnR1IHlhbmcgZGlhbmdnYXAgcmVsZXZhbiBkZW5nYW4gcGVuZWxpdGlhbi4gRGFsYW0gcGVuZWxpdGlhbiBpbmksIHNhbXBlbCBkaWFtYmlsIGJlcmRhc2Fya2FuIG1haGFzaXN3YSB5YW5nIHRpZHVyIGt1cmFuZyBkYXJpIDQgamFtIHBlciBtYWxhbS4gIAoKIyMjICoqS2V1bmdndWxhbjoqKiAgCi0gKipGb2t1cyBwYWRhIGtlbG9tcG9rIHNwZXNpZmlrOioqIEJlcmd1bmEgamlrYSBwZW5lbGl0aWFuIGluZ2luIG1lbXBlbGFqYXJpIGZlbm9tZW5hIHRlcnRlbnR1LCBzZXBlcnRpIG1haGFzaXN3YSBkZW5nYW4ga2ViaWFzYWFuIHRpZHVyIHNhbmdhdCBzZWRpa2l0LiAgCi0gKipFZmVrdGlmIGRhbGFtIHBlbmVsaXRpYW4gZWtzcGxvcmF0aWY6KiogRGFwYXQgbWVtYmVyaWthbiB3YXdhc2FuIG1lbmRhbGFtIHRlbnRhbmcgc3Via2Vsb21wb2sgZGFsYW0gcG9wdWxhc2kuICAKLSAqKkRhcGF0IGRpZ3VuYWthbiBqaWthIHBvcHVsYXNpIHRhcmdldCBzdWxpdCBkaWphbmdrYXU6KiogTWlzYWxueWEsIGppa2Ega2l0YSBpbmdpbiBtZW5lbGl0aSBtYWhhc2lzd2EgZGVuZ2FuIGluc29tbmlhIGF0YXUgZ2FuZ2d1YW4gdGlkdXIuICAKCiMjIyAqKktlbGVtYWhhbjoqKiAgCi0gKipUaWRhayByZXByZXNlbnRhdGlmIHRlcmhhZGFwIHBvcHVsYXNpIHVtdW06KiogSGFueWEgbWVuY2VybWlua2FuIGthcmFrdGVyaXN0aWsga2Vsb21wb2sgdGVydGVudHUsIGJ1a2FuIGtlc2VsdXJ1aGFuIHBvcHVsYXNpIG1haGFzaXN3YS4gIAotICoqU3ViamVrdGlmOioqIFBlbWlsaWhhbiBzYW1wZWwgYmVyZ2FudHVuZyBwYWRhIHBlbmVsaXRpLCB5YW5nIGRhcGF0IG1lbnllYmFia2FuIGJpYXMgc2VsZWtzaS4gIAotICoqVGlkYWsgZGFwYXQgZGlndW5ha2FuIHVudHVrIGdlbmVyYWxpc2FzaToqKiBIYXNpbCBoYW55YSBiZXJsYWt1IHVudHVrIGtlbG9tcG9rIHNwZXNpZmlrIHlhbmcgZGlwaWxpaC4gIAoKIyMjICoqQ29udG9oIEJpYXM6KiogIApKaWthIGtpdGEgaGFueWEgbWVtaWxpaCBtYWhhc2lzd2EgeWFuZyB0aWR1ciBrdXJhbmcgZGFyaSA0IGphbSBwZXIgbWFsYW0sIGtpdGEgbXVuZ2tpbiBtZW5kYXBhdGthbiBkYXRhIHlhbmcgbWVudW5qdWtrYW4gcmF0YS1yYXRhIHdha3R1IHRpZHVyIG1haGFzaXN3YSBsZWJpaCByZW5kYWggZGFyaSBrZW55YXRhYW4uIEluaSBiaXNhIG1lbnllc2F0a2FuIGppa2EgcGVuZWxpdGlhbiBiZXJ0dWp1YW4gbWVuZ2V0YWh1aSByYXRhLXJhdGEgd2FrdHUgdGlkdXIgc2VsdXJ1aCBtYWhhc2lzd2EsIGJ1a2FuIGhhbnlhIGtlbG9tcG9rIHlhbmcgbWVuZ2FsYW1pIGt1cmFuZyB0aWR1ci4gIAoKLS0tCgojIyA0LjMgKipTbm93YmFsbCBTYW1wbGluZyoqICAKIyMjICoqTWV0b2RlOioqICAKU25vd2JhbGwgU2FtcGxpbmcgZGltdWxhaSBkZW5nYW4gbWVtaWxpaCBiZWJlcmFwYSBpbmRpdmlkdSBzZWJhZ2FpIHNhbXBlbCBhd2FsLCBrZW11ZGlhbiBtZXJla2EgbWVtYmFudHUgbWVyZWtydXQgcmVzcG9uZGVuIGxhaW4geWFuZyBtZW1pbGlraSBrYXJha3RlcmlzdGlrIHNlcnVwYS4gIAoKIyMjICoqS2V1bmdndWxhbjoqKiAgCi0gKipCZXJndW5hIHVudHVrIHBvcHVsYXNpIHlhbmcgc3VsaXQgZGlqYW5na2F1OioqIENvY29rIHVudHVrIG1lbmVsaXRpIGtlbG9tcG9rIHRlcnRlbnR1LCBzZXBlcnRpIG1haGFzaXN3YSB5YW5nIGJla2VyamEgc2FtYmlsIGt1bGlhaCBhdGF1IG1lcmVrYSB5YW5nIG1lbWlsaWtpIHBvbGEgdGlkdXIgZWtzdHJlbS4gIAotICoqRWZla3RpZiBkYWxhbSBwZW5lbGl0aWFuIGt1YWxpdGF0aWY6KiogRGFwYXQgZGlndW5ha2FuIHVudHVrIG1lbWFoYW1pIHBlbmdhbGFtYW4gaW5kaXZpZHUgZGFsYW0ga2Vsb21wb2sgdGVydGVudHUuICAKLSAqKk1lbmdoZW1hdCB3YWt0dSBkYW4gc3VtYmVyIGRheWE6KiogUmVzcG9uZGVuIG1lbWJhbnR1IGRhbGFtIHBlbmNhcmlhbiBzYW1wZWwgdGFtYmFoYW4uICAKCiMjIyAqKktlbGVtYWhhbjoqKiAgCi0gKipCaWFzIHNvc2lhbDoqKiBSZXNwb25kZW4gY2VuZGVydW5nIG1lcmVrb21lbmRhc2lrYW4gb3JhbmcgZGVuZ2FuIGthcmFrdGVyaXN0aWsgeWFuZyBtaXJpcCwgbWVueWViYWJrYW4gaGFzaWwgdGlkYWsgYmVydmFyaWFzaS4gIAotICoqS3VyYW5nIHJlcHJlc2VudGF0aWY6KiogU2FtcGVsIGhhbnlhIHRlcmRpcmkgZGFyaSBqYXJpbmdhbiBzb3NpYWwgdGVydGVudHUsIGJ1a2FuIHNlbHVydWggcG9wdWxhc2kuICAKLSAqKlN1bGl0IGRpa2VuZGFsaWthbjoqKiBQZW5lbGl0aSBrZWhpbGFuZ2FuIGtlbmRhbGkgYXRhcyBiYWdhaW1hbmEgc2FtcGVsIGJlcmtlbWJhbmcga2FyZW5hIGJlcmdhbnR1bmcgcGFkYSByZWtvbWVuZGFzaSByZXNwb25kZW4uICAKCiMjIyAqKkNvbnRvaCBCaWFzOioqICAKSmlrYSBraXRhIG11bGFpIGRlbmdhbiBzZW9yYW5nIG1haGFzaXN3YSB5YW5nIHNlcmluZyBiZWdhZGFuZywga2VtdW5na2luYW4gYmVzYXIgZGlhIGFrYW4gbWVyZWtvbWVuZGFzaWthbiB0ZW1hbi10ZW1hbm55YSB5YW5nIGp1Z2EgbWVtaWxpa2kga2ViaWFzYWFuIHRpZHVyIHlhbmcgc2FtYS4gSW5pIGFrYW4gbWVuY2lwdGFrYW4ga2VzaW1wdWxhbiB5YW5nIGJpYXMgYmFod2Egc2ViYWdpYW4gYmVzYXIgbWFoYXNpc3dhIHRpZHVyIHNhbmdhdCBsYXJ1dCBtYWxhbSwgcGFkYWhhbCBwb3B1bGFzaSBtYWhhc2lzd2Egc2VjYXJhIGtlc2VsdXJ1aGFuIG11bmdraW4gbWVtaWxpa2kgcG9sYSB0aWR1ciB5YW5nIGxlYmloIGJlcnZhcmlhc2kuICAKCi0tLQoKIyMgNC40ICoqUXVvdGEgU2FtcGxpbmcqKiAgCiMjIyAqKk1ldG9kZToqKiAgClF1b3RhIFNhbXBsaW5nIG1lbWJhZ2kgcG9wdWxhc2kga2UgZGFsYW0ga2F0ZWdvcmkgdGVydGVudHUgKG1pc2FsbnlhIGJlcmRhc2Fya2FuIGZha3VsdGFzKSwga2VtdWRpYW4gbWVtaWxpaCBzYW1wZWwgZGFyaSBtYXNpbmctbWFzaW5nIGthdGVnb3JpIGhpbmdnYSBrdW90YSB0ZXJwZW51aGkuICAKCiMjIyAqKktldW5nZ3VsYW46KiogIAotICoqTGViaWggcmVwcmVzZW50YXRpZiBkaWJhbmRpbmdrYW4gbWV0b2RlIG5vbi1hY2FrIGxhaW5ueWE6KiogTWVtYXN0aWthbiBiYWh3YSBzZXRpYXAga2Vsb21wb2sgbWVtaWxpa2kgcGVyd2FraWxhbiBkYWxhbSBzYW1wZWwuICAKLSAqKkxlYmloIGNlcGF0IGRhcmlwYWRhIHN0cmF0aWZpZWQgc2FtcGxpbmc6KiogVGlkYWsgbWVtZXJsdWthbiBwZW1pbGloYW4gYWNhayBkYWxhbSBzZXRpYXAga2Vsb21wb2suICAKLSAqKkRhcGF0IGRpZ3VuYWthbiBrZXRpa2EgZGF0YSBwb3B1bGFzaSB0ZXJiYXRhczoqKiBKaWthIHRpZGFrIG1lbXVuZ2tpbmthbiB1bnR1ayBtZW5nZ3VuYWthbiBQcm9iYWJpbGl0eSBTYW1wbGluZywgbWV0b2RlIGluaSBiaXNhIG1lbmphZGkgYWx0ZXJuYXRpZi4gIAoKIyMjICoqS2VsZW1haGFuOioqICAKLSAqKlRpZGFrIHNlcGVudWhueWEgYWNhazoqKiBQZW1pbGloYW4gaW5kaXZpZHUgZGFsYW0gc2V0aWFwIGt1b3RhIGJpc2Egc3ViamVrdGlmLCBtZW55ZWJhYmthbiBiaWFzIHNlbGVrc2kuICAKLSAqKlJlbnRhbiB0ZXJoYWRhcCB1bmRlcmNvdmVyYWdlIGJpYXM6KiogSmlrYSBiZWJlcmFwYSBrZWxvbXBvayBsZWJpaCBzdWxpdCBkaWphbmdrYXUsIG1lcmVrYSBiaXNhIGt1cmFuZyB0ZXJ3YWtpbGkgZGFsYW0gc2FtcGVsLiAgCi0gKipLdXJhbmcgYWt1cmF0IGRpYmFuZGluZ2thbiBTdHJhdGlmaWVkIFNhbXBsaW5nOioqIEthcmVuYSB0aWRhayBtZW5nZ3VuYWthbiBwZW1pbGloYW4gYWNhayBkaSBkYWxhbSBzZXRpYXAga2F0ZWdvcmkuICAKCiMjIyAqKkNvbnRvaCBCaWFzOioqICAKSmlrYSBrdW90YSBkaXRldGFwa2FuIHVudHVrIHNldGlhcCBmYWt1bHRhcywgdGV0YXBpIGtpdGEgbWVtaWxpaCBtYWhhc2lzd2EgZGFsYW0ga3VvdGEgdGVyc2VidXQgYmVyZGFzYXJrYW4ga2VtdWRhaGFuIGFrc2VzLCBraXRhIG11bmdraW4gbWVuZGFwYXRrYW4gcGVyd2FraWxhbiB5YW5nIGt1cmFuZyBha3VyYXQuIE1pc2FsbnlhLCBqaWthIHNlYmFnaWFuIGJlc2FyIG1haGFzaXN3YSB5YW5nIGRpd2F3YW5jYXJhaSBiZXJhc2FsIGRhcmkga2VsYXMgcGFnaSwgaGFzaWxueWEgYmlzYSBtZW5jZXJtaW5rYW4gcG9sYSB0aWR1ciB5YW5nIGxlYmloIHNlaGF0IGRpYmFuZGluZ2thbiBwb3B1bGFzaSBzZWNhcmEga2VzZWx1cnVoYW4uICAKCi0tLQoKIyA1LiBQZXJiYW5kaW5nYW4gSGFzaWwgZGFyaSBCZXJiYWdhaSBNZXRvZGUgU2FtcGxpbmcKCkRhbGFtIHBlbmVsaXRpYW4gaW5pLCBkaWd1bmFrYW4gYmVyYmFnYWkgbWV0b2RlIHNhbXBsaW5nLCBiYWlrICoqUHJvYmFiaWxpdHkgU2FtcGxpbmcqKiBtYXVwdW4gKipOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcqKi4gTWFzaW5nLW1hc2luZyBtZXRvZGUgbWVtaWxpa2kga2FyYWt0ZXJpc3Rpaywga2V1bmdndWxhbiwga2VsZW1haGFuLCBzZXJ0YSB0aW5na2F0IGJpYXMgZGFuIG1hcmdpbiBvZiBlcnJvciB5YW5nIGJlcmJlZGEuIFVudHVrIG1lbWFoYW1pIGVmZWt0aXZpdGFzIG1hc2luZy1tYXNpbmcgbWV0b2RlLCBkaWxha3VrYW4gYW5hbGlzaXMgbWVuZGFsYW0gYmVyZGFzYXJrYW4gKiptYXJnaW4gb2YgZXJyb3IsIGJpYXMsIGRhbiB0aW5na2F0IHJlcHJlc2VudGF0aXZpdGFzIHRlcmhhZGFwIHBvcHVsYXNpKiouICAKCiMjICoqNS4xIFBlcmJhbmRpbmdhbiBQcm9iYWJpbGl0eSBTYW1wbGluZyB2cyBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcqKiAgCgpTYW1wZWwgeWFuZyBkaWFtYmlsIG1lbmdndW5ha2FuICoqUHJvYmFiaWxpdHkgU2FtcGxpbmcqKiBtZW1pbGlraSBwZWx1YW5nIGxlYmloIHRpbmdnaSB1bnR1ayBtZW5naGFzaWxrYW4gZGF0YSB5YW5nIHJlcHJlc2VudGF0aWYgZGliYW5kaW5na2FuIGRlbmdhbiAqKk5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZyoqLiBIYWwgaW5pIGthcmVuYSBQcm9iYWJpbGl0eSBTYW1wbGluZyBtZW11bmdraW5rYW4gc2V0aWFwIGluZGl2aWR1IGRhbGFtIHBvcHVsYXNpIG1lbWlsaWtpIHBlbHVhbmcgeWFuZyBzYW1hIHVudHVrIGRpcGlsaWgsIHNlZGFuZ2thbiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcgY2VuZGVydW5nIGJlcmdhbnR1bmcgcGFkYSBmYWt0b3Iga2VtdWRhaGFuIGRhbiBzdWJqZWt0aXZpdGFzIGRhbGFtIHBlbWlsaWhhbiBzYW1wZWwuICAKCnwgKipBc3BlayoqICAgICAgICAgICAgICAgICAgfCAqKlByb2JhYmlsaXR5IFNhbXBsaW5nKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCAqKkRlZmluaXNpKiogICAgICAgICAgICAgICB8IE1ldG9kZSBzYW1wbGluZyB5YW5nIG1lbWFzdGlrYW4gc2V0aWFwIGVsZW1lbiBkYWxhbSBwb3B1bGFzaSBtZW1pbGlraSBwZWx1YW5nIHlhbmcgc2FtYSB1bnR1ayBkaXBpbGloLiB8IE1ldG9kZSBzYW1wbGluZyB5YW5nIHRpZGFrIG1lbWJlcmlrYW4gc2V0aWFwIGVsZW1lbiBwZWx1YW5nIHlhbmcgc2FtYSB1bnR1ayBkaXBpbGloLiB8CnwgKipDb250b2ggTWV0b2RlKiogICAgICAgICAgfCBTaW1wbGUgUmFuZG9tLCBTdHJhdGlmaWVkLCBTeXN0ZW1hdGljLCBDbHVzdGVyICAgICAgICAgICAgICAgfCBDb252ZW5pZW5jZSwgUHVycG9zaXZlLCBTbm93YmFsbCwgUXVvdGEgICAgICAgICAgICAgICAgICB8CnwgKipLZWFjYWthbioqICAgICAgICAgICAgICAgfCBQZW1pbGloYW4gc2FtcGVsIGRpbGFrdWthbiBzZWNhcmEgYWNhayAgICAgICAgICAgICAgICAgICAgICAgfCBQZW1pbGloYW4gc2FtcGVsIHNlcmluZyBiZXJkYXNhcmthbiBha3Nlc2liaWxpdGFzIGF0YXUga2FyYWt0ZXJpc3RpayB0ZXJ0ZW50dSB8CnwgKipNYXJnaW4gb2YgRXJyb3IgKE1vRSkqKiAgfCBEYXBhdCBkaWhpdHVuZyBkZW5nYW4gcHJlc2lzaSBkYW4gY2VuZGVydW5nIGxlYmloIGtlY2lsICAgICB8IFN1bGl0IGRpaGl0dW5nIGthcmVuYSB0aWRhayBhZGEgYXR1cmFuIHBlbmdhbWJpbGFuIHNhbXBlbCB5YW5nIHNpc3RlbWF0aXMgfAp8ICoqQmlhcyoqICAgICAgICAgICAgICAgICAgIHwgUmVsYXRpZiByZW5kYWggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUaW5nZ2ksIGthcmVuYSBwZW1pbGloYW4gdGlkYWsgZGlsYWt1a2FuIHNlY2FyYSBhY2FrIHwKfCAqKktlbXVkYWhhbiBQZWxha3NhbmFhbioqICB8IE1lbWVybHVrYW4gcGVyZW5jYW5hYW4gbGViaWggbWF0YW5nIGRhbiBzdW1iZXIgZGF5YSBsZWJpaCBiZXNhciB8IExlYmloIG11ZGFoLCBjZXBhdCwgZGFuIG11cmFoIGRpbGFrdWthbiB8CnwgKipSZXByZXNlbnRhc2kgUG9wdWxhc2kqKiAgfCBIYXNpbCBsZWJpaCByZXByZXNlbnRhdGlmIGRhbiBkYXBhdCBkaWdlbmVyYWxpc2FzaSAgICAgICAgICB8IEt1cmFuZyByZXByZXNlbnRhdGlmIGthcmVuYSB0aWRhayBzZW11YSBpbmRpdmlkdSBtZW1pbGlraSBrZXNlbXBhdGFuIHlhbmcgc2FtYSB1bnR1ayBkaXBpbGloIHwKCkRhcmkgdGFiZWwgaW5pLCBkYXBhdCBkaXNpbXB1bGthbiBiYWh3YSAqKlByb2JhYmlsaXR5IFNhbXBsaW5nIGxlYmloIHVuZ2d1bCBkYWxhbSBoYWwgYWt1cmFzaSBkYW4gcmVwcmVzZW50YXRpdml0YXMqKi4gTmFtdW4sICoqTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nIGxlYmloIG11ZGFoIGRhbiBjZXBhdCBkaWd1bmFrYW4qKiwgdGVydXRhbWEgZGFsYW0ga29uZGlzaSBkaSBtYW5hIHN1bWJlciBkYXlhIHRlcmJhdGFzLiAgCgoKIyMgKio1LjIgUGVyYmFuZGluZ2FuIEhhc2lsIGRhcmkgQmVyYmFnYWkgTWV0b2RlIFByb2JhYmlsaXR5IFNhbXBsaW5nKiogIAoKVW50dWsgbWVuZ2V0YWh1aSBtZXRvZGUgUHJvYmFiaWxpdHkgU2FtcGxpbmcgbWFuYSB5YW5nIHBhbGluZyBha3VyYXQsIGRpbGFrdWthbiBwZXJoaXR1bmdhbiAqKm1hcmdpbiBvZiBlcnJvciAoTW9FKSoqIHVudHVrIHNldGlhcCBtZXRvZGUuICAKCnwgKipNZXRvZGUgU2FtcGxpbmcqKiAgICAgICAgICAgfCAqKkNhcmEgS2VyamEqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICoqTWFyZ2luIG9mIEVycm9yIChNb0UpKiogfCAqKktldW5nZ3VsYW4qKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipLZWxlbWFoYW4qKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8ICoqU2ltcGxlIFJhbmRvbSBTYW1wbGluZyAoU1JTKSoqIHwgTWVtaWxpaCBzYW1wZWwgc2VjYXJhIGFjYWsgZGFyaSBzZWx1cnVoIHBvcHVsYXNpICAgICAgICAgICB8ICoqMC4zNjkgamFtKiogICAgICAgICAgICAgfCBUaWRhayBhZGEgYmlhcyBkYWxhbSBwZW1pbGloYW4gICAgICAgICAgICAgICAgICAgfCBUaWRhayBtZW1wZXJ0aW1iYW5na2FuIHBlcmJlZGFhbiBrZWxvbXBvayBkYWxhbSBwb3B1bGFzaSAgIHwKfCAqKlN0cmF0aWZpZWQgU2FtcGxpbmcqKiAgICAgICAgfCBQb3B1bGFzaSBkaWJhZ2kgZGFsYW0ga2Vsb21wb2ssIGxhbHUgZGlhbWJpbCBzYW1wZWwgc2VjYXJhIHByb3BvcnNpb25hbCB8ICoqMC4zNDUgamFtKiogICAgICAgICAgICAgfCBSZXByZXNlbnRhc2kgbGViaWggYmFpayB1bnR1ayBzZW11YSBrZWxvbXBvayAgICB8IE1lbWVybHVrYW4gaW5mb3JtYXNpIHRhbWJhaGFuIHRlbnRhbmcgcG9wdWxhc2kgICB8CnwgKipTeXN0ZW1hdGljIFNhbXBsaW5nKiogICAgICAgIHwgTWVtaWxpaCBzYW1wZWwgYmVyZGFzYXJrYW4gcG9sYSBzaXN0ZW1hdGlzIChtaXNhbCBzZXRpYXAgbWFoYXNpc3dhIGtlLTMpIHwgKiowLjM0OSBqYW0qKiAgICAgICAgICAgICB8IERpc3RyaWJ1c2kgc2FtcGVsIGxlYmloIG1lcmF0YSAgICAgICAgICAgICAgICAgICB8IEJpc2EgYmlhcyBqaWthIGFkYSBwb2xhIGRhbGFtIGRhdGEgcG9wdWxhc2kgICAgICB8CnwgKipDbHVzdGVyIFNhbXBsaW5nKiogICAgICAgICAgIHwgTWVtaWxpaCBiZWJlcmFwYSBrZWxvbXBvayAobWlzYWwgZmFrdWx0YXMpLCBsYWx1IG1lbmdhbWJpbCBzZW11YSBhbmdnb3RhIGRhbGFtIGtlbG9tcG9rIHRlcnNlYnV0IHwgKiowLjM3NCBqYW0qKiAgICAgICAgICAgICB8IExlYmloIGVmaXNpZW4gamlrYSBwb3B1bGFzaSBsdWFzIGRhbiB0ZXJzZWJhciAgIHwgQmlzYSBtZW55ZWJhYmthbiBiaWFzIGppa2Ega2Vsb21wb2sgeWFuZyBkaXBpbGloIHRpZGFrIG1ld2FraWxpIHBvcHVsYXNpIHNlY2FyYSBrZXNlbHVydWhhbiB8CgojIyMgKipBbmFsaXNpcyoqICAKMS4gKipTdHJhdGlmaWVkIFNhbXBsaW5nIG1lbWlsaWtpIG1hcmdpbiBvZiBlcnJvciB0ZXJrZWNpbCAoMC4zNDUgamFtKSoqLCBzZWhpbmdnYSBtZW5qYWRpIG1ldG9kZSB5YW5nIHBhbGluZyBha3VyYXQuICAKMi4gKipDbHVzdGVyIFNhbXBsaW5nIG1lbWlsaWtpIG1hcmdpbiBvZiBlcnJvciB0ZXJiZXNhciAoMC4zNzQgamFtKSoqLCB5YW5nIG1lbnVuanVra2FuIG1ldG9kZSBpbmkgbGViaWggcmVudGFuIHRlcmhhZGFwIGJpYXMgamlrYSBrZWxvbXBvayB5YW5nIGRpcGlsaWggdGlkYWsgcmVwcmVzZW50YXRpZi4gIAozLiAqKlN5c3RlbWF0aWMgU2FtcGxpbmcgbWVtaWxpa2kgbWFyZ2luIG9mIGVycm9yIHlhbmcgc2VkaWtpdCBsZWJpaCBiZXNhciBkaWJhbmRpbmdrYW4gU3RyYXRpZmllZCBTYW1wbGluZyoqLCB0ZXRhcGkgdGV0YXAgbGViaWgga2VjaWwgZGliYW5kaW5na2FuIFNpbXBsZSBSYW5kb20gZGFuIENsdXN0ZXIgU2FtcGxpbmcuICAKCgojIyAqKjUuMyBQZXJiYW5kaW5nYW4gSGFzaWwgZGFyaSBCZXJiYWdhaSBNZXRvZGUgTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nKiogIAoKTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nIGxlYmloIGJhbnlhayBkaWd1bmFrYW4gZGFsYW0gcGVuZWxpdGlhbiBla3NwbG9yYXRpZiBhdGF1IGtldGlrYSAqKnByb2JhYmlsaXR5IHNhbXBsaW5nIHRpZGFrIGRhcGF0IGRpdGVyYXBrYW4qKiBrYXJlbmEga2V0ZXJiYXRhc2FuIHdha3R1LCBiaWF5YSwgYXRhdSBha3NlcyBrZSBwb3B1bGFzaSB0YXJnZXQuIE5hbXVuLCBtZXRvZGUgaW5pIGNlbmRlcnVuZyBtZW1pbGlraSB0aW5na2F0IGJpYXMgeWFuZyBsZWJpaCB0aW5nZ2kuICAKCnwgKipNZXRvZGUgU2FtcGxpbmcqKiAgICAgICAgfCAqKkNhcmEgS2VyamEqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqKkJpYXMqKiAgICAgICAgICB8ICoqS2V1bmdndWxhbioqICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipLZWxlbWFoYW4qKiAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8ICoqQ29udmVuaWVuY2UgU2FtcGxpbmcqKiAgIHwgTWVtaWxpaCBzYW1wZWwgeWFuZyBwYWxpbmcgbXVkYWggZGlha3NlcyAgICAgICAgICAgICAgIHwgKipUaW5nZ2kqKiAgICAgICAgfCBDZXBhdCBkYW4gbXVkYWggZGlsYWt1a2FuICAgICAgICAgICAgIHwgVGlkYWsgcmVwcmVzZW50YXRpZiwgaGFueWEgbWV3YWtpbGkga2Vsb21wb2sgdGVydGVudHUgfAp8ICoqUHVycG9zaXZlIFNhbXBsaW5nKiogICAgIHwgTWVtaWxpaCBzYW1wZWwgYmVyZGFzYXJrYW4ga2FyYWt0ZXJpc3RpayB0ZXJ0ZW50dSAgICAgIHwgKipUaW5nZ2kqKiAgICAgICAgfCBCaXNhIGZva3VzIHBhZGEga2Vsb21wb2sgc3Blc2lmaWsgICAgIHwgVGlkYWsgYmlzYSBkaWdlbmVyYWxpc2FzaSBrZSBwb3B1bGFzaSBsdWFzIHwKfCAqKlNub3diYWxsIFNhbXBsaW5nKiogICAgICB8IFJlc3BvbmRlbiBwZXJ0YW1hIG1lcmVrcnV0IHJlc3BvbmRlbiBsYWluICAgICAgICAgICAgIHwgKipTYW5nYXQgVGluZ2dpKiogfCBCZXJndW5hIHVudHVrIHBvcHVsYXNpIHlhbmcgc3VsaXQgZGl0ZW11a2FuIHwgQmlhcyB0aW5nZ2kga2FyZW5hIHJlc3BvbmRlbiBzYWxpbmcgbWVyZWtvbWVuZGFzaWthbiB0ZW1hbiBkZW5nYW4ga2FyYWt0ZXJpc3RpayB5YW5nIHNhbWEgfAp8ICoqUXVvdGEgU2FtcGxpbmcqKiAgICAgICAgIHwgTWVtaWxpaCBzYW1wZWwgaGluZ2dhIGt1b3RhIHRlcnRlbnR1IHRlcnBlbnVoaSAgICAgICAgfCAqKlRpbmdnaSoqICAgICAgICB8IE1lbWFzdGlrYW4gcmVwcmVzZW50YXNpIHByb3BvcnNpb25hbCB8IFRpZGFrIGFjYWssIGJpc2EgbWVueWViYWJrYW4gYmlhcyBkYWxhbSBzZWxla3NpIHwKCiMjIyAqKkFuYWxpc2lzKiogIAoxLiAqKlNub3diYWxsIFNhbXBsaW5nIG1lbWlsaWtpIHRpbmdrYXQgYmlhcyB0ZXJ0aW5nZ2kqKiBrYXJlbmEgcmVzcG9uZGVuIGNlbmRlcnVuZyBtZXJla3J1dCBpbmRpdmlkdSB5YW5nIG1lbWlsaWtpIGthcmFrdGVyaXN0aWsgc2VydXBhIGRlbmdhbiBtZXJla2EuICAKMi4gKipDb252ZW5pZW5jZSBTYW1wbGluZyBqdWdhIHNhbmdhdCBiaWFzKioga2FyZW5hIGhhbnlhIG1lbmdhbmRhbGthbiBpbmRpdmlkdSB5YW5nIG11ZGFoIGRpYWtzZXMsIHNlaGluZ2dhIHRpZGFrIG1lbmNlcm1pbmthbiBwb3B1bGFzaSBzZWNhcmEga2VzZWx1cnVoYW4uICAKMy4gKipRdW90YSBTYW1wbGluZyBtZW1pbGlraSBiaWFzIHlhbmcgbGViaWggcmVuZGFoIGRpYmFuZGluZ2thbiBDb252ZW5pZW5jZSBkYW4gU25vd2JhbGwgU2FtcGxpbmcqKiwgdGV0YXBpIHRldGFwIHRpZGFrIHNlYWt1cmF0IFByb2JhYmlsaXR5IFNhbXBsaW5nLiAgCgoKIyMgKio1LjQgS2VzaW1wdWxhbiBkYXJpIFBlcmJhbmRpbmdhbiBNZXRvZGUgU2FtcGxpbmcqKiAgCgpCZXJkYXNhcmthbiBoYXNpbCBwZXJiYW5kaW5nYW4gZGkgYXRhcywgZGFwYXQgZGlzaW1wdWxrYW4gYmFod2E6ICAKCjEuICoqUHJvYmFiaWxpdHkgU2FtcGxpbmcgbGViaWggYWt1cmF0IGRpYmFuZGluZ2thbiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcqKiBrYXJlbmEgbWVtaWxpa2kgKiptYXJnaW4gb2YgZXJyb3IgeWFuZyBsZWJpaCBrZWNpbCBkYW4gYmlhcyB5YW5nIGxlYmloIHJlbmRhaCoqLiAgCjIuICoqU3RyYXRpZmllZCBTYW1wbGluZyBhZGFsYWggbWV0b2RlIHRlcmJhaWsgZGFsYW0gUHJvYmFiaWxpdHkgU2FtcGxpbmcqKiwga2FyZW5hIG1lbXBlcnRpbWJhbmdrYW4ga2FyYWt0ZXJpc3RpayBwb3B1bGFzaSBkYW4gbWVtaWxpa2kgKiptYXJnaW4gb2YgZXJyb3IgdGVya2VjaWwgKDAuMzQ1IGphbSkqKi4gIAozLiAqKkNsdXN0ZXIgU2FtcGxpbmcgbWVtaWxpa2kgbWFyZ2luIG9mIGVycm9yIHRlcmJlc2FyICgwLjM3NCBqYW0pKiogZGFsYW0gUHJvYmFiaWxpdHkgU2FtcGxpbmcsIHlhbmcgbWVudW5qdWtrYW4gKiprdXJhbmcgYWt1cmF0IGppa2EgaGFueWEgc2F0dSBrZWxvbXBvayB5YW5nIGRpcGlsaWgqKi4gIAo0LiAqKk5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZyBtZW1pbGlraSBiaWFzIHlhbmcgdGluZ2dpKiosIHRlcnV0YW1hIHBhZGEgKipTbm93YmFsbCBkYW4gQ29udmVuaWVuY2UgU2FtcGxpbmcqKiwgeWFuZyAqKnBhbGluZyByZW50YW4gdGVyaGFkYXAgYmlhcyoqLiAgCjUuICoqSmlrYSBtZW11bmdraW5rYW4sIHBlbmVsaXRpYW4gc2ViYWlrbnlhIG1lbmdndW5ha2FuIFByb2JhYmlsaXR5IFNhbXBsaW5nKiogYWdhciBoYXNpbG55YSBsZWJpaCBha3VyYXQgZGFuIGRhcGF0IGRpZ2VuZXJhbGlzYXNpIGtlIHBvcHVsYXNpIHlhbmcgbGViaWggbHVhcy4gIAo2LiAqKkppa2EgUHJvYmFiaWxpdHkgU2FtcGxpbmcgdGlkYWsgYmlzYSBkaXRlcmFwa2FuKiosIG1ha2EgKipRdW90YSBTYW1wbGluZyBhZGFsYWggcGlsaWhhbiB0ZXJiYWlrIGRhbGFtIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZyoqLCBrYXJlbmEgbWVtYmVyaWthbiB0aW5na2F0IHJlcHJlc2VudGFzaSB5YW5nIGxlYmloIGJhaWsgZGliYW5kaW5na2FuIG1ldG9kZSBsYWluIGRhbGFtIGthdGVnb3JpIHlhbmcgc2FtYS4gIAoKRGFyaSBoYXNpbCBwZXJiYW5kaW5nYW4gaW5pLCAqKlN0cmF0aWZpZWQgU2FtcGxpbmcgYWRhbGFoIG1ldG9kZSB5YW5nIHBhbGluZyBkaXJla29tZW5kYXNpa2FuIHVudHVrIHBlbmVsaXRpYW4gaW5pKioga2FyZW5hIG1lbWJlcmlrYW4ga2VzZWltYmFuZ2FuIHRlcmJhaWsgYW50YXJhICoqYWt1cmFzaSwgbWFyZ2luIG9mIGVycm9yIHlhbmcgcmVuZGFoLCBkYW4gcmVwcmVzZW50YXRpdml0YXMgcG9wdWxhc2kqKi4KCi0tLQoKIyA2LiBVa3VyYW4gU2FtcGVsIHlhbmcgRGlwZXJsdWthbiB1bnR1ayBNb0UgPSA1JQpLaXRhIGluZ2luIHRhaHUgKipiZXJhcGEgYmFueWFrIG1haGFzaXN3YSB5YW5nIGhhcnVzIGtpdGEgc3VydmVpKiogc3VwYXlhIGhhc2lsIHBlbmVsaXRpYW4gdGVudGFuZyB3YWt0dSB0aWR1ciBtZXJla2EgKip0aWRhayBtZWxlc2V0IGxlYmloIGRhcmkgNSUqKi4gIAoKRGFyaSBkYXRhIHlhbmcga2l0YSBwdW55YTogIAotICoqVG90YWwgbWFoYXNpc3dhKio6IDMwMCBvcmFuZyAgCi0gKipSYXRhLXJhdGEgd2FrdHUgdGlkdXIqKjogNC41MSBqYW0gIAotICoqU2ltcGFuZ2FuIGJha3UqKiAoc2ViZXJhcGEgYmVydmFyaWFzaSB3YWt0dSB0aWR1ciBtZXJla2EpOiAxLjg0IGphbSAgCi0gKipCYXRhcyBrZXNhbGFoYW4gbWFrc2ltYWwgKE1hcmdpbiBvZiBFcnJvciAvIE1vRSkqKjogMC4yMyBqYW0gKGthcmVuYSA1JSBkYXJpIDQuNTEgamFtKSAgCgojIyA2LjEgKipMYW5na2FoIFBlcmhpdHVuZ2FuKiogIAojIyMgNi4xLjEuIEtpdGEgcGFrYWkgcnVtdXMgdW50dWsgbWVuZ2hpdHVuZyBqdW1sYWggc2FtcGVsIHN1cGF5YSBNb0UgdGlkYWsgbGViaWggZGFyaSAwLjIzIGphbTogIAoKICAgXFsKICAgTW9FID0gWiBcdGltZXMgXGZyYWN7XHNpZ21hfXtcc3FydHtufX0KICAgXF0KCiAgIC0gKipaID0gMS45NioqIChhbmdrYSBzdGFuZGFyIHVudHVrIHBlbmVsaXRpYW4gZGVuZ2FuIGtlcGVyY2F5YWFuIDk1JSkgIAogICAtICoqXChcc2lnbWFcKSA9IDEuODQqKiAoc2ltcGFuZ2FuIGJha3UpICAKICAgLSAqKlwoXHNxcnR7bn1cKSBhZGFsYWggYWthciBkYXJpIGp1bWxhaCBzYW1wZWwgeWFuZyBraXRhIGNhcmkqKiAgCgojIyMgNi4xLjIuIFNldGVsYWggZGloaXR1bmcsIGhhc2lsbnlhIG1lbnVuanVra2FuIGJhaHdhICoqa2l0YSBidXR1aCBtaW5pbWFsIDI0NiBtYWhhc2lzd2EgZGFsYW0gc3VydmVpIGluaSoqIHN1cGF5YSBoYXNpbG55YSBjdWt1cCBha3VyYXQgZGFuIHRpZGFrIG1lbGVzZXQgbGViaWggZGFyaSA1JS4gIAoKIyMgNi4yICoqS2VuYXBhIEhhcnVzIDI0Nj8qKiAgCi0gS2FsYXUga2l0YSBhbWJpbCAqKmt1cmFuZyBkYXJpIDI0NiBvcmFuZyoqLCBoYXNpbG55YSBiaXNhIGxlYmloIG1lbGVzZXQgZGFuIGt1cmFuZyBha3VyYXQuICAKLSBLYWxhdSBraXRhIGFtYmlsICoqbGViaWggZGFyaSAyNDYgb3JhbmcqKiwgaGFzaWxueWEgbWFraW4gYWt1cmF0LCB0YXBpIGxlYmloIGxhbWEgZGFuIGxlYmloIG1haGFsIHVudHVrIGRpbGFrdWthbi4gIAoKSmFkaSxhZ2FyIGhhc2lsIHBlbmVsaXRpYW4gaW5pICoqY3VrdXAgYWt1cmF0IGRhbiB0aWRhayBtZWxlc2V0IGxlYmloIGRhcmkgNSUqKiwga2l0YSAqKmhhcnVzIHN1cnZlaSBtaW5pbWFsIDI0NiBtYWhhc2lzd2EqKi4KCi0tLQoKIyA3LiBLZXNpbXB1bGFuIGRhbiBSZWtvbWVuZGFzaQpEYWxhbSBsYXBvcmFuIHByYWt0aWt1bSBpbmksIGthbWkgdGVsYWggbWVsYWt1a2FuIGFuYWxpc2lzIG1lbmRhbGFtIG1lbmdlbmFpIG1ldG9kZSBzYW1wbGluZyBkYW4gbWFyZ2luIG9mIGVycm9yIChNb0UpIGRhbGFtIHBlbmVsaXRpYW4gc3RhdGlzdGlrLCBraHVzdXNueWEgZGFsYW0ga29udGVrcyB3YWt0dSB0aWR1ciBtYWhhc2lzd2EgZGkgc2VidWFoIHVuaXZlcnNpdGFzIGRlbmdhbiBwb3B1bGFzaSAzMDAgbWFoYXNpc3dhLiBCZXJpa3V0IGFkYWxhaCBrZXNpbXB1bGFuIGRhbiByZWtvbWVuZGFzaSBiZXJkYXNhcmthbiBoYXNpbCBhbmFsaXNpcyB5YW5nIHRlbGFoIGRpbGFrdWthbjoKCiMjIDcuMSBLZXNpbXB1bGFuCgoxLiAqKkxhdGFyIEJlbGFrYW5nIGRhbiBUdWp1YW4qKjogUGVuZWxpdGlhbiBpbmkgZGlsYXRhcmJlbGFrYW5naSBvbGVoIGtldGVyYmF0YXNhbiBkYWxhbSBtZW5ndW1wdWxrYW4gZGF0YSBkYXJpIHNlbHVydWggcG9wdWxhc2ksIHNlaGluZ2dhIG1ldG9kZSBzYW1wbGluZyBtZW5qYWRpIHBlbnRpbmcgdW50dWsgbWVuZGFwYXRrYW4gZGF0YSB5YW5nIHJlcHJlc2VudGF0aWYuIFR1anVhbiBwcmFrdGlrdW0gaW5pIGFkYWxhaCB1bnR1ayBtZW1wZWxhamFyaSBiZXJiYWdhaSBtZXRvZGUgcGVuZ2FtYmlsYW4gc2FtcGVsLCBtZW5naGl0dW5nIE1vRSwgbWVuZ2FuYWxpc2lzIGJpYXMsIGRhbiBtZW5lbnR1a2FuIHVrdXJhbiBzYW1wZWwgeWFuZyBkaXBlcmx1a2FuLgoKMi4gKipNZXRvZGUgU2FtcGxpbmcqKjogS2FtaSB0ZWxhaCBtZW5nZWtzcGxvcmFzaSBkdWEga2F0ZWdvcmkgdXRhbWEgbWV0b2RlIHNhbXBsaW5nOiAKICAgLSAqKlByb2JhYmlsaXR5IFNhbXBsaW5nKiogKFNpbXBsZSBSYW5kb20sIFN0cmF0aWZpZWQsIFN5c3RlbWF0aWMsIENsdXN0ZXIpIHlhbmcgbWVtYmVyaWthbiBwZWx1YW5nIHlhbmcgc2FtYSBiYWdpIHNldGlhcCBpbmRpdmlkdSB1bnR1ayB0ZXJwaWxpaCwgZGFuIAogICAtICoqTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nKiogKENvbnZlbmllbmNlLCBQdXJwb3NpdmUsIFNub3diYWxsLCBRdW90YSkgeWFuZyB0aWRhayBtZW1iZXJpa2FuIHBlbHVhbmcgeWFuZyBzYW1hLCBzZWhpbmdnYSBiZXJwb3RlbnNpIG1lbmdoYXNpbGthbiBiaWFzLgoKMy4gKipNYXJnaW4gb2YgRXJyb3IgKE1vRSkqKjogUGVyaGl0dW5nYW4gTW9FIG1lbnVuanVra2FuIGJhaHdhIG1ldG9kZSAqKlN0cmF0aWZpZWQgU2FtcGxpbmcqKiBtZW1pbGlraSBNb0UgdGVya2VjaWwgKDAuMzQ1IGphbSksIG1lbmphZGlrYW5ueWEgbWV0b2RlIHlhbmcgcGFsaW5nIGFrdXJhdCBkYWxhbSBtZW5nZ2FtYmFya2FuIHBvcHVsYXNpLiBTZWJhbGlrbnlhLCAqKkNsdXN0ZXIgU2FtcGxpbmcqKiBtZW1pbGlraSBNb0UgdGVyYmVzYXIgKDAuMzc0IGphbSksIG1lbnVuanVra2FuIHBvdGVuc2kgYmlhcyB5YW5nIGxlYmloIHRpbmdnaS4KCjQuICoqQW5hbGlzaXMgQmlhcyoqOiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcgY2VuZGVydW5nIG1lbWlsaWtpIGJpYXMgeWFuZyBsZWJpaCB0aW5nZ2kgZGliYW5kaW5na2FuIFByb2JhYmlsaXR5IFNhbXBsaW5nLiBNZXRvZGUgc2VwZXJ0aSAqKkNvbnZlbmllbmNlIFNhbXBsaW5nKiogZGFuICoqU25vd2JhbGwgU2FtcGxpbmcqKiBzYW5nYXQgcmVudGFuIHRlcmhhZGFwIGJpYXMsIHlhbmcgZGFwYXQgbWVuZ2FraWJhdGthbiBoYXNpbCB5YW5nIHRpZGFrIHJlcHJlc2VudGF0aWYuCgo1LiAqKlVrdXJhbiBTYW1wZWwgdW50dWsgTW9FIOKJpCA1JSoqOiBVbnR1ayBtZW5jYXBhaSBNb0UgdGlkYWsgbGViaWggZGFyaSA1JSwgZGlwZXJsdWthbiBtaW5pbWFsIDI0NiBtYWhhc2lzd2EgZGFsYW0gc3VydmVpIGluaS4gSW5pIG1lbnVuanVra2FuIHBlbnRpbmdueWEgdWt1cmFuIHNhbXBlbCB5YW5nIG1lbWFkYWkgdW50dWsgbWVtYXN0aWthbiBha3VyYXNpIGhhc2lsIHBlbmVsaXRpYW4uCgojIyA3LjIgUmVrb21lbmRhc2kKCjEuICoqUGVuZ2d1bmFhbiBQcm9iYWJpbGl0eSBTYW1wbGluZyoqOiBEaXNhcmFua2FuIHVudHVrIG1lbmdndW5ha2FuIG1ldG9kZSBQcm9iYWJpbGl0eSBTYW1wbGluZywga2h1c3VzbnlhICoqU3RyYXRpZmllZCBTYW1wbGluZyoqLCBkYWxhbSBwZW5lbGl0aWFuIHlhbmcgbWVtZXJsdWthbiByZXByZXNlbnRhdGl2aXRhcyB0aW5nZ2kuIE1ldG9kZSBpbmkgbWFtcHUgbWVtYmVyaWthbiBlc3RpbWFzaSB5YW5nIGxlYmloIGFrdXJhdCBkZW5nYW4gTW9FIHlhbmcgbGViaWgga2VjaWwuCgoyLiAqKkhpbmRhcmkgTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nKio6IEppa2EgbWVtdW5na2lua2FuLCBoaW5kYXJpIHBlbmdndW5hYW4gTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nLCB0ZXJ1dGFtYSBkYWxhbSBwZW5lbGl0aWFuIHlhbmcgbWVtZXJsdWthbiBnZW5lcmFsaXNhc2kgaGFzaWwuIEppa2EgaGFydXMgZGlndW5ha2FuLCBwaWxpaGxhaCBtZXRvZGUgc2VwZXJ0aSAqKlF1b3RhIFNhbXBsaW5nKiogeWFuZyBsZWJpaCBiYWlrIGRhbGFtIGhhbCByZXByZXNlbnRhdGl2aXRhcyBkaWJhbmRpbmdrYW4gbWV0b2RlIG5vbi1hY2FrIGxhaW5ueWEuCgozLiAqKlBlcmVuY2FuYWFuIFVrdXJhbiBTYW1wZWwqKjogRGFsYW0gcGVyZW5jYW5hYW4gcGVuZWxpdGlhbiwgcGVudGluZyB1bnR1ayBtZW5naGl0dW5nIHVrdXJhbiBzYW1wZWwgeWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmNhcGFpIE1vRSB5YW5nIGRpaW5naW5rYW4uIFBhc3Rpa2FuIHVudHVrIG1lbXBlcnRpbWJhbmdrYW4gdmFyaWFiaWxpdGFzIGRhbGFtIHBvcHVsYXNpIHNhYXQgbWVuZW50dWthbiB1a3VyYW4gc2FtcGVsLgoKNC4gKipFdmFsdWFzaSBkYW4gVmFsaWRhc2kqKjogTGFrdWthbiBldmFsdWFzaSBkYW4gdmFsaWRhc2kgdGVyaGFkYXAgaGFzaWwgcGVuZWxpdGlhbiB1bnR1ayBtZW1hc3Rpa2FuIGJhaHdhIGRhdGEgeWFuZyBkaXBlcm9sZWggZGFwYXQgZGlnZW5lcmFsaXNhc2kga2UgcG9wdWxhc2kgeWFuZyBsZWJpaCBsdWFzLiBJbmkgZGFwYXQgZGlsYWt1a2FuIGRlbmdhbiBtZW1iYW5kaW5na2FuIGhhc2lsIGRhcmkgYmVyYmFnYWkgbWV0b2RlIHNhbXBsaW5nLgoKRGVuZ2FuIG1lbmdpa3V0aSByZWtvbWVuZGFzaSBpbmksIGRpaGFyYXBrYW4gcGVuZWxpdGlhbiBkaSBtYXNhIG1lbmRhdGFuZyBkYXBhdCBtZW5naGFzaWxrYW4gZGF0YSB5YW5nIGxlYmloIGFrdXJhdCBkYW4gcmVwcmVzZW50YXRpZiwgc2VydGEgbWVtYmVyaWthbiB3YXdhc2FuIHlhbmcgbGViaWggYmFpayBtZW5nZW5haSBmZW5vbWVuYSB5YW5nIGRpdGVsaXRpLgoKIyMgOC5SZWZlcmVuc2kKCjEuICoqU2lyZWdhciwgQi4gKG4uZC4pLioqICpNYXJnaW4gb2YgRXJyb3IuKiBkYXJpIFtodHRwczovL2Jvb2tkb3duLm9yZy9kc2NpZW5jZWxhYnMvc2FtcGxpbmdfYW5kX3N1cnZleV90ZWNobmlxdWVzL2RvY3MvMDQtTWFyZ2luLW9mLUVycm9yLmh0bWwjcmVhbC13b3JsZC1leGFtcGxlc10oaHR0cHM6Ly9ib29rZG93bi5vcmcvZHNjaWVuY2VsYWJzL3NhbXBsaW5nX2FuZF9zdXJ2ZXlfdGVjaG5pcXVlcy9kb2NzLzA0LU1hcmdpbi1vZi1FcnJvci5odG1sI3JlYWwtd29ybGQtZXhhbXBsZXMpICAKCjIuICoqQWNjdXJhdGUuSUQuIChuLmQuKS4qKiAqTWFyZ2luIG9mIEVycm9yOiBQZW5nZXJ0aWFuLCBGdW5nc2ksIGRhbiBDYXJhIE1lbmdoaXR1bmdueWEuKiBkYXJpIFtodHRwczovL2FjY3VyYXRlLmlkL21hcmtldGluZy1tYW5hamVtZW4vbWFyZ2luLW9mLWVycm9yL10oaHR0cHM6Ly9hY2N1cmF0ZS5pZC9tYXJrZXRpbmctbWFuYWplbWVuL21hcmdpbi1vZi1lcnJvci8pICAKCjMuICoqU3VydmV5TW9ua2V5LiAobi5kLikuKiogKk1hcmdpbiBvZiBFcnJvciBDYWxjdWxhdG9yLiogZGFyaSBbaHR0cHM6Ly93d3cuc3VydmV5bW9ua2V5LmNvbS9tcC9tYXJnaW4tb2YtZXJyb3ItY2FsY3VsYXRvci9dKGh0dHBzOi8vd3d3LnN1cnZleW1vbmtleS5jb20vbXAvbWFyZ2luLW9mLWVycm9yLWNhbGN1bGF0b3IvKSAgCgo0LiAqKkxlbWJhZ2EgUGVuZWxpdGlhbiBkYW4gUGVuZ2FiZGlhbiBrZXBhZGEgTWFzeWFyYWthdCAoTFAyTSkgVU1BLiAoMjAyMiwgSmFudWFyeSAyNykuKiogKkFwYSBJdHUgTWFyZ2luIEVycm9yPyBQZW5nZXJ0aWFuLCBQZXJoaXR1bmdhbiwgZGVuZ2FuIENvbnRvaC4qIGRhcmkgW2h0dHBzOi8vbHAybS51bWEuYWMuaWQvMjAyMi8wMS8yNy9hcGEtaXR1LW1hcmdpbi1lcnJvci1wZW5nZXJ0aWFuLXBlcmhpdHVuZ2FuLWRlbmdhbi1jb250b2gvXShodHRwczovL2xwMm0udW1hLmFjLmlkLzIwMjIvMDEvMjcvYXBhLWl0dS1tYXJnaW4tZXJyb3ItcGVuZ2VydGlhbi1wZXJoaXR1bmdhbi1kZW5nYW4tY29udG9oLykgIAo=