
Soal 1
Andaikan anda adalah bagian dari Tim riset lapangan yang diminta
untuk melakukan survei tingkat penggunaan aplikasi tranportasi online di
3 kota menengah di Sumatera. Target sampel total adalah 600 responden,
masing masing 200 per kota. Tetapi setelah 2 minggu melakukan survey
anda menemukan: - Di kota A, tim berhasil mendapatkan 250 responden. -
Di kota B, hanya 120 responden yang dapat di wawancarai. - Di kota C,
180 responden.
Intruksi:
- Jelaskan dua jenis kesalahan sampling yang terjadi berdasarkan
situasi ini.
- Jika anda harus menyesuaikan bobot untuk mengembalikan representasi
proporsional, bagaimana anda akan menghitungnya?
Jawaban
Intruksi A
Dua Jenis kesalahan sampling yang terjadi di pengumpulan data
ini.
Kesalahan sampling terjadi karena pengumpulan data yang melebihi
target (Kota Palembang) Di kota Palembang, tim mengumpulkan 250
responden yang seharusnya hanya 200 responden, hal ini menyebabkan
over-representation, dimana proporsisi responden dari kota A lebih besar
dari target. Akibatnya, karakteristik Kota A mengurangi hasil survei
dari kota lain.
Kesalahan sampling terjadi karena pengumpulan data yang kurang
atau tidak mencapai target(Kota Palembang & Lampung) Di kota Lampung
hanya ada 120 responden dan di kota Riau hanya ada 180 responden, ini
mennyebabkan Under-representation, dimana kedua kota ini kurang dari
target nya, ini menyebabkan bias karena karakteristik Kota Lampung dan
Riau berbeda secara signifikan dengan yang berhasil
diwawancarai.
Dua kesalahan ini tidak seimbang antar kota, di kota Lampung hanya
mendapat sedikit respon bisa jadi karena Kesulitan akses wilayah,
keterbatasan tenaga survei di lokasi tersebut, dan minimnya minat
kepercayaan terhadap survei beda dengan kota Palembang yang lebih banyak
responden mungkin adalah kebalikan dari kota Lampung.
Intruksi B
Penyesuaian Bobot Responden
Rumus Bobot: \[
\text{Bobot Penyesuaian}=\frac{\text{Proporsi Target}}{\text{Proporsi
Aktual}}
\]
Hasil Perhitungan:
| Palembang |
250 |
250 / 550 = 0.455 |
0.333 |
0,333 / 0,455 = 0,732 |
| Lampung |
120 |
120 / 550 = 0,218 |
0.333 |
0,333 / 0,218 = 1,527 |
| Riau |
180 |
180 / 550 = 0,327 |
0.333 |
0,333 / 0,327 = 1,018 |
Interpretasi Bobot
- Kota Palembang kelebihan responden, maka bobotnya dikurangi
- Kota Lampung kekurangan responden, maka bobotnya ditambah
- Kota Riau hampir sempurna tapi masih kekurangan responden, sehingga
hanya sedikit penyesuaian
Lampiran tambahan: Refleksi dan saran penguatan survei
1. Menggunakan langkah mitigasi untuk survei mendatang
Berdasarkan dalam survei ini, terdapat tantangan yang terlihat
seperti kesulitan menjaungkau responden di kota Lampung dan kelebihan
data di kota Palembang, mitigasi berikut agar survei yang akan datang
bisa berjalan dengan efektif dan juga proporsional:
Pemantauan Real-Time jumlah responden per wilayah Gunakan
dashboard sederhana untuk memantau progres harian per kota, sehingga
bisa dilakukan penyesuaian cepat bila terjadi kelebihan atau kekurangan
sampel.
Kombinasi Metode survei Menggabungkan wawancara langsung dan juga
wawancara online untuk menjangkau wilayah yang sulit diakses secara
fisik.
Pendekatan Sosial Budaya lokal Seperti melibatkan tokoh
masyarakat seperti ketua RT/RW atau komunitas lokal untuk meningkatkan
kepercayaan dan partisipasi responden
2. Rekomendasi Kebijakan
Beberapa rekomendasi kebijakan menurut saya, yaitu:
Perencanaan survei lebih detail di tiap wilayah Setiap kota
memiliki tantangan dalam pengumpulan data. Maka dari itu, perlu
diperlukan studi awal untuk mengetahui apakah ada hambatan atau tidak
sebelum survei besar dilakukan.
Laporan survei Harus menyertakan bobot dan penjelasannya Agar
hasil survei ini dapat digunakan oleh pembuat kebijakan dengan pemahaman
yang utuh mengenai kekuatan dan keterbatasan datanya.
Evaluasi tim lapangan Setiap survei perlu ditutup dengan evaluasi
internal agar kedua permasalahan ini tidak terulang lagi.
Soal 2
Buatlah desain rancangan survei tentang persepsi kenyamanan pengguna
ojek online saat jam sibuk (07.00-09.00 dan 17.00-19.00)
Intruksi:
- Desain pendakatan samping yang memungkinkan anda menangkap persepsi
pengguna secara representatif pada jam sibuk, tanpa melakukan survei
sepanjang hari.
- Sertakan rancangan waktu, metode pemilihan responden, dan
justifikasi pemilihan unit samping.
- Jelaskan bagaimana anda akan menyesuaikan hasil survei jika 60%
responden berasal dari pagi hari, sementara 40% berasal dari sore hari,
sedangkan data historis menunjukkan pengguna ojek online saat sore hari
dua kali lebih banyak dibanding pagi.
Jawaban
Intruksi A (Pendekatan samping)
Untuk menangkap persepsi kenyamanan pengguna ojek online secara
representatif pada jam sibuk (07.00-09.00 dan 17.00-19.00) tanpa survei
sepanjang hari, saya menggunakan stratified random sampling dengan
strata berdasarkan waktu jam sibuk (pagi dan sore). Pendekatan ini
memastikan bahwa pengguna dari kedua periode waktu terwakili, dengan
fokus hanya pada jam sibuk untuk efisiensi. Survei dilakukan di
lokasi-lokasi strategis seperti stasiun kereta, halte bus, atau pusat
perkantoran, tempat pengguna ojek online cenderung berkumpul.
Stratified random sampling adalah metode pengambilan sampel yang
membagi populasi menjadi beberapa strata atau kelompok kecil berdasarkan
karakteristik tertentu yang relevan. Setelah populasi dibagi, sampel
acak diambil dari setiap strata untuk meningkatkan representasi setiap
kelompok dalam keseluruhan populasi. Metode ini membantu peneliti dalam
menentukan sampel yang lebih efektif dan terstruktur.
Justifikasi:
Efisiensi Waktu: Fokus pada jam sibuk mengurangi
kebutuhan untuk survei sepanjang hari, sehingga lebih hemat sumber
daya
Representasi: Stratifikasi berdasarkan waktu
memastikan pengguna pagi dan sore terwakili, mengingat perbedaan
perilaku atau pengalaman di kedua waktu.
Aksebilitas: Lokasi strategis memudahkan akses
ke pengguna ojek online yang baru menyelesaikan perjalanan, sehingga
persepsi mereka masih segar.
Intruksi B (Rancangan Waktu)
1. Jadwal Survei:
Pagi : 07.00 - 09.00
Sore : 17.00 - 19.00
2. Metode Pemilihan Responden:
Petugas survei ditempatkan di lokasi seperti stasiun kereta,
halte bus, universitas, atau pusat perkantoran.
Responden dipilih secara sistematis, misalnya setiap interval
waktu tertentu atau berdasarkan urutan pengguna aplikasi.
3. Metode Pengumpulan Data:
Wawancara langsung secara singkat 3-5 menit dengan pertanyaan
tentang kenyamanan, waktu tunggu, keamanan, dan kepuasan
keseluruhan.
Menggunakan lokasi strategis dan aplikasi langsung meningkatkan
probabilitas mendapatkan responden yang tepat.
Target 60 responden untuk di wawancarai di pagi dan sore
hari
Intruksi C (Penyeseuaian hasil survei)
Jika hasil survei menunjukkan 60%(40 responden) responden dari pagi
dan 40%(20 responden) dari sore, tetapi data historis menunjukkan
pengguna sore dua kali lebih banyak daripada pagi, saya akan menerapkan
pembobotan (weighting) untuk menyesuaikan hasil agar mencerminkan
distribusi populasi yang sebenarnya.
1. Responden:
2. Data Historis:
3. Langkah Penyesuaian:
Proporsisi Populasi:
Pagi: 1/3 = 33.33%
Sore: 2/3 = 66.67%
Proporsisi Sampel:
Pagi: 60% = 0.6
Sore: 40% = 0.4
Rumus Bobot:
\[
\text{Bobot}=\frac{\text{Proporsisi Populasi}}{\text{Proporsisi Sampel}}
\]
| Pagi |
60% |
33.3% |
0.555 |
| Sore |
40% |
66.7% |
1.667 |
Hasil analisis
Disini Survei awal menghasilkan 60% responden pagi (40 orang) dan 40%
responden sore (20 orang), tapi ini tidak mencerminkan populasi
sebenarnya, di mana pengguna sore dua kali lebih banyak (66,67% sore,
33,33% pagi). Penyesuaian dilakukan agar hasil survei akurat. Tanpa
penyesuaian, hasil akan bias jika hanya pagi yang lebih banyak.
Penyesuaian memastikan data mencerminkan proporsi populasi yang benar
untuk wawasan yang valid.
Kesimpulan
Rancangan survei ini menggunakan stratified random sampling untuk
efisiensi dan representasi, dengan fokus pada jam sibuk di lokasi
strategis. Pembobotan diterapkan untuk menyesuaikan ketidakseimbangan
sampel berdasarkan data historis, memastikan hasil yang akurat dan
relevan. Dengan rancangan ini, kami dapat menangkap persepsi kenyamanan
pengguna ojek online secara andal tanpa survei sepanjang hari.
Soal 3
Anda ditugaskan oleh biro akademik kampus untuk merancang instrumen
survei yang bertujuan mengevaluasi kepuasan mahasiswa terhadap layanan
akademik, yang mencakup layanan seperti: KRS online, bimbingan akademik,
pelayanan administrasi, akses informasi akademik, dan bantuan
penyelesaian studi.
Tim peniliti meminta anda untuk:
- Merancang 25 pertanyaan utama dengan variasi skala dan bentuk
pertanyaan.
- Merancang sistem validasi instrumen
- Menentukan metode distribusi dan pengujian kuesioner secara
statistik.
- Menyiapkan simulasi strategi pengambilan sampel dan pengolahan data
awal.
Output laporan yang diharapkan berbentuk naratif, mencakup:
- Desain pertanyaan
- Skema validasi
- Strategi distribusi dan sampling
- Simulasi data dan analisis awal
Jawaban
1. Desain Pertanyaan Survei
Survei ini dirancang untuk mengevaluasi kepuasan mahasiswa terhadap
layanan akademik di kampus, yang mencakup KRS online, bimbingan
akademik, pelayanan administrasi, akses informasi akademik, dan bantuan
penyelesaian studi. Laporan ini menyajikan desain instrumen survei,
skema validasi, strategi distribusi dan sampling, serta simulasi
pengolahan data awal untuk memberikan wawasan tentang kualitas layanan
akademik. Survei ini mencakup beberapa aspek penting, yaitu:
- KRS Online
- Bimbingan Akademik
- Pelayanan Administrasi
- Akses Informasi Akademik
- Bantuan Penyelesaian Studi
Soal soal ini menggunakan Google Form(https://docs.google.com/forms/d/e/1FAIpQLSdpx2_FIXWWQPQO5p3qdwNu7J0kDecAe79YsK8toL1eAaSvqg/viewform?usp=header)
yang disebarkan secara online melalui:
- Grup WhatsApp setiap angkatan
- Bantuan dosen serta admin fakultas
2. Skema Validasi
Untuk memastikan instrumen valid dan reliabel, kami menerapkan
langkah-langkah berikut:
Validitas
1. Validitas Isi:
Kuisioner direview oleh ahlinya seperti dosen dan administrasi
akademik untuk memastikan pertanyaan mencakup semua aspek layanan
akademik.
Pertanyaan disesuaikan dengan pedoman standar evaluasi layanan
akademik.
2. Validitas Konstruk:
Uji faktor analisis dilakukan pada data uji coba untuk memastikan
pertanyaan mengelompok sesuai dimensi yang sudah ditentukan.
3. Validitas Kriteria:
Hasil survei dikorelasikan dengan indikator eksternal, seperti
tingkat kelulusan tepat waktu atau keluhan mahasiswa, untuk memastikan
korelasi yang signifikan.
Reabilitas
1. Uji Reabilitas:
Uji coba dilakukan untuk mengukur konsistensi internal pertanyaan
dalam setiap dimensi.
2. Uji Coba Instrumen:
Kuisioner diuji coba pada 50 mahasiswa untuk mengidentifikasi
kelemahan dan memperbaiki instrumen sebelum distribusi skala besar,
3. Strategi Distribusi dan Sampling
Metode Distribusi
1. Media: Kuesioner didistribusikan secara online
melalui platform seperti Google Forms atau sistem manajemen pembelajaran
kampus.
2. Waktu: Survei dilakukan selama 2 minggu di tengah
semester (misalnya, minggu ke-8 hingga ke-10) untuk menangkap pengalaman
mahasiswa setelah berinteraksi dengan layanan akademik.
3. Promosi: Pengumuman survei disebarkan melalui
email kampus, grup WhatsApp fakultas, dan media sosial kampus.
Strategi Sampling
Menggunakan pendekatan Stratified Random Sampling
dengan strata berdasarkan fakultas dan angkatan Mahasiswa.
1. Ukuran Sampel:
\[
( n = \frac{N}{1 + N \cdot e^2} ), \text{dengan} ( N = 10.000 ), ( e =
0,05 ) (\text{margin of error 5%}).
\]
\[
( n = \frac{10.000}{1 + 10.000 \cdot 0.0025} \approx 385 ).
\]
Target: 400 Responden untuk data yang tidak lengkap.
Alokasi Sampel
Strata: 5 Fakultas utama(Sains Data, Informatika, Pertambahan,
Perminyakan, Metalurgi) dan 4 angkatan (tahun 1 - 4).
Proporsi: Sampel dialokasikan proporsional berdasarkan jumlah
mahasiswa per fakultas dan angkatan.
4. Simulasi Data dan Analisis awal
Simulasi Data
Untuk simulasi, saya menggunakan kami menghasilkan data sintetis
untuk 400 responden, dengan skor Likert (1-5) untuk 20 pertanyaan
kuantitatif (pertanyaan 1-4, 6-9, 11-14, 16-19, 21-24). Data untuk
setiap dimensi dirangkum sebagai berikut (skor rata-rata per
dimensi):
| KRS Online |
3.8 |
0.7 |
| Bimbingan Akademik |
3.5 |
0,8 |
| Pelayanan Administrasi |
3.3 |
0.9 |
| Akses Informasi Akademik |
4.0 |
0.6 |
| Bantuan Penyelesaian Studi |
3.6 |
0.7 |
Analisis Awal
1. Statistik Deskriptif:
KRS Online: Rata-rata 3.8 menunjukkan kepuasan
cukup baik, tetapi standar deviasi 0.7 mengindikasikan variasi dalam
pengalaman pengguna.
Pelayanan Administrasi: Rata-rata 3.3 adalah
yang terendah, menunjukkan area yang perlu perbaikan.
Akses Informasi Akademik: Rata-rata 4.0 adalah
yang tertinggi, menunjukkan kekuatan layanan ini.
2. Analisis Kualitatif: Biasanya ini dari pertanyaan
terbuka.
Keluhan umum: Prosedur administrasi rumit, waktu respons staf
lambat.
Saran: Tingkatkan panduan KRS online, tambah sesi bimbingan
akademik.
3. Implikasi:
Kesimpulan
Instrumen survei ini dirancang untuk mengevaluasi kepuasan mahasiswa
terhadap layanan akademik dengan 25 pertanyaan yang mencakup lima
dimensi utama. Skema validasi memastikan instrumen valid, reliabel
melalui uji ahli, dan faktor analisis. Distribusi online dan stratified
random sampling memastikan efisiensi dan representasi. Simulasi data
menunjukkan bahwa pelayanan administrasi perlu perhatian khusus,
sementara akses informasi akademik adalah kekuatan. Rancangan ini siap
digunakan untuk pengumpulan data skala besar dan dapat disesuaikan
berdasarkan hasil uji coba.
LS0tDQp0aXRsZTogIlVUUyBUZWtuaWsgU2FtcGxpbmcgYW5kIFN1cnZleSINCmF1dGhvcjogDQogIC0gIlphaW4gSXFiYWwgU2FwdXRyYSBOSU0gNTIyNDAwMjQiDQpkYXRlOiAgIkthbWlzLCAxMy8wNC8yMDI1Ig0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICANCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQogICAgbGliX2RpcjogbGlicw0KICAgIDNkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQotLS0NCg0KPGltZyBzcmM9IkdhbWJhci9Gb3RvLmpwZyIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyB3aWR0aDozMDBweDsgbWFyZ2luOiBhdXRvOyI+DQoNCiMgU29hbCAxDQpBbmRhaWthbiBhbmRhIGFkYWxhaCBiYWdpYW4gZGFyaSBUaW0gcmlzZXQgbGFwYW5nYW4geWFuZyBkaW1pbnRhIHVudHVrIG1lbGFrdWthbiBzdXJ2ZWkgdGluZ2thdCBwZW5nZ3VuYWFuIGFwbGlrYXNpIHRyYW5wb3J0YXNpIG9ubGluZSBkaSAzIGtvdGEgbWVuZW5nYWggZGkgU3VtYXRlcmEuIFRhcmdldCBzYW1wZWwgdG90YWwgYWRhbGFoIDYwMCByZXNwb25kZW4sIG1hc2luZyBtYXNpbmcgMjAwIHBlciBrb3RhLiBUZXRhcGkgc2V0ZWxhaCAyIG1pbmdndSBtZWxha3VrYW4gc3VydmV5IGFuZGEgbWVuZW11a2FuOg0KLSBEaSBrb3RhIEEsIHRpbSBiZXJoYXNpbCBtZW5kYXBhdGthbiAyNTAgcmVzcG9uZGVuLg0KLSBEaSBrb3RhIEIsIGhhbnlhIDEyMCByZXNwb25kZW4geWFuZyBkYXBhdCBkaSB3YXdhbmNhcmFpLg0KLSBEaSBrb3RhIEMsIDE4MCByZXNwb25kZW4uDQoNCkludHJ1a3NpOg0KDQphLiBKZWxhc2thbiBkdWEgamVuaXMga2VzYWxhaGFuIHNhbXBsaW5nIHlhbmcgdGVyamFkaSBiZXJkYXNhcmthbiBzaXR1YXNpIGluaS4NCmIuIEppa2EgYW5kYSBoYXJ1cyBtZW55ZXN1YWlrYW4gYm9ib3QgdW50dWsgbWVuZ2VtYmFsaWthbiByZXByZXNlbnRhc2kgcHJvcG9yc2lvbmFsLCBiYWdhaW1hbmEgYW5kYSBha2FuIG1lbmdoaXR1bmdueWE/DQoNCiMjIEphd2FiYW4NCiMjIEludHJ1a3NpIEENCg0KRHVhIEplbmlzIGtlc2FsYWhhbiBzYW1wbGluZyB5YW5nIHRlcmphZGkgZGkgcGVuZ3VtcHVsYW4gZGF0YSBpbmkuDQoNCjEuIEtlc2FsYWhhbiBzYW1wbGluZyB0ZXJqYWRpIGthcmVuYSBwZW5ndW1wdWxhbiBkYXRhIHlhbmcgbWVsZWJpaGkgdGFyZ2V0IChLb3RhIFBhbGVtYmFuZykNCkRpIGtvdGEgUGFsZW1iYW5nLCB0aW0gbWVuZ3VtcHVsa2FuIDI1MCByZXNwb25kZW4geWFuZyBzZWhhcnVzbnlhIGhhbnlhIDIwMCByZXNwb25kZW4sIGhhbCBpbmkgbWVueWViYWJrYW4gb3Zlci1yZXByZXNlbnRhdGlvbiwgZGltYW5hIHByb3BvcnNpc2kgcmVzcG9uZGVuIGRhcmkga290YSBBIGxlYmloIGJlc2FyIGRhcmkgdGFyZ2V0LiBBa2liYXRueWEsIGthcmFrdGVyaXN0aWsgS290YSBBIG1lbmd1cmFuZ2kgaGFzaWwgc3VydmVpIGRhcmkga290YSBsYWluLg0KDQoyLiBLZXNhbGFoYW4gc2FtcGxpbmcgdGVyamFkaSBrYXJlbmEgcGVuZ3VtcHVsYW4gZGF0YSB5YW5nIGt1cmFuZyBhdGF1IHRpZGFrIG1lbmNhcGFpIHRhcmdldChLb3RhIFBhbGVtYmFuZyAmIExhbXB1bmcpDQpEaSBrb3RhIExhbXB1bmcgaGFueWEgYWRhIDEyMCByZXNwb25kZW4gZGFuIGRpIGtvdGEgUmlhdSBoYW55YSBhZGEgMTgwIHJlc3BvbmRlbiwgaW5pIG1lbm55ZWJhYmthbiBVbmRlci1yZXByZXNlbnRhdGlvbiwgZGltYW5hIGtlZHVhIGtvdGEgaW5pIGt1cmFuZyBkYXJpIHRhcmdldCBueWEsIGluaSBtZW55ZWJhYmthbiBiaWFzIGthcmVuYSBrYXJha3RlcmlzdGlrIEtvdGEgTGFtcHVuZyBkYW4gUmlhdSBiZXJiZWRhIHNlY2FyYSBzaWduaWZpa2FuIGRlbmdhbiB5YW5nIGJlcmhhc2lsIGRpd2F3YW5jYXJhaS4NCg0KRHVhIGtlc2FsYWhhbiBpbmkgdGlkYWsgc2VpbWJhbmcgYW50YXIga290YSwgZGkga290YSBMYW1wdW5nIGhhbnlhIG1lbmRhcGF0IHNlZGlraXQgcmVzcG9uIGJpc2EgamFkaSBrYXJlbmEgS2VzdWxpdGFuIGFrc2VzIHdpbGF5YWgsIGtldGVyYmF0YXNhbiB0ZW5hZ2Egc3VydmVpIGRpIGxva2FzaSB0ZXJzZWJ1dCwgZGFuIG1pbmltbnlhIG1pbmF0IGtlcGVyY2F5YWFuIHRlcmhhZGFwIHN1cnZlaSBiZWRhIGRlbmdhbiBrb3RhIFBhbGVtYmFuZyB5YW5nIGxlYmloIGJhbnlhayByZXNwb25kZW4gbXVuZ2tpbiBhZGFsYWgga2ViYWxpa2FuIGRhcmkga290YSBMYW1wdW5nLg0KDQojIyBJbnRydWtzaSBCDQojIyMgUGVueWVzdWFpYW4gQm9ib3QgUmVzcG9uZGVuDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YQ0Ka290YSA8LSBjKCJLb3RhIFBhbGVtYmFuZyIsICJLb3RhIExhbXB1bmciLCAiS290YSBSaWF1IikNCnRhcmdldCA8LSBjKDIwMCwgMjAwLCAyMDApDQpha3R1YWwgPC0gYygyNTAsIDEyMCwgMTgwKQ0KDQojIERhdGEgZnJhbWUNCmRmIDwtIGRhdGEuZnJhbWUoDQogIEtvdGEgPSByZXAoa290YSwgMiksDQogIEp1bWxhaCA9IGModGFyZ2V0LCBha3R1YWwpLA0KICBUaXBlID0gcmVwKGMoIlRhcmdldCIsICJBa3R1YWwiKSwgZWFjaCA9IDMpDQopDQoNCiMgR3JhZmlrIGdncGxvdA0KcCA8LSBnZ3Bsb3QoZGYsIGFlcyh4ID0gS290YSwgeSA9IEp1bWxhaCwgZmlsbCA9IFRpcGUsIHRleHQgPSBwYXN0ZSgiS290YToiLCBLb3RhLCAiPGJyPkp1bWxhaDoiLCBKdW1sYWgpKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgcG9zaXRpb24gPSAiZG9kZ2UiKSArDQogIGxhYnModGl0bGUgPSAiUGVyYmFuZGluZ2FuIFJlc3BvbmRlbiBUYXJnZXQgdnMgQWt0dWFsIiwNCiAgICAgICB4ID0gIktvdGEiLA0KICAgICAgIHkgPSAiSnVtbGFoIFJlc3BvbmRlbiIpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygic3RlZWxibHVlIiwgIm9yYW5nZSIpKSArDQogIHRoZW1lX21pbmltYWwoKQ0KDQojIEtvbnZlcnNpIGphZGkgcGxvdGx5IGludGVyYWt0aWYNCmdncGxvdGx5KHAsIHRvb2x0aXAgPSAidGV4dCIpDQoNCmBgYA0KDQoqKlJ1bXVzIEJvYm90OioqDQokJA0KXHRleHR7Qm9ib3QgUGVueWVzdWFpYW59PVxmcmFje1x0ZXh0e1Byb3BvcnNpIFRhcmdldH19e1x0ZXh0e1Byb3BvcnNpIEFrdHVhbH19DQokJA0KDQoqKkhhc2lsIFBlcmhpdHVuZ2FuOioqDQpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoa25pdHIpDQoNCiNEYXRhDQpkYXRhIDwtIGRhdGEuZnJhbWUgKA0KICBgS290YWAgPSBjKCJQYWxlbWJhbmciLCAiTGFtcHVuZyIsICJSaWF1IiksDQogIGBSZXNwb25kZW4gQWt0dWFsYCA9IGMoJzI1MCcsJzEyMCcsJzE4MCcpLA0KICBgUHJvcG9yc2kgQWt0dWFsYCA9IGMoIjI1MCAvIDU1MCA9IDAuNDU1IiwgIjEyMCAvIDU1MCA9IDAsMjE4IiwgIjE4MCAvIDU1MCA9IDAsMzI3IiksDQogIGBQcm9wb3JzaSBUYXJnZXRgID0gYygiMC4zMzMiLCIwLjMzMyIsIjAuMzMzIiksDQogIGBCb2JvdCBQZW55ZXN1YWlhbmAgPSBjKCIwLDMzMyAvIDAsNDU1ID0gMCw3MzIiLCAiMCwzMzMgLyAwLDIxOCA9IDEsNTI3IiwgIjAsMzMzIC8gMCwzMjcgPSAxLDAxOCIpDQopDQojQ2V0YWsgVGFiZWwNCmthYmxlKGRhdGEsIGNvbC5uYW1lcyA9IGMoIktvdGEiLCAiUmVzcG9uZGVuIEFrdHVhbCIsICJQcm9wb3JzaSBBa3R1YWwiLCAiUHJvcG9yc2kgVGFyZ2V0IiwgIiBCb2JvdCBQZW55ZXN1YWlhbiIpKQ0KYGBgDQoNCiMjIyBJbnRlcnByZXRhc2kgQm9ib3QNCi0gS290YSBQYWxlbWJhbmcga2VsZWJpaGFuIHJlc3BvbmRlbiwgbWFrYSBib2JvdG55YSBkaWt1cmFuZ2kNCi0gS290YSBMYW1wdW5nIGtla3VyYW5nYW4gcmVzcG9uZGVuLCBtYWthIGJvYm90bnlhIGRpdGFtYmFoDQotIEtvdGEgUmlhdSBoYW1waXIgc2VtcHVybmEgdGFwaSBtYXNpaCBrZWt1cmFuZ2FuIHJlc3BvbmRlbiwgc2VoaW5nZ2EgaGFueWEgc2VkaWtpdCBwZW55ZXN1YWlhbg0KDQojIyMgTGFtcGlyYW4gdGFtYmFoYW46IFJlZmxla3NpIGRhbiBzYXJhbiBwZW5ndWF0YW4gc3VydmVpDQoNCiMjIyMgMS4gTWVuZ2d1bmFrYW4gbGFuZ2thaCBtaXRpZ2FzaSB1bnR1ayBzdXJ2ZWkgbWVuZGF0YW5nDQpCZXJkYXNhcmthbiBkYWxhbSBzdXJ2ZWkgaW5pLCB0ZXJkYXBhdCB0YW50YW5nYW4geWFuZyB0ZXJsaWhhdCBzZXBlcnRpIGtlc3VsaXRhbiBtZW5qYXVuZ2thdSByZXNwb25kZW4gZGkga290YSBMYW1wdW5nIGRhbiBrZWxlYmloYW4gZGF0YSBkaSBrb3RhIFBhbGVtYmFuZywgbWl0aWdhc2kgYmVyaWt1dCBhZ2FyIHN1cnZlaSB5YW5nIGFrYW4gZGF0YW5nIGJpc2EgYmVyamFsYW4gZGVuZ2FuIGVmZWt0aWYgZGFuIGp1Z2EgcHJvcG9yc2lvbmFsOg0KDQoxLiBQZW1hbnRhdWFuIFJlYWwtVGltZSBqdW1sYWggcmVzcG9uZGVuIHBlciB3aWxheWFoDQpHdW5ha2FuIGRhc2hib2FyZCBzZWRlcmhhbmEgdW50dWsgbWVtYW50YXUgcHJvZ3JlcyBoYXJpYW4gcGVyIGtvdGEsIHNlaGluZ2dhIGJpc2EgZGlsYWt1a2FuIHBlbnllc3VhaWFuIGNlcGF0IGJpbGEgdGVyamFkaSBrZWxlYmloYW4gYXRhdSBrZWt1cmFuZ2FuIHNhbXBlbC4NCg0KMi4gS29tYmluYXNpIE1ldG9kZSBzdXJ2ZWkNCk1lbmdnYWJ1bmdrYW4gd2F3YW5jYXJhIGxhbmdzdW5nIGRhbiBqdWdhIHdhd2FuY2FyYSBvbmxpbmUgdW50dWsgbWVuamFuZ2thdSB3aWxheWFoIHlhbmcgc3VsaXQgZGlha3NlcyBzZWNhcmEgZmlzaWsuDQoNCjMuIFBlbmRla2F0YW4gU29zaWFsIEJ1ZGF5YSBsb2thbA0KU2VwZXJ0aSBtZWxpYmF0a2FuIHRva29oIG1hc3lhcmFrYXQgc2VwZXJ0aSBrZXR1YSBSVC9SVyBhdGF1IGtvbXVuaXRhcyBsb2thbCB1bnR1ayBtZW5pbmdrYXRrYW4ga2VwZXJjYXlhYW4gZGFuIHBhcnRpc2lwYXNpIHJlc3BvbmRlbg0KDQojIyMjIDIuIFJla29tZW5kYXNpIEtlYmlqYWthbg0KQmViZXJhcGEgcmVrb21lbmRhc2kga2ViaWpha2FuIG1lbnVydXQgc2F5YSwgeWFpdHU6DQoNCjEuIFBlcmVuY2FuYWFuIHN1cnZlaSBsZWJpaCBkZXRhaWwgZGkgdGlhcCB3aWxheWFoDQpTZXRpYXAga290YSBtZW1pbGlraSB0YW50YW5nYW4gZGFsYW0gcGVuZ3VtcHVsYW4gZGF0YS4gTWFrYSBkYXJpIGl0dSwgcGVybHUgZGlwZXJsdWthbiBzdHVkaSBhd2FsIHVudHVrIG1lbmdldGFodWkgYXBha2FoIGFkYSBoYW1iYXRhbiBhdGF1IHRpZGFrIHNlYmVsdW0gc3VydmVpIGJlc2FyIGRpbGFrdWthbi4NCg0KMi4gTGFwb3JhbiBzdXJ2ZWkgSGFydXMgbWVueWVydGFrYW4gYm9ib3QgZGFuIHBlbmplbGFzYW5ueWENCkFnYXIgaGFzaWwgc3VydmVpIGluaSBkYXBhdCBkaWd1bmFrYW4gb2xlaCBwZW1idWF0IGtlYmlqYWthbiBkZW5nYW4gcGVtYWhhbWFuIHlhbmcgdXR1aCBtZW5nZW5haSBrZWt1YXRhbiBkYW4ga2V0ZXJiYXRhc2FuIGRhdGFueWEuDQoNCjMuIEV2YWx1YXNpIHRpbSBsYXBhbmdhbg0KU2V0aWFwIHN1cnZlaSBwZXJsdSBkaXR1dHVwIGRlbmdhbiBldmFsdWFzaSBpbnRlcm5hbCBhZ2FyIGtlZHVhIHBlcm1hc2FsYWhhbiBpbmkgdGlkYWsgdGVydWxhbmcgbGFnaS4NCg0KIyBTb2FsIDINCkJ1YXRsYWggZGVzYWluIHJhbmNhbmdhbiBzdXJ2ZWkgdGVudGFuZyBwZXJzZXBzaSBrZW55YW1hbmFuIHBlbmdndW5hIG9qZWsgb25saW5lIHNhYXQgamFtIHNpYnVrICgwNy4wMC0wOS4wMCBkYW4gMTcuMDAtMTkuMDApDQoNCkludHJ1a3NpOg0KDQphLiBEZXNhaW4gcGVuZGFrYXRhbiBzYW1waW5nIHlhbmcgbWVtdW5na2lua2FuIGFuZGEgbWVuYW5na2FwIHBlcnNlcHNpIHBlbmdndW5hIHNlY2FyYSByZXByZXNlbnRhdGlmIHBhZGEgamFtIHNpYnVrLCB0YW5wYSBtZWxha3VrYW4gc3VydmVpIHNlcGFuamFuZyBoYXJpLg0KYi4gU2VydGFrYW4gcmFuY2FuZ2FuIHdha3R1LCBtZXRvZGUgcGVtaWxpaGFuIHJlc3BvbmRlbiwgZGFuIGp1c3RpZmlrYXNpIHBlbWlsaWhhbiB1bml0IHNhbXBpbmcuDQpjLiBKZWxhc2thbiBiYWdhaW1hbmEgYW5kYSBha2FuIG1lbnllc3VhaWthbiBoYXNpbCBzdXJ2ZWkgamlrYSA2MCUgcmVzcG9uZGVuIGJlcmFzYWwgZGFyaSBwYWdpIGhhcmksIHNlbWVudGFyYSA0MCUgYmVyYXNhbCBkYXJpIHNvcmUgaGFyaSwgc2VkYW5na2FuIGRhdGEgaGlzdG9yaXMgbWVudW5qdWtrYW4gcGVuZ2d1bmEgb2playBvbmxpbmUgc2FhdCBzb3JlIGhhcmkgZHVhIGthbGkgbGViaWggYmFueWFrIGRpYmFuZGluZyBwYWdpLg0KDQojIyBKYXdhYmFuDQojIyBJbnRydWtzaSBBIChQZW5kZWthdGFuIHNhbXBpbmcpDQoNClVudHVrIG1lbmFuZ2thcCBwZXJzZXBzaSBrZW55YW1hbmFuIHBlbmdndW5hIG9qZWsgb25saW5lIHNlY2FyYSByZXByZXNlbnRhdGlmIHBhZGEgamFtIHNpYnVrICgwNy4wMC0wOS4wMCBkYW4gMTcuMDAtMTkuMDApIHRhbnBhIHN1cnZlaSBzZXBhbmphbmcgaGFyaSwgc2F5YSBtZW5nZ3VuYWthbiBzdHJhdGlmaWVkIHJhbmRvbSBzYW1wbGluZyBkZW5nYW4gc3RyYXRhIGJlcmRhc2Fya2FuIHdha3R1IGphbSBzaWJ1ayAocGFnaSBkYW4gc29yZSkuIFBlbmRla2F0YW4gaW5pIG1lbWFzdGlrYW4gYmFod2EgcGVuZ2d1bmEgZGFyaSBrZWR1YSBwZXJpb2RlIHdha3R1IHRlcndha2lsaSwgZGVuZ2FuIGZva3VzIGhhbnlhIHBhZGEgamFtIHNpYnVrIHVudHVrIGVmaXNpZW5zaS4gU3VydmVpIGRpbGFrdWthbiBkaSBsb2thc2ktbG9rYXNpIHN0cmF0ZWdpcyBzZXBlcnRpIHN0YXNpdW4ga2VyZXRhLCBoYWx0ZSBidXMsIGF0YXUgcHVzYXQgcGVya2FudG9yYW4sIHRlbXBhdCBwZW5nZ3VuYSBvamVrIG9ubGluZSBjZW5kZXJ1bmcgYmVya3VtcHVsLg0KDQpTdHJhdGlmaWVkIHJhbmRvbSBzYW1wbGluZyBhZGFsYWggbWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbCB5YW5nIG1lbWJhZ2kgcG9wdWxhc2kgbWVuamFkaSBiZWJlcmFwYSBzdHJhdGEgYXRhdSBrZWxvbXBvayBrZWNpbCBiZXJkYXNhcmthbiBrYXJha3RlcmlzdGlrIHRlcnRlbnR1IHlhbmcgcmVsZXZhbi4gU2V0ZWxhaCBwb3B1bGFzaSBkaWJhZ2ksIHNhbXBlbCBhY2FrIGRpYW1iaWwgZGFyaSBzZXRpYXAgc3RyYXRhIHVudHVrIG1lbmluZ2thdGthbiByZXByZXNlbnRhc2kgc2V0aWFwIGtlbG9tcG9rIGRhbGFtIGtlc2VsdXJ1aGFuIHBvcHVsYXNpLiBNZXRvZGUgaW5pIG1lbWJhbnR1IHBlbmVsaXRpIGRhbGFtIG1lbmVudHVrYW4gc2FtcGVsIHlhbmcgbGViaWggZWZla3RpZiBkYW4gdGVyc3RydWt0dXIuDQoNCioqSnVzdGlmaWthc2k6KioNCg0KLSAqKkVmaXNpZW5zaSBXYWt0dToqKiBGb2t1cyBwYWRhIGphbSBzaWJ1ayBtZW5ndXJhbmdpIGtlYnV0dWhhbiB1bnR1ayBzdXJ2ZWkgc2VwYW5qYW5nIGhhcmksIHNlaGluZ2dhIGxlYmloIGhlbWF0IHN1bWJlciBkYXlhDQoNCi0gKipSZXByZXNlbnRhc2k6KiogU3RyYXRpZmlrYXNpIGJlcmRhc2Fya2FuIHdha3R1IG1lbWFzdGlrYW4gcGVuZ2d1bmEgcGFnaSBkYW4gc29yZSB0ZXJ3YWtpbGksIG1lbmdpbmdhdCBwZXJiZWRhYW4gcGVyaWxha3UgYXRhdSBwZW5nYWxhbWFuIGRpIGtlZHVhIHdha3R1Lg0KDQotICoqQWtzZWJpbGl0YXM6KiogTG9rYXNpIHN0cmF0ZWdpcyBtZW11ZGFoa2FuIGFrc2VzIGtlIHBlbmdndW5hIG9qZWsgb25saW5lIHlhbmcgYmFydSBtZW55ZWxlc2Fpa2FuIHBlcmphbGFuYW4sIHNlaGluZ2dhIHBlcnNlcHNpIG1lcmVrYSBtYXNpaCBzZWdhci4NCg0KIyMgSW50cnVrc2kgQiAoUmFuY2FuZ2FuIFdha3R1KQ0KDQoqKjEuIEphZHdhbCBTdXJ2ZWk6KioNCg0KLSAqKlBhZ2kqKiA6IDA3LjAwIC0gMDkuMDANCg0KLSAqKlNvcmUqKiA6IDE3LjAwIC0gMTkuMDANCg0KKioyLiBNZXRvZGUgUGVtaWxpaGFuIFJlc3BvbmRlbjoqKg0KDQotIFBldHVnYXMgc3VydmVpIGRpdGVtcGF0a2FuIGRpIGxva2FzaSBzZXBlcnRpIHN0YXNpdW4ga2VyZXRhLCBoYWx0ZSBidXMsIHVuaXZlcnNpdGFzLCBhdGF1IHB1c2F0IHBlcmthbnRvcmFuLg0KDQotIFJlc3BvbmRlbiBkaXBpbGloIHNlY2FyYSBzaXN0ZW1hdGlzLCBtaXNhbG55YSBzZXRpYXAgaW50ZXJ2YWwgd2FrdHUgdGVydGVudHUgYXRhdSBiZXJkYXNhcmthbiB1cnV0YW4gcGVuZ2d1bmEgYXBsaWthc2kuDQoNCioqMy4gTWV0b2RlIFBlbmd1bXB1bGFuIERhdGE6KioNCg0KLSBXYXdhbmNhcmEgbGFuZ3N1bmcgc2VjYXJhIHNpbmdrYXQgMy01IG1lbml0IGRlbmdhbiBwZXJ0YW55YWFuIHRlbnRhbmcga2VueWFtYW5hbiwgd2FrdHUgdHVuZ2d1LCBrZWFtYW5hbiwgZGFuIGtlcHVhc2FuIGtlc2VsdXJ1aGFuLg0KDQotIE1lbmdndW5ha2FuIGxva2FzaSBzdHJhdGVnaXMgZGFuIGFwbGlrYXNpIGxhbmdzdW5nIG1lbmluZ2thdGthbiBwcm9iYWJpbGl0YXMgbWVuZGFwYXRrYW4gcmVzcG9uZGVuIHlhbmcgdGVwYXQuDQoNCi0gVGFyZ2V0IDYwIHJlc3BvbmRlbiB1bnR1ayBkaSB3YXdhbmNhcmFpIGRpIHBhZ2kgZGFuIHNvcmUgaGFyaQ0KDQojIyBJbnRydWtzaSBDIChQZW55ZXNldWFpYW4gaGFzaWwgc3VydmVpKQ0KDQpKaWthIGhhc2lsIHN1cnZlaSBtZW51bmp1a2thbiA2MCUoNDAgcmVzcG9uZGVuKSByZXNwb25kZW4gZGFyaSBwYWdpIGRhbiA0MCUoMjAgcmVzcG9uZGVuKSBkYXJpIHNvcmUsIHRldGFwaSBkYXRhIGhpc3RvcmlzIG1lbnVuanVra2FuIHBlbmdndW5hIHNvcmUgZHVhIGthbGkgbGViaWggYmFueWFrIGRhcmlwYWRhIHBhZ2ksIHNheWEgYWthbiBtZW5lcmFwa2FuIHBlbWJvYm90YW4gKHdlaWdodGluZykgdW50dWsgbWVueWVzdWFpa2FuIGhhc2lsIGFnYXIgbWVuY2VybWlua2FuIGRpc3RyaWJ1c2kgcG9wdWxhc2kgeWFuZyBzZWJlbmFybnlhLg0KDQoqKjEuIFJlc3BvbmRlbjoqKg0KDQotICoqUGFnaToqKiA2MCUNCg0KLSAqKlNvcmU6KiogNDAlDQoNCioqMi4gRGF0YSBIaXN0b3JpczoqKg0KDQotIEp1bWxhaCBwZW5nZ3VuYSBzb3JlIGR1YSBrYWxpIGxlYmloIGJhbnlhayBkYXJpIHBhZ2kgaGFyaS4NCg0KLSBJZGVhbG55YSBkaXN0cmlidXNpOiAzMy4zJSBwYWdpIGRhbiA2Ni43JSBwYWdpLg0KDQoqKjMuIExhbmdrYWggUGVueWVzdWFpYW46KioNCg0KKipQcm9wb3JzaXNpIFBvcHVsYXNpOioqDQoNCi0gKipQYWdpOioqIDEvMyA9IDMzLjMzJQ0KDQotICoqU29yZToqKiAyLzMgPSA2Ni42NyUNCg0KKipQcm9wb3JzaXNpIFNhbXBlbDoqKg0KDQotICoqUGFnaToqKiA2MCUgPSAwLjYNCg0KLSAqKlNvcmU6KiogNDAlID0gMC40DQoNCioqUnVtdXMgQm9ib3Q6KioNCg0KJCQNClx0ZXh0e0JvYm90fT1cZnJhY3tcdGV4dHtQcm9wb3JzaXNpIFBvcHVsYXNpfX17XHRleHR7UHJvcG9yc2lzaSBTYW1wZWx9fQ0KJCQNCg0KLSAqKlBhZ2k6KiogDQokJA0KXHRleHR7UGFnaX09XGZyYWN7KDEvMyl9ezAuNn09XGZyYWN7MC4zMzN9ezAuNn09MC41NTUNCiQkDQoNCi0gKipTb3JlOioqDQokJA0KXHRleHR7U29yZX09XGZyYWN7Mi8zfXswLjR9PVxmcmFjezAuNjY3fXswLjR9PTEuNjY3DQokJA0KDQpgYGB7cixlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGtuaXRyKQ0KDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIGBXYWt0dWAgPSBjKCJQYWdpIiwgIlNvcmUiKSwNCiAgYFByb3BvcnNpIFJlc3BvbmRlbmAgPSBjKCc2MCUnLCc0MCUnKSwNCiAgYFByb3BvcnNpIElkZWFsYCA9IGMoJzMzLjMlJywgJzY2LjclJyksDQogIGBCb2JvdGAgPSBjKCcwLjU1NScsICcxLjY2NycpDQopDQoNCmthYmxlKGRhdGEsIGNvbC5uYW1lcyA9IGMoIldha3R1IiwgIlByb3BvcnNpIFJlc3BvbmRlbiIsICJQcm9wb3JzaSBJZGVhbCIsICJCb2JvdCIgKSkNCmBgYA0KDQojIyBIYXNpbCBhbmFsaXNpcw0KDQpEaXNpbmkgU3VydmVpIGF3YWwgbWVuZ2hhc2lsa2FuIDYwJSByZXNwb25kZW4gcGFnaSAoNDAgb3JhbmcpIGRhbiA0MCUgcmVzcG9uZGVuIHNvcmUgKDIwIG9yYW5nKSwgdGFwaSBpbmkgdGlkYWsgbWVuY2VybWlua2FuIHBvcHVsYXNpIHNlYmVuYXJueWEsIGRpIG1hbmEgcGVuZ2d1bmEgc29yZSBkdWEga2FsaSBsZWJpaCBiYW55YWsgKDY2LDY3JSBzb3JlLCAzMywzMyUgcGFnaSkuIFBlbnllc3VhaWFuIGRpbGFrdWthbiBhZ2FyIGhhc2lsIHN1cnZlaSBha3VyYXQuIFRhbnBhIHBlbnllc3VhaWFuLCBoYXNpbCBha2FuIGJpYXMgamlrYSBoYW55YSBwYWdpIHlhbmcgbGViaWggYmFueWFrLiBQZW55ZXN1YWlhbiBtZW1hc3Rpa2FuIGRhdGEgbWVuY2VybWlua2FuIHByb3BvcnNpIHBvcHVsYXNpIHlhbmcgYmVuYXIgdW50dWsgd2F3YXNhbiB5YW5nIHZhbGlkLg0KDQojIyBLZXNpbXB1bGFuDQoNClJhbmNhbmdhbiBzdXJ2ZWkgaW5pIG1lbmdndW5ha2FuIHN0cmF0aWZpZWQgcmFuZG9tIHNhbXBsaW5nIHVudHVrIGVmaXNpZW5zaSBkYW4gcmVwcmVzZW50YXNpLCBkZW5nYW4gZm9rdXMgcGFkYSBqYW0gc2lidWsgZGkgbG9rYXNpIHN0cmF0ZWdpcy4gUGVtYm9ib3RhbiBkaXRlcmFwa2FuIHVudHVrIG1lbnllc3VhaWthbiBrZXRpZGFrc2VpbWJhbmdhbiBzYW1wZWwgYmVyZGFzYXJrYW4gZGF0YSBoaXN0b3JpcywgbWVtYXN0aWthbiBoYXNpbCB5YW5nIGFrdXJhdCBkYW4gcmVsZXZhbi4gRGVuZ2FuIHJhbmNhbmdhbiBpbmksIGthbWkgZGFwYXQgbWVuYW5na2FwIHBlcnNlcHNpIGtlbnlhbWFuYW4gcGVuZ2d1bmEgb2playBvbmxpbmUgc2VjYXJhIGFuZGFsIHRhbnBhIHN1cnZlaSBzZXBhbmphbmcgaGFyaS4NCg0KIyBTb2FsIDMNCkFuZGEgZGl0dWdhc2thbiBvbGVoIGJpcm8gYWthZGVtaWsga2FtcHVzIHVudHVrIG1lcmFuY2FuZyBpbnN0cnVtZW4gc3VydmVpIHlhbmcgYmVydHVqdWFuIG1lbmdldmFsdWFzaSBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGF5YW5hbiBha2FkZW1paywgeWFuZyBtZW5jYWt1cCBsYXlhbmFuIHNlcGVydGk6IEtSUyBvbmxpbmUsIGJpbWJpbmdhbiBha2FkZW1paywgcGVsYXlhbmFuIGFkbWluaXN0cmFzaSwgYWtzZXMgaW5mb3JtYXNpIGFrYWRlbWlrLCBkYW4gYmFudHVhbiBwZW55ZWxlc2FpYW4gc3R1ZGkuDQoNClRpbSBwZW5pbGl0aSBtZW1pbnRhIGFuZGEgdW50dWs6DQoNCi0gTWVyYW5jYW5nIDI1IHBlcnRhbnlhYW4gdXRhbWEgZGVuZ2FuIHZhcmlhc2kgc2thbGEgZGFuIGJlbnR1ayBwZXJ0YW55YWFuLg0KLSBNZXJhbmNhbmcgc2lzdGVtIHZhbGlkYXNpIGluc3RydW1lbg0KLSBNZW5lbnR1a2FuIG1ldG9kZSBkaXN0cmlidXNpIGRhbiBwZW5ndWppYW4ga3Vlc2lvbmVyIHNlY2FyYSBzdGF0aXN0aWsuDQotIE1lbnlpYXBrYW4gc2ltdWxhc2kgc3RyYXRlZ2kgcGVuZ2FtYmlsYW4gc2FtcGVsIGRhbiBwZW5nb2xhaGFuIGRhdGEgYXdhbC4NCg0KT3V0cHV0IGxhcG9yYW4geWFuZyBkaWhhcmFwa2FuIGJlcmJlbnR1ayBuYXJhdGlmLCBtZW5jYWt1cDoNCg0KLSBEZXNhaW4gcGVydGFueWFhbg0KLSBTa2VtYSB2YWxpZGFzaQ0KLSBTdHJhdGVnaSBkaXN0cmlidXNpIGRhbiBzYW1wbGluZw0KLSBTaW11bGFzaSBkYXRhIGRhbiBhbmFsaXNpcyBhd2FsDQoNCiMjIEphd2FiYW4gDQoNCiMjIDEuIERlc2FpbiBQZXJ0YW55YWFuIFN1cnZlaQ0KDQpTdXJ2ZWkgaW5pIGRpcmFuY2FuZyB1bnR1ayBtZW5nZXZhbHVhc2kga2VwdWFzYW4gbWFoYXNpc3dhIHRlcmhhZGFwIGxheWFuYW4gYWthZGVtaWsgZGkga2FtcHVzLCB5YW5nIG1lbmNha3VwIEtSUyBvbmxpbmUsIGJpbWJpbmdhbiBha2FkZW1paywgcGVsYXlhbmFuIGFkbWluaXN0cmFzaSwgYWtzZXMgaW5mb3JtYXNpIGFrYWRlbWlrLCBkYW4gYmFudHVhbiBwZW55ZWxlc2FpYW4gc3R1ZGkuIExhcG9yYW4gaW5pIG1lbnlhamlrYW4gZGVzYWluIGluc3RydW1lbiBzdXJ2ZWksIHNrZW1hIHZhbGlkYXNpLCBzdHJhdGVnaSBkaXN0cmlidXNpIGRhbiBzYW1wbGluZywgc2VydGEgc2ltdWxhc2kgcGVuZ29sYWhhbiBkYXRhIGF3YWwgdW50dWsgbWVtYmVyaWthbiB3YXdhc2FuIHRlbnRhbmcga3VhbGl0YXMgbGF5YW5hbiBha2FkZW1pay4gU3VydmVpIGluaSBtZW5jYWt1cCBiZWJlcmFwYSBhc3BlayBwZW50aW5nLCB5YWl0dToNCg0KMS4gS1JTIE9ubGluZQ0KMi4gQmltYmluZ2FuIEFrYWRlbWlrDQozLiBQZWxheWFuYW4gQWRtaW5pc3RyYXNpDQo0LiBBa3NlcyBJbmZvcm1hc2kgQWthZGVtaWsNCjUuIEJhbnR1YW4gUGVueWVsZXNhaWFuIFN0dWRpDQoNClNvYWwgc29hbCBpbmkgbWVuZ2d1bmFrYW4gR29vZ2xlIEZvcm0oaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZm9ybXMvZC9lLzFGQUlwUUxTZHB4Ml9GSVhXV1FQUU81cDNxZHdOdTdKMGtEZWNBZTc5WXNLOHRvTDFlQWFTdnFnL3ZpZXdmb3JtP3VzcD1oZWFkZXIpIHlhbmcgZGlzZWJhcmthbiBzZWNhcmEgb25saW5lIG1lbGFsdWk6DQoNCi0gR3J1cCBXaGF0c0FwcCBzZXRpYXAgYW5na2F0YW4NCi0gQmFudHVhbiBkb3NlbiBzZXJ0YSBhZG1pbiBmYWt1bHRhcw0KDQojIyAyLiBTa2VtYSBWYWxpZGFzaQ0KDQpVbnR1ayBtZW1hc3Rpa2FuIGluc3RydW1lbiB2YWxpZCBkYW4gcmVsaWFiZWwsIGthbWkgbWVuZXJhcGthbiBsYW5na2FoLWxhbmdrYWggYmVyaWt1dDoNCg0KIyMjIFZhbGlkaXRhcw0KDQoqKjEuIFZhbGlkaXRhcyBJc2k6KioNCg0KLSBLdWlzaW9uZXIgZGlyZXZpZXcgb2xlaCBhaGxpbnlhIHNlcGVydGkgZG9zZW4gZGFuIGFkbWluaXN0cmFzaSBha2FkZW1payB1bnR1ayBtZW1hc3Rpa2FuIHBlcnRhbnlhYW4gbWVuY2FrdXAgc2VtdWEgYXNwZWsgbGF5YW5hbiBha2FkZW1pay4NCg0KLSBQZXJ0YW55YWFuIGRpc2VzdWFpa2FuIGRlbmdhbiBwZWRvbWFuIHN0YW5kYXIgZXZhbHVhc2kgbGF5YW5hbiBha2FkZW1pay4NCg0KKioyLiBWYWxpZGl0YXMgS29uc3RydWs6KioNCg0KICBVamkgZmFrdG9yIGFuYWxpc2lzIGRpbGFrdWthbiBwYWRhIGRhdGEgdWppIGNvYmEgdW50dWsgbWVtYXN0aWthbiBwZXJ0YW55YWFuIG1lbmdlbG9tcG9rIHNlc3VhaSBkaW1lbnNpIHlhbmcgc3VkYWggZGl0ZW50dWthbi4NCg0KKiozLiBWYWxpZGl0YXMgS3JpdGVyaWE6KioNCg0KICBIYXNpbCBzdXJ2ZWkgZGlrb3JlbGFzaWthbiBkZW5nYW4gaW5kaWthdG9yIGVrc3Rlcm5hbCwgc2VwZXJ0aSB0aW5na2F0IGtlbHVsdXNhbiB0ZXBhdCAgd2FrdHUgYXRhdSBrZWx1aGFuIG1haGFzaXN3YSwgdW50dWsgbWVtYXN0aWthbiBrb3JlbGFzaSB5YW5nIHNpZ25pZmlrYW4uDQogIA0KIyMjIFJlYWJpbGl0YXMNCg0KKioxLiBVamkgUmVhYmlsaXRhczoqKg0KDQogIFVqaSBjb2JhIGRpbGFrdWthbiB1bnR1ayBtZW5ndWt1ciBrb25zaXN0ZW5zaSBpbnRlcm5hbCBwZXJ0YW55YWFuIGRhbGFtIHNldGlhcCBkaW1lbnNpLg0KICANCioqMi4gVWppIENvYmEgSW5zdHJ1bWVuOioqDQoNCiAgS3Vpc2lvbmVyIGRpdWppIGNvYmEgcGFkYSA1MCBtYWhhc2lzd2EgdW50dWsgbWVuZ2lkZW50aWZpa2FzaSBrZWxlbWFoYW4gZGFuIG1lbXBlcmJhaWtpIGluc3RydW1lbiBzZWJlbHVtIGRpc3RyaWJ1c2kgc2thbGEgYmVzYXIsDQogIA0KIyMgMy4gU3RyYXRlZ2kgRGlzdHJpYnVzaSBkYW4gU2FtcGxpbmcNCg0KIyMjIE1ldG9kZSBEaXN0cmlidXNpDQoNCioqMS4gTWVkaWE6KiogS3Vlc2lvbmVyIGRpZGlzdHJpYnVzaWthbiBzZWNhcmEgb25saW5lIG1lbGFsdWkgcGxhdGZvcm0gc2VwZXJ0aSBHb29nbGUgRm9ybXMgYXRhdSBzaXN0ZW0gbWFuYWplbWVuIHBlbWJlbGFqYXJhbiBrYW1wdXMuDQoNCioqMi4gV2FrdHU6KiogU3VydmVpIGRpbGFrdWthbiBzZWxhbWEgMiBtaW5nZ3UgZGkgdGVuZ2FoIHNlbWVzdGVyIChtaXNhbG55YSwgbWluZ2d1IGtlLTggaGluZ2dhIGtlLTEwKSB1bnR1ayBtZW5hbmdrYXAgcGVuZ2FsYW1hbiBtYWhhc2lzd2Egc2V0ZWxhaCBiZXJpbnRlcmFrc2kgZGVuZ2FuIGxheWFuYW4gYWthZGVtaWsuDQoNCioqMy4gUHJvbW9zaToqKiBQZW5ndW11bWFuIHN1cnZlaSBkaXNlYmFya2FuIG1lbGFsdWkgZW1haWwga2FtcHVzLCBncnVwIFdoYXRzQXBwIGZha3VsdGFzLCBkYW4gbWVkaWEgc29zaWFsIGthbXB1cy4NCg0KIyMjIFN0cmF0ZWdpIFNhbXBsaW5nDQoNCk1lbmdndW5ha2FuIHBlbmRla2F0YW4gKipTdHJhdGlmaWVkIFJhbmRvbSBTYW1wbGluZyoqIGRlbmdhbiBzdHJhdGEgYmVyZGFzYXJrYW4gZmFrdWx0YXMgZGFuIGFuZ2thdGFuIE1haGFzaXN3YS4NCg0KKioxLiBVa3VyYW4gU2FtcGVsOioqDQoNCi0gUG9wdWxhc2kgOiAxMC4wMDAgTWFoYXNpc3dhIEFrdGlmDQoNCi0gVWt1cmFuIHNhbXBlbCBkaWhpdHVuZyBkZW5nYW4gcnVtdXM6DQoNCiQkDQooIG4gPSBcZnJhY3tOfXsxICsgTiBcY2RvdCBlXjJ9ICksIFx0ZXh0e2Rlbmdhbn0gKCBOID0gMTAuMDAwICksICggZSA9IDAsMDUgKSAoXHRleHR7bWFyZ2luIG9mIGVycm9yIDUlfSkuDQokJA0KDQokJA0KKCBuID0gXGZyYWN7MTAuMDAwfXsxICsgMTAuMDAwIFxjZG90IDAuMDAyNX0gXGFwcHJveCAzODUgKS4NCiQkDQoNClRhcmdldDogNDAwIFJlc3BvbmRlbiB1bnR1ayBkYXRhIHlhbmcgdGlkYWsgbGVuZ2thcC4NCg0KIyMjIEFsb2thc2kgU2FtcGVsDQoNCi0gU3RyYXRhOiA1IEZha3VsdGFzIHV0YW1hKFNhaW5zIERhdGEsIEluZm9ybWF0aWthLCBQZXJ0YW1iYWhhbiwgUGVybWlueWFrYW4sIE1ldGFsdXJnaSkgZGFuIDQgYW5na2F0YW4gKHRhaHVuIDEgLSA0KS4NCg0KLSBQcm9wb3JzaTogU2FtcGVsIGRpYWxva2FzaWthbiBwcm9wb3JzaW9uYWwgYmVyZGFzYXJrYW4ganVtbGFoIG1haGFzaXN3YSBwZXIgZmFrdWx0YXMgZGFuIGFuZ2thdGFuLg0KDQojIyMgUHJvc2VkdXINCg0KLSBEYWZ0YXIgbWFoYXNpc3dhIGRpYW1iaWwgZGFyaSBkYXRhYmFzZSBha2FkZW1pay4NCg0KLSBNYWhhc2lzd2EgZGlwaWxpaCBzZWNhcmEgYWNhayBkYXJpIHNldGlhcCBzdHJhdGEgbWVuZ2d1bmFrYW4gZ2VuZXJhdG9yIG5vbW9yIGFjYWsuDQoNCiMjIyBQZW5ndWppYW4gU3RhdGlzdGlrDQoNCi0gVWppIFZhbGlkaXRhcw0KDQotIFVqaSBSZWFiaWxpdGFzDQoNCi0gQW5hbGlzaXMgYXdhbDogU3RhdGlzdGlrIERlc2tyaXB0aWYNCg0KIyMgNC4gU2ltdWxhc2kgRGF0YSBkYW4gQW5hbGlzaXMgYXdhbA0KDQojIyMgU2ltdWxhc2kgRGF0YQ0KDQpVbnR1ayBzaW11bGFzaSwgc2F5YSBtZW5nZ3VuYWthbiBrYW1pIG1lbmdoYXNpbGthbiBkYXRhIHNpbnRldGlzIHVudHVrIDQwMCByZXNwb25kZW4sIGRlbmdhbiBza29yIExpa2VydCAoMS01KSB1bnR1ayAyMCBwZXJ0YW55YWFuIGt1YW50aXRhdGlmIChwZXJ0YW55YWFuIDEtNCwgNi05LCAxMS0xNCwgMTYtMTksIDIxLTI0KS4gRGF0YSB1bnR1ayBzZXRpYXAgZGltZW5zaSBkaXJhbmdrdW0gc2ViYWdhaSBiZXJpa3V0IChza29yIHJhdGEtcmF0YSBwZXIgZGltZW5zaSk6DQoNCmBgYHtyLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoa25pdHIpDQoNCmRhdGEgPC0gZGF0YS5mcmFtZSgNCiAgYERpbWVuc2lgID0gYygiS1JTIE9ubGluZSIsICJCaW1iaW5nYW4gQWthZGVtaWsiLCAiUGVsYXlhbmFuIEFkbWluaXN0cmFzaSIsICJBa3NlcyBJbmZvcm1hc2kgQWthZGVtaWsiLCAiQmFudHVhbiBQZW55ZWxlc2FpYW4gU3R1ZGkiKSwNCiAgYFJhdGEgLSByYXRhIFNrb3JgID0gYygnMy44JywnMy41JywgJzMuMycsICc0LjAnLCAnMy42JyksDQogIGBTdGFuZGFyIERldmlhc2lgID0gYygnMC43JywgJzAsOCcsICcwLjknLCAnMC42JywgJzAuNycpDQopDQoNCmthYmxlKGRhdGEsIGNvbC5uYW1lcyA9IGMoIkRpbWVuc2kiLCAiUmF0YS1yYXRhIHNrb3IiLCAiU3RhbmRhciBEZXZpYXNpIiApKQ0KYGBgDQoNCiMjIyBBbmFsaXNpcyBBd2FsDQoNCioqMS4gU3RhdGlzdGlrIERlc2tyaXB0aWY6KioNCg0KLSAqKktSUyBPbmxpbmU6KiogUmF0YS1yYXRhIDMuOCBtZW51bmp1a2thbiBrZXB1YXNhbiBjdWt1cCBiYWlrLCB0ZXRhcGkgc3RhbmRhciBkZXZpYXNpIDAuNyBtZW5naW5kaWthc2lrYW4gdmFyaWFzaSBkYWxhbSBwZW5nYWxhbWFuIHBlbmdndW5hLg0KDQotICoqUGVsYXlhbmFuIEFkbWluaXN0cmFzaToqKiBSYXRhLXJhdGEgMy4zIGFkYWxhaCB5YW5nIHRlcmVuZGFoLCBtZW51bmp1a2thbiBhcmVhIHlhbmcgcGVybHUgcGVyYmFpa2FuLg0KDQotICoqQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrOioqICBSYXRhLXJhdGEgNC4wIGFkYWxhaCB5YW5nIHRlcnRpbmdnaSwgbWVudW5qdWtrYW4ga2VrdWF0YW4gbGF5YW5hbiBpbmkuDQoNCioqMi4gQW5hbGlzaXMgS3VhbGl0YXRpZjoqKiANCkJpYXNhbnlhIGluaSBkYXJpIHBlcnRhbnlhYW4gdGVyYnVrYS4NCg0KLSBLZWx1aGFuIHVtdW06IFByb3NlZHVyIGFkbWluaXN0cmFzaSBydW1pdCwgd2FrdHUgcmVzcG9ucyBzdGFmIGxhbWJhdC4NCg0KLSBTYXJhbjogVGluZ2thdGthbiBwYW5kdWFuIEtSUyBvbmxpbmUsIHRhbWJhaCBzZXNpIGJpbWJpbmdhbiBha2FkZW1pay4NCg0KKiozLiBJbXBsaWthc2k6KioNCg0KLSBQcmlvcml0YXMgcGVyYmFpa2FuOiBQZWxheWFuYW4gYWRtaW5pc3RyYXNpIGRhbiBiaW1iaW5nYW4gYWthZGVtaWsuDQoNCi0gS2VrdWF0YW46IEFrc2VzIGluZm9ybWFzaSBha2FkZW1payBkYXBhdCBkaXBlcnRhaGFua2FuIGF0YXUgZGl0aW5na2F0a2FuLg0KDQojIyBLZXNpbXB1bGFuDQoNCkluc3RydW1lbiBzdXJ2ZWkgaW5pIGRpcmFuY2FuZyB1bnR1ayBtZW5nZXZhbHVhc2kga2VwdWFzYW4gbWFoYXNpc3dhIHRlcmhhZGFwIGxheWFuYW4gYWthZGVtaWsgZGVuZ2FuIDI1IHBlcnRhbnlhYW4geWFuZyBtZW5jYWt1cCBsaW1hIGRpbWVuc2kgdXRhbWEuIFNrZW1hIHZhbGlkYXNpIG1lbWFzdGlrYW4gaW5zdHJ1bWVuIHZhbGlkLCByZWxpYWJlbCBtZWxhbHVpIHVqaSBhaGxpLCBkYW4gZmFrdG9yIGFuYWxpc2lzLiBEaXN0cmlidXNpIG9ubGluZSBkYW4gc3RyYXRpZmllZCByYW5kb20gc2FtcGxpbmcgbWVtYXN0aWthbiBlZmlzaWVuc2kgZGFuIHJlcHJlc2VudGFzaS4gU2ltdWxhc2kgZGF0YSBtZW51bmp1a2thbiBiYWh3YSBwZWxheWFuYW4gYWRtaW5pc3RyYXNpIHBlcmx1IHBlcmhhdGlhbiBraHVzdXMsIHNlbWVudGFyYSBha3NlcyBpbmZvcm1hc2kgYWthZGVtaWsgYWRhbGFoIGtla3VhdGFuLiBSYW5jYW5nYW4gaW5pIHNpYXAgZGlndW5ha2FuIHVudHVrIHBlbmd1bXB1bGFuIGRhdGEgc2thbGEgYmVzYXIgZGFuIGRhcGF0IGRpc2VzdWFpa2FuIGJlcmRhc2Fya2FuIGhhc2lsIHVqaSBjb2JhLg0K