TUGAS RINGKASAN TEKNIK SAMPLING AND SURVEY

Prinsip Pengambilan Sampel

Fikaa.jpg


1. Prinsip Pengambilan Sampel

1.1 Apa itu pegambilan samplel?

Pengambilan sampel itu proses milih beberapa orang, barang, atau data dari satu kelompok besar buat ngebayangin gimana karakteristik seluruh kelompok itu. Cara ini sering dipake di penelitian bisnis dan kebijakan publik biar bisa bikin keputusan berdasar data dengan lebih cepat dan efisien, tanpa harus ngecek semuanya satu per satu.

1.2 Populasi Vs Sampel

1.2.1 Populasi

Populasi (N) itu kumpulan semua orang, benda, atau kejadian yang mau diteliti. Intinya, ini tuh semua hal yang mungkin diamati dan ada hubungannya sama penelitian yang lagi dibahas.

Simbol & Nilai Populasi

Parameter Populasi dan Simbolnya
Parameter.Populasi Simbol Deskripsi
Mean (Rata-rata) μ (mu) Rata-rata dari seluruh populasi
Variance (Varians) σ² (sigma squared) Penyebaran data dalam populasi
Standard Deviation (Simpangan Baku) σ (sigma) Ukuran dispersi atau sebaran data dalam populasi
Population Size (Ukuran Populasi) N Jumlah total individu dalam populasi
Proportion (Proporsi) P Proporsi elemen dengan karakteristik tertentu dalam populasi
Correlation Coefficient (Koefisien Korelasi) ρ (rho) Tingkat hubungan antara dua variabel dalam populasi

Contoh

  • Semua penduduk suatu kota saat mempelajari perilaku pemilih.

  • Setiap Celana yang di produksi oleh perusahaan.

  • Mahasiswa mengukur nilai ujian rata-rata.

Jenis-jenis populasi

  • Populasi Terbatas: Populasi dengan jumlah elemen yang tetap (misalnya karyawan dalam suatu perusahaan)

  • Populasi Tak Terbatas: Populasi dengan jumlah elemen yang tidak dapat dihitung (misalnya,bakteri dalam cawan petri).

  • Populasi Target: Populasi spesifik yang ingin dipelajari oleh peneliti.

  • Populasi yang dapat diakses: Bagian dari populasi sasaran yang tersedia untuk penelitian.

1.2.2 Sampel

Sampel (n) itu sebagian kecil dari populasi yang dipilih buat diteliti. Soalnya, Meneliti seluruh populasi biasanya makan biaya, waktu, dan susah diakses. Makanya, peneliti pake sampel buat ngambil kesimpulan tentang populasi tanpa harus ngecek semuanya.

Simbol & Nilai Sampel

Keterangan Simbol Penjelasan
Mean (Rata-rata) Sampel \(\bar{x}\) Rata-rata dari sampel
Simpangan Baku Sampel \(s\) Mengukur penyebaran data dalam sampel
Ukuran Sampel \(n\) Jumlah elemen dalam sampel
Proporsi Sampel \(\hat{p}\) Proporsi keberhasilan dalam sampel
Koefisien Korelasi Sampel \(r\) Mengukur hubungan antara dua variabel dalam sampel

Contoh

  • Menentukan Panjang celana yang kita Produksi.

  • Survei terhadap 1.000 penduduk kota untuk mermperkirakan opini publik.

  • Menganalisis nilai ujian dari 200 siswa yang dipilih secara acak.

Karakteristik Sampel yang Baik

  • Representatif: Secara akurat mencermikan populasi.

  • Acak: Dipilih tanpa bias.

  • Cukup Besar: Memastikan estimasi yang dapat diandalkan.

  • Bias Minimal: Menghindari kesalahan sistematis.

1.2.3 Perbedaan Utama Antara Populasi & Sampel

Fitur Populasi (N) Sampel (n)
Definisi Seluruh kelompok yang diminati Subset yang dipilih untuk dipelajari
Ukuran Besar atau tak terbatas Porsi lebih kecil dan mudah diatur
Notasi Menggunakan huruf besar (misalnya, N, μ, σ) Menggunakan huruf kecil (misalnya, n, x̄, s)
Parameter Nilai sebenarnya (misalnya, rata-rata populasi μ, simpangan baku σ) Perkiraan (misalnya, rata-rata sampel x̄, simpangan baku s)
Biaya & Waktu Tinggi Lebih rendah
Ketepatan Memberikan informasi yang akurat Memberikan perkiraan dengan beberapa margin kesalahan

1.3 Mengapa Menggunakan Sampel?

Sampel digunakan karena lebih efisien, hemat biaya, dan tetap memberikan hasil akurat jika metode pengambilan sampelnya tepat. Dengan teknik statistik yang benar, sampel bisa merepresentasikan populasi dengan baik tanpa perlu mengumpulkan data dari seluruh populasi. Seperti:

  1. Evektifitas Biaya

  2. Efisiensi Waktu

  3. Kelayakan

  4. Akurasi dan Keandalan

  5. Mengurangi kompleksitas Pengelolaan Data

  6. Pertimbangan Etis

1.4 Menghindari Bias Sampel

Bias dalam Pengambilan Sampel: Penyebab dan Cara Mengatasinya

Bias dalam pengambilan sampel terjadi ketika beberapa kelompok dalam populasi tidak terwakili dengan baik, baik karena dikecualikan atau justru dipilih secara berlebihan. Hal ini bisa menyebabkan hasil penelitian menjadi tidak akurat dan kurang valid. Berikut beberapa penyebab utama bias pengambilan sampel serta cara mengatasinya:

Aspek Keterangan Cara Mengatasi
Kurangnya Cakupan Beberapa kelompok dalam populasi tidak dimasukkan dalam kerangka sampel. Gunakan kerangka sampel yang benar-benar representatif untuk memastikan semua kelompok terwakili.
Representasi Berlebih Kelompok tertentu memiliki peluang jauh lebih besar untuk dipilih dibandingkan yang lain. Gunakan teknik sampling berstrata agar setiap kelompok memiliki proporsi yang seimbang.
Bias Seleksi Diri Sampel terdiri dari peserta yang sukarela ikut serta, sehingga tidak mewakili keseluruhan populasi. Gunakan undangan acak dan pertimbangkan insentif untuk menarik kelompok responden yang lebih beragam.

Menghindari Bias dalam Pengambilan Sampel

Meminimalkan bias dalam pengambilan sampel sangat penting agar hasil penelitian valid, andal, dan dapat digeneralisasi ke seluruh populasi.
Dengan:

  • Menggunakan Kerangka Sampel yang tepat.

  • Menerapkan metode pemilihan acak.

  • Mengurangi efek seleksi diri.

1.5 Pengacakan dalam Pengambilan Sampel

Pengacakan dalam Pengambilan Sampel

Pengacakan adalah proses yang memastikan setiap anggota populasi memiliki peluang yang sama untuk dipilih. Ini membantu mengurangi bias dalam pengambilan sampel dan meningkatkan validitas serta generalisasi hasil penelitian. Berikut beberapa metode utama dalam pengambilan sampel acak:


1. Pengambilan Sampel Acak Sederhana (Simple Random Sampling - SRS)

Metode di mana setiap elemen dalam populasi memiliki peluang yang sama untuk dipilih, sehingga menghasilkan sampel yang benar-benar acak.

Cara Kerja:

  • Tetapkan nomor unik untuk setiap anggota populasi.

  • Gunakan generator angka acak atau sistem undian untuk memilih peserta.

Contoh:
Sebuah perusahaan ingin mensurvei 500 karyawan dari total 5.000 karyawan. Setiap karyawan diberi nomor, lalu 500 orang dipilih secara acak menggunakan sistem undian.


2. Pengambilan Sampel Sistematis (Systematic Sampling)

Metode di mana elemen dipilih secara berkala dari daftar yang berurutan.

Cara Kerja:

  • Tentukan ukuran sampel (misalnya, memilih 100 orang dari daftar 1.000).

  • Hitung interval pemilihan: Ukuran Populasi ÷ Ukuran Sampel (misalnya, 1.000 ÷ 100 = 10).

  • Pilih titik awal secara acak, lalu pilih setiap elemen ke-10 dari daftar.

Contoh:
Seorang peneliti ingin mensurvei setiap pelanggan ke-5 dari daftar 1.000 pembeli. Jika titik awalnya adalah 3, maka individu yang dipilih akan berada di urutan ke-3, ke-8, ke-13, ke-18, dan seterusnya.


3. Pengambilan Sampel Berstrata (Stratified Sampling)

Metode yang membagi populasi ke dalam subkelompok (strata) berdasarkan karakteristik yang sama, lalu memilih sampel secara acak dari masing-masing strata.

Cara Kerja:

  • Identifikasi strata yang relevan (misalnya, usia, tingkat pendapatan, pendidikan).

  • Tentukan proporsi setiap strata dalam populasi.

  • Lakukan pengambilan sampel acak dalam setiap strata untuk menjaga keseimbangan.

Contoh:
Sebuah universitas ingin mensurvei mahasiswa berdasarkan tahun akademik:

  • 40% mahasiswa baru

  • 30% mahasiswa tingkat dua

  • 20% mahasiswa tingkat tiga

  • 10% mahasiswa tingkat empat

Sampel yang diambil akan tetap mencerminkan proporsi ini, sehingga hasil penelitian lebih representatif.


Kesimpulan

Menggunakan metode pengambilan sampel acak seperti SRS, sistematis, dan berstrata membantu memastikan bahwa sampel yang dipilih adil, tidak bias, dan representatif. Ini meningkatkan keandalan dan validitas penelitian, sehingga hasilnya lebih dapat digeneralisasikan ke seluruh populasi.

1.6 Tantangan dalam Pengambilan Sampel

Pengambilan sampel adalah langkah penting dalam penelitian, tapi tidak selalu mudah. Ada beberapa tantangan yang bisa memengaruhi akurasi dan keandalan hasil penelitian. Berikut ini adalah beberapa tantangan utama, penyebabnya, dan solusi praktis yang bisa diterapkan:

1. Bias Respon Non-Responsif

Tantangan:
Peserta tidak mau atau tidak bisa menanggapi survei, yang bisa menyebabkan hasil tidak akurat.

Penyebab:

  • Survei terlalu panjang atau rumit.

  • Kelompok tertentu kurang tertarik atau sulit dijangkau.

Solusi:

  • Sederhanakan format survei agar lebih mudah dipahami.

  • Kirim pengingat untuk tindak lanjut.

  • Tawarkan insentif kecil, seperti voucher atau hadiah, untuk mendorong partisipasi.


2. Kesalahan Kerangka Sampling

Tantangan:
Daftar yang digunakan untuk memilih sampel tidak akurat atau tidak lengkap, sehingga beberapa kelompok tidak terwakili dengan baik.

Penyebab:

  • Daftar yang digunakan sudah kedaluwarsa.

  • Klasifikasi yang salah atau adanya duplikasi peserta.

Solusi:

  • Selalu perbarui kerangka sampel secara berkala.

  • Periksa kembali sumber data untuk memastikan keakuratannya.

  • Gunakan pengambilan sampel berstrata untuk memastikan setiap kelompok terwakili.


3. Ukuran Sampel Tidak Memadai

Tantangan:
Jumlah sampel yang dipilih terlalu kecil atau tidak cukup mewakili populasi, sehingga hasil penelitian kurang akurat.

Penyebab:

  • Keterbatasan biaya dan waktu untuk mengambil sampel yang besar.

  • Salah perhitungan dalam menentukan ukuran sampel.

  • Tingkat putus sekolah yang tinggi dalam studi jangka panjang (longitudinal).

Solusi:

  • Gunakan metode statistik yang tepat untuk menghitung ukuran sampel yang dibutuhkan.

  • Perhitungkan kemungkinan dropout dalam studi jangka panjang.


4. Kendala Biaya dan Waktu

Tantangan:
Pengambilan sampel sering kali membutuhkan biaya tinggi dan waktu yang lama.

Penyebab:

  • Biaya tinggi untuk pengumpulan data lapangan.

  • Keterlambatan dalam menjangkau responden.

  • Membutuhkan peralatan atau tenaga ahli khusus.

Solusi:

  • Gunakan survei online yang lebih hemat biaya.

  • Otomatisasi pengumpulan data untuk mempercepat proses.

  • Optimalkan sumber daya yang ada untuk mengurangi biaya.


Dengan mengatasi tantangan-tantangan ini, peneliti dapat meningkatkan keandalan dan efisiensi proses pengambilan sampel. Hasilnya, data yang diperoleh lebih representatif dan valid, sehingga temuan penelitian lebih akurat dan dapat digeneralisasikan ke seluruh populasi.

1.7 Aplikasi Pengambilan Sampel di Berbagai Industri

Pengambilan sampel tuh penting banget buat berbagai industri. Dengan ngumpulin data dari sebagian kecil populasi, perusahaan bisa dapet wawasan yang berguna, bikin keputusan yang tepat, dan ningkatin efisiensi. Nah, ini dia beberapa contoh gimana pengambilan sampel dipake di berbagai bidang:


1. Riset Pasar

Penerapannya:

  • Survei dan kelompok diskusi buat ngumpulin pendapat konsumen.

Tujuannya:

  • Mengerti selera konsumen, tren pasar, dan perilaku pelanggan biar bisa bikin strategi pemasaran yang tepat.

2. Pelayanan Kesehatan

Penerapannya:

  • Ngumpulin data pasien dan uji klinis buat analisis kesehatan.

Tujuannya:

  • Ngitung prevalensi penyakit, ngetes efektivitas obat, dan menganalisis tren kesehatan masyarakat biar bisa bikin kebijakan kesehatan yang lebih baik.

3. Kontrol Kualitas

Penerapannya:

  • Ngambil sampel produk di tiap tahap produksi buat dicek kualitasnya.

Tujuannya:

  • Mastiin kualitas produk sesuai standar dan ngurangin cacat produksi.

4. Keuangan

Penerapannya:

  • Menganalisis transaksi keuangan dan tren pasar buat ambil keputusan.

Tujuannya:

  • Menilai risiko, ngedeteksi penipuan, dan bikin keputusan investasi yang lebih tepat.

Dengan teknik pengambilan sampel yang tepat, perusahaan bisa dapet informasi akurat tanpa harus survei semua orang. Hasilnya, biaya lebih hemat, keputusan lebih cerdas, dan operasional jadi lebih efisien.

LS0tDQp0aXRsZTogIlRVR0FTIFJJTkdLQVNBTiBURUtOSUsgU0FNUExJTkcgQU5EIFNVUlZFWSINCg0Kc3VidGl0bGU6ICJQcmluc2lwIFBlbmdhbWJpbGFuIFNhbXBlbCINCg0KYXV0aG9yOiANCiAgLSAiIEZpa2EgSXJzYW5kaSBEZXN2eWFudGkgKDUyMjQwMDAxMykiDQogIA0KZGF0ZTogICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDoNCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246DQogICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICB0aHVtYm5haWxzOiB0cnVlDQogICAgbGlnaHRib3g6IHRydWUNCiAgICBnYWxsZXJ5OiB0cnVlDQogICAgbGliX2RpcjogbGlicw0KICAgIGRmX3ByaW50OiAicGFnZWQiDQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBjc3M6ICJTdHlsZS5jc3MiDQogICAgDQotLS0NCg0KIDxpbWcgaWQ9ImxvZ28tdXRhbWEiIHNyYz0iRmlrYWEuanBnIiBhbHQ9IkZpa2FhLmpwZyIgc3R5bGU9IndpZHRoOjIwMHB4OyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiBhdXRvOyI+DQoNCi0tLQ0KDQojIDEuIFByaW5zaXAgUGVuZ2FtYmlsYW4gU2FtcGVsIA0KDQoNCiMjIDEuMSBBcGEgaXR1IHBlZ2FtYmlsYW4gc2FtcGxlbD8NCg0KUGVuZ2FtYmlsYW4gc2FtcGVsIGl0dSBwcm9zZXMgbWlsaWggYmViZXJhcGEgb3JhbmcsIGJhcmFuZywgYXRhdSBkYXRhIGRhcmkgc2F0dSBrZWxvbXBvayBiZXNhciBidWF0IG5nZWJheWFuZ2luIGdpbWFuYSBrYXJha3RlcmlzdGlrIHNlbHVydWgga2Vsb21wb2sgaXR1LiBDYXJhIGluaSBzZXJpbmcgZGlwYWtlIGRpIHBlbmVsaXRpYW4gYmlzbmlzIGRhbiBrZWJpamFrYW4gcHVibGlrIGJpYXIgYmlzYSBiaWtpbiBrZXB1dHVzYW4gYmVyZGFzYXIgZGF0YSBkZW5nYW4gbGViaWggY2VwYXQgZGFuIGVmaXNpZW4sIHRhbnBhIGhhcnVzIG5nZWNlayBzZW11YW55YSBzYXR1IHBlciBzYXR1Lg0KDQojIyAxLjIgUG9wdWxhc2kgVnMgU2FtcGVsDQoNCiMjIyAxLjIuMSBQb3B1bGFzaSANCg0KUG9wdWxhc2kgKCoqKk4qKiopIGl0dSBrdW1wdWxhbiBzZW11YSBvcmFuZywgYmVuZGEsIGF0YXUga2VqYWRpYW4geWFuZyBtYXUgZGl0ZWxpdGkuIEludGlueWEsIGluaSB0dWggc2VtdWEgaGFsIHlhbmcgbXVuZ2tpbiBkaWFtYXRpIGRhbiBhZGEgaHVidW5nYW5ueWEgc2FtYSBwZW5lbGl0aWFuIHlhbmcgbGFnaSBkaWJhaGFzLg0KDQoqKlNpbWJvbCAmIE5pbGFpIFBvcHVsYXNpKioNCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkoa25pdHIpDQoNCiMgTWVtYnVhdCBkYXRhIGZyYW1lIHVudHVrIHBhcmFtZXRlciBwb3B1bGFzaQ0KcG9wdWxhc2lfdGFibGUgPC0gZGF0YS5mcmFtZSgNCiAgIlBhcmFtZXRlciBQb3B1bGFzaSIgPSBjKCJNZWFuIChSYXRhLXJhdGEpIiwgIlZhcmlhbmNlIChWYXJpYW5zKSIsICJTdGFuZGFyZCBEZXZpYXRpb24gKFNpbXBhbmdhbiBCYWt1KSIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvcHVsYXRpb24gU2l6ZSAoVWt1cmFuIFBvcHVsYXNpKSIsICJQcm9wb3J0aW9uIChQcm9wb3JzaSkiLCAiQ29ycmVsYXRpb24gQ29lZmZpY2llbnQgKEtvZWZpc2llbiBLb3JlbGFzaSkiKSwNCiAgIlNpbWJvbCIgPSBjKCLOvCAobXUpIiwgIs+DwrIgKHNpZ21hIHNxdWFyZWQpIiwgIs+DIChzaWdtYSkiLCAiTiIsICJQIiwgIs+BIChyaG8pIiksDQogICJEZXNrcmlwc2kiID0gYygiUmF0YS1yYXRhIGRhcmkgc2VsdXJ1aCBwb3B1bGFzaSIsICJQZW55ZWJhcmFuIGRhdGEgZGFsYW0gcG9wdWxhc2kiLCANCiAgICAgICAgICAgICAgICAgICJVa3VyYW4gZGlzcGVyc2kgYXRhdSBzZWJhcmFuIGRhdGEgZGFsYW0gcG9wdWxhc2kiLCAiSnVtbGFoIHRvdGFsIGluZGl2aWR1IGRhbGFtIHBvcHVsYXNpIiwgDQogICAgICAgICAgICAgICAgICAiUHJvcG9yc2kgZWxlbWVuIGRlbmdhbiBrYXJha3RlcmlzdGlrIHRlcnRlbnR1IGRhbGFtIHBvcHVsYXNpIiwgDQogICAgICAgICAgICAgICAgICAiVGluZ2thdCBodWJ1bmdhbiBhbnRhcmEgZHVhIHZhcmlhYmVsIGRhbGFtIHBvcHVsYXNpIikNCikNCg0KIyBNZW5hbXBpbGthbiB0YWJlbCBkZW5nYW4ga25pdHI6OmthYmxlDQprYWJsZShwb3B1bGFzaV90YWJsZSwgY2FwdGlvbiA9ICJQYXJhbWV0ZXIgUG9wdWxhc2kgZGFuIFNpbWJvbG55YSIpDQoNCg0KYGBgDQoNCioqQ29udG9oKioNCg0KLSBTZW11YSBwZW5kdWR1ayBzdWF0dSBrb3RhIHNhYXQgbWVtcGVsYWphcmkgcGVyaWxha3UgcGVtaWxpaC4NCg0KLSBTZXRpYXAgQ2VsYW5hIHlhbmcgZGkgcHJvZHVrc2kgb2xlaCBwZXJ1c2FoYWFuLg0KDQotIE1haGFzaXN3YSBtZW5ndWt1ciBuaWxhaSB1amlhbiByYXRhLXJhdGEuDQoNCioqSmVuaXMtamVuaXMgcG9wdWxhc2kqKg0KDQotIFBvcHVsYXNpIFRlcmJhdGFzOiBQb3B1bGFzaSBkZW5nYW4ganVtbGFoIGVsZW1lbiB5YW5nIHRldGFwIChtaXNhbG55YSBrYXJ5YXdhbiBkYWxhbSBzdWF0dSBwZXJ1c2FoYWFuKQ0KDQotIFBvcHVsYXNpIFRhayBUZXJiYXRhczogUG9wdWxhc2kgZGVuZ2FuIGp1bWxhaCBlbGVtZW4geWFuZyB0aWRhayBkYXBhdCBkaWhpdHVuZyAobWlzYWxueWEsYmFrdGVyaSBkYWxhbSBjYXdhbiBwZXRyaSkuDQoNCi0gUG9wdWxhc2kgVGFyZ2V0OiBQb3B1bGFzaSBzcGVzaWZpayB5YW5nIGluZ2luIGRpcGVsYWphcmkgb2xlaCBwZW5lbGl0aS4NCg0KLSBQb3B1bGFzaSB5YW5nIGRhcGF0IGRpYWtzZXM6IEJhZ2lhbiBkYXJpIHBvcHVsYXNpIHNhc2FyYW4geWFuZyB0ZXJzZWRpYSB1bnR1ayBwZW5lbGl0aWFuLg0KDQojIyMgMS4yLjIgU2FtcGVsDQoNClNhbXBlbCAoKioqbioqKikgaXR1IHNlYmFnaWFuIGtlY2lsIGRhcmkgcG9wdWxhc2kgeWFuZyBkaXBpbGloIGJ1YXQgZGl0ZWxpdGkuIFNvYWxueWEsIE1lbmVsaXRpIHNlbHVydWggcG9wdWxhc2kgYmlhc2FueWEgbWFrYW4gYmlheWEsIHdha3R1LCBkYW4gc3VzYWggZGlha3Nlcy4gTWFrYW55YSwgcGVuZWxpdGkgcGFrZSBzYW1wZWwgYnVhdCBuZ2FtYmlsIGtlc2ltcHVsYW4gdGVudGFuZyBwb3B1bGFzaSB0YW5wYSBoYXJ1cyBuZ2VjZWsgc2VtdWFueWEuDQoNCioqU2ltYm9sICYgTmlsYWkgU2FtcGVsKioNCg0KYGBge3IgIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQpsaWJyYXJ5KGtuaXRyKQ0KDQojIERhdGEgZnJhbWUgdW50dWsgdGFiZWwNCnRhYmVsX3NhbXBlbCA8LSBkYXRhLmZyYW1lKA0KICBLZXRlcmFuZ2FuID0gYygiTWVhbiAoUmF0YS1yYXRhKSBTYW1wZWwiLCAiU2ltcGFuZ2FuIEJha3UgU2FtcGVsIiwgIlVrdXJhbiBTYW1wZWwiLCAiUHJvcG9yc2kgU2FtcGVsIiwgIktvZWZpc2llbiBLb3JlbGFzaSBTYW1wZWwiKSwNCiAgU2ltYm9sID0gYygiJFxcYmFye3h9JCIsICIkcyQiLCAiJG4kIiwgIiRcXGhhdHtwfSQiLCAiJHIkIiksDQogIFBlbmplbGFzYW4gPSBjKCJSYXRhLXJhdGEgZGFyaSBzYW1wZWwiLCAiTWVuZ3VrdXIgcGVueWViYXJhbiBkYXRhIGRhbGFtIHNhbXBlbCIsIA0KICAgICAgICAgICAgICAgICAiSnVtbGFoIGVsZW1lbiBkYWxhbSBzYW1wZWwiLCAiUHJvcG9yc2kga2ViZXJoYXNpbGFuIGRhbGFtIHNhbXBlbCIsIA0KICAgICAgICAgICAgICAgICAiTWVuZ3VrdXIgaHVidW5nYW4gYW50YXJhIGR1YSB2YXJpYWJlbCBkYWxhbSBzYW1wZWwiKQ0KKQ0KDQojIE1lbmFtcGlsa2FuIHRhYmVsIGRlbmdhbiBmb3JtYXQgTGFUZVggdW50dWsgc2ltYm9sDQprYWJsZSh0YWJlbF9zYW1wZWwsIGZvcm1hdCA9ICJtYXJrZG93biIpDQoNCg0KYGBgDQoNCg0KKipDb250b2gqKg0KDQotIE1lbmVudHVrYW4gUGFuamFuZyBjZWxhbmEgeWFuZyBraXRhIFByb2R1a3NpLg0KDQotIFN1cnZlaSB0ZXJoYWRhcCAxLjAwMCBwZW5kdWR1ayBrb3RhIHVudHVrIG1lcm1wZXJraXJha2FuIG9waW5pIHB1Ymxpay4NCg0KLSBNZW5nYW5hbGlzaXMgbmlsYWkgdWppYW4gZGFyaSAyMDAgc2lzd2EgeWFuZyBkaXBpbGloIHNlY2FyYSBhY2FrLg0KDQoqKkthcmFrdGVyaXN0aWsgU2FtcGVsIHlhbmcgQmFpayoqDQoNCi0gUmVwcmVzZW50YXRpZjogU2VjYXJhIGFrdXJhdCBtZW5jZXJtaWthbiBwb3B1bGFzaS4NCg0KLSBBY2FrOiBEaXBpbGloIHRhbnBhIGJpYXMuDQoNCi0gQ3VrdXAgQmVzYXI6IE1lbWFzdGlrYW4gZXN0aW1hc2kgeWFuZyBkYXBhdCBkaWFuZGFsa2FuLg0KDQotIEJpYXMgTWluaW1hbDogTWVuZ2hpbmRhcmkga2VzYWxhaGFuIHNpc3RlbWF0aXMuDQoNCg0KIyMjIDEuMi4zIFBlcmJlZGFhbiBVdGFtYSBBbnRhcmEgUG9wdWxhc2kgJiBTYW1wZWwNCg0KDQpgYGB7ciAgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0gDQpsaWJyYXJ5KGtuaXRyKQ0KDQojIE1lbWJ1YXQgZGF0YSBmcmFtZQ0KdGFiZWxfcGVyYmFuZGluZ2FuIDwtIGRhdGEuZnJhbWUoDQogIEZpdHVyID0gYygiRGVmaW5pc2kiLCAiVWt1cmFuIiwgIk5vdGFzaSIsICJQYXJhbWV0ZXIiLCAiQmlheWEgJiBXYWt0dSIsICJLZXRlcGF0YW4iKSwNCiAgUG9wdWxhc2kgPSBjKCJTZWx1cnVoIGtlbG9tcG9rIHlhbmcgZGltaW5hdGkiLCANCiAgICAgICAgICAgICAgICJCZXNhciBhdGF1IHRhayB0ZXJiYXRhcyIsIA0KICAgICAgICAgICAgICAgIk1lbmdndW5ha2FuIGh1cnVmIGJlc2FyIChtaXNhbG55YSwgTiwgzrwsIM+DKSIsIA0KICAgICAgICAgICAgICAgIk5pbGFpIHNlYmVuYXJueWEgKG1pc2FsbnlhLCByYXRhLXJhdGEgcG9wdWxhc2kgzrwsIHNpbXBhbmdhbiBiYWt1IM+DKSIsIA0KICAgICAgICAgICAgICAgIlRpbmdnaSIsIA0KICAgICAgICAgICAgICAgIk1lbWJlcmlrYW4gaW5mb3JtYXNpIHlhbmcgYWt1cmF0IiksDQogIFNhbXBlbCA9IGMoIlN1YnNldCB5YW5nIGRpcGlsaWggdW50dWsgZGlwZWxhamFyaSIsIA0KICAgICAgICAgICAgICJQb3JzaSBsZWJpaCBrZWNpbCBkYW4gbXVkYWggZGlhdHVyIiwgDQogICAgICAgICAgICAgIk1lbmdndW5ha2FuIGh1cnVmIGtlY2lsIChtaXNhbG55YSwgbiwgeMyELCBzKSIsIA0KICAgICAgICAgICAgICJQZXJraXJhYW4gKG1pc2FsbnlhLCByYXRhLXJhdGEgc2FtcGVsIHjMhCwgc2ltcGFuZ2FuIGJha3UgcykiLCANCiAgICAgICAgICAgICAiTGViaWggcmVuZGFoIiwgDQogICAgICAgICAgICAgIk1lbWJlcmlrYW4gcGVya2lyYWFuIGRlbmdhbiBiZWJlcmFwYSBtYXJnaW4ga2VzYWxhaGFuIikNCikNCg0KIyBNZW5hbXBpbGthbiB0YWJlbA0Ka2FibGUodGFiZWxfcGVyYmFuZGluZ2FuLCBmb3JtYXQgPSAibWFya2Rvd24iLCBjb2wubmFtZXMgPSBjKCJGaXR1ciIsICJQb3B1bGFzaSAoTikiLCAiU2FtcGVsIChuKSIpKQ0KDQoNCmBgYA0KDQojIyAxLjMgTWVuZ2FwYSBNZW5nZ3VuYWthbiBTYW1wZWw/DQoNClNhbXBlbCBkaWd1bmFrYW4ga2FyZW5hIGxlYmloIGVmaXNpZW4sIGhlbWF0IGJpYXlhLCBkYW4gdGV0YXAgbWVtYmVyaWthbiBoYXNpbCBha3VyYXQgamlrYSBtZXRvZGUgcGVuZ2FtYmlsYW4gc2FtcGVsbnlhIHRlcGF0LiBEZW5nYW4gdGVrbmlrIHN0YXRpc3RpayB5YW5nIGJlbmFyLCBzYW1wZWwgYmlzYSBtZXJlcHJlc2VudGFzaWthbiBwb3B1bGFzaSBkZW5nYW4gYmFpayB0YW5wYSBwZXJsdSBtZW5ndW1wdWxrYW4gZGF0YSBkYXJpIHNlbHVydWggcG9wdWxhc2kuDQpTZXBlcnRpOg0KDQoxLiBFdmVrdGlmaXRhcyBCaWF5YQ0KDQoyLiBFZmlzaWVuc2kgV2FrdHUNCg0KMy4gS2VsYXlha2FuIA0KDQo0LiBBa3VyYXNpIGRhbiAgS2VhbmRhbGFuIA0KDQo1LiBNZW5ndXJhbmdpIGtvbXBsZWtzaXRhcyBQZW5nZWxvbGFhbiBEYXRhIA0KDQo2LiBQZXJ0aW1iYW5nYW4gRXRpcw0KDQojIyAxLjQgTWVuZ2hpbmRhcmkgQmlhcyBTYW1wZWwNCg0KIyMjICoqQmlhcyBkYWxhbSBQZW5nYW1iaWxhbiBTYW1wZWw6IFBlbnllYmFiIGRhbiBDYXJhIE1lbmdhdGFzaW55YSoqICANCg0KQmlhcyBkYWxhbSBwZW5nYW1iaWxhbiBzYW1wZWwgdGVyamFkaSBrZXRpa2EgKipiZWJlcmFwYSBrZWxvbXBvayBkYWxhbSBwb3B1bGFzaSB0aWRhayB0ZXJ3YWtpbGkgZGVuZ2FuIGJhaWsqKiwgYmFpayBrYXJlbmEgZGlrZWN1YWxpa2FuIGF0YXUganVzdHJ1IGRpcGlsaWggc2VjYXJhIGJlcmxlYmloYW4uIEhhbCBpbmkgYmlzYSBtZW55ZWJhYmthbiAqKmhhc2lsIHBlbmVsaXRpYW4gbWVuamFkaSB0aWRhayBha3VyYXQgZGFuIGt1cmFuZyB2YWxpZCoqLiBCZXJpa3V0IGJlYmVyYXBhIHBlbnllYmFiIHV0YW1hIGJpYXMgcGVuZ2FtYmlsYW4gc2FtcGVsIHNlcnRhIGNhcmEgbWVuZ2F0YXNpbnlhOiAgDQoNCnwgKipBc3BlayoqICAgICAgICAgICAgIHwgKipLZXRlcmFuZ2FuKiogfCAqKkNhcmEgTWVuZ2F0YXNpKiogfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfA0KfCAqKkt1cmFuZ255YSBDYWt1cGFuKiogfCBCZWJlcmFwYSBrZWxvbXBvayBkYWxhbSBwb3B1bGFzaSB0aWRhayBkaW1hc3Vra2FuIGRhbGFtIGtlcmFuZ2thIHNhbXBlbC4gfCBHdW5ha2FuIGtlcmFuZ2thIHNhbXBlbCB5YW5nIGJlbmFyLWJlbmFyIHJlcHJlc2VudGF0aWYgdW50dWsgbWVtYXN0aWthbiBzZW11YSBrZWxvbXBvayB0ZXJ3YWtpbGkuIHwNCnwgKipSZXByZXNlbnRhc2kgQmVybGViaWgqKiB8IEtlbG9tcG9rIHRlcnRlbnR1IG1lbWlsaWtpIHBlbHVhbmcgamF1aCBsZWJpaCBiZXNhciB1bnR1ayBkaXBpbGloIGRpYmFuZGluZ2thbiB5YW5nIGxhaW4uIHwgR3VuYWthbiB0ZWtuaWsgKipzYW1wbGluZyBiZXJzdHJhdGEqKiBhZ2FyIHNldGlhcCBrZWxvbXBvayBtZW1pbGlraSBwcm9wb3JzaSB5YW5nIHNlaW1iYW5nLiB8DQp8ICoqQmlhcyBTZWxla3NpIERpcmkqKiB8IFNhbXBlbCB0ZXJkaXJpIGRhcmkgcGVzZXJ0YSB5YW5nICoqc3VrYXJlbGEgaWt1dCBzZXJ0YSoqLCBzZWhpbmdnYSB0aWRhayBtZXdha2lsaSBrZXNlbHVydWhhbiBwb3B1bGFzaS4gfCBHdW5ha2FuIHVuZGFuZ2FuIGFjYWsgZGFuIHBlcnRpbWJhbmdrYW4gaW5zZW50aWYgdW50dWsgbWVuYXJpayBrZWxvbXBvayByZXNwb25kZW4geWFuZyBsZWJpaCBiZXJhZ2FtLiB8DQoNCiMjIyAqKk1lbmdoaW5kYXJpIEJpYXMgZGFsYW0gUGVuZ2FtYmlsYW4gU2FtcGVsKiogIA0KTWVtaW5pbWFsa2FuIGJpYXMgZGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsICoqc2FuZ2F0IHBlbnRpbmcqKiBhZ2FyIGhhc2lsIHBlbmVsaXRpYW4gKip2YWxpZCwgYW5kYWwsIGRhbiBkYXBhdCBkaWdlbmVyYWxpc2FzaSoqIGtlIHNlbHVydWggcG9wdWxhc2kuICANCkRlbmdhbjogIA0KDQotIE1lbmdndW5ha2FuIEtlcmFuZ2thIFNhbXBlbCB5YW5nIHRlcGF0Lg0KDQotIE1lbmVyYXBrYW4gbWV0b2RlIHBlbWlsaWhhbiBhY2FrLg0KDQotIE1lbmd1cmFuZ2kgZWZlayBzZWxla3NpIGRpcmkuDQoNCiMjIDEuNSBQZW5nYWNha2FuIGRhbGFtIFBlbmdhbWJpbGFuIFNhbXBlbA0KDQojIyMgKipQZW5nYWNha2FuIGRhbGFtIFBlbmdhbWJpbGFuIFNhbXBlbCoqIA0KDQpQZW5nYWNha2FuIGFkYWxhaCBwcm9zZXMgeWFuZyBtZW1hc3Rpa2FuICoqc2V0aWFwIGFuZ2dvdGEgcG9wdWxhc2kgbWVtaWxpa2kgcGVsdWFuZyB5YW5nIHNhbWEgdW50dWsgZGlwaWxpaCoqLiBJbmkgbWVtYmFudHUgKiptZW5ndXJhbmdpIGJpYXMqKiBkYWxhbSBwZW5nYW1iaWxhbiBzYW1wZWwgZGFuIG1lbmluZ2thdGthbiAqKnZhbGlkaXRhcyBzZXJ0YSBnZW5lcmFsaXNhc2kgaGFzaWwgcGVuZWxpdGlhbioqLiBCZXJpa3V0IGJlYmVyYXBhIG1ldG9kZSB1dGFtYSBkYWxhbSBwZW5nYW1iaWxhbiBzYW1wZWwgYWNhazogIA0KDQotLS0NCg0KIyMjICoqMS4gUGVuZ2FtYmlsYW4gU2FtcGVsIEFjYWsgU2VkZXJoYW5hIChTaW1wbGUgUmFuZG9tIFNhbXBsaW5nIC0gU1JTKSoqIA0KTWV0b2RlIGRpIG1hbmEgc2V0aWFwIGVsZW1lbiBkYWxhbSBwb3B1bGFzaSBtZW1pbGlraSBwZWx1YW5nIHlhbmcgc2FtYSB1bnR1ayBkaXBpbGloLCBzZWhpbmdnYSBtZW5naGFzaWxrYW4gc2FtcGVsIHlhbmcgYmVuYXItYmVuYXIgYWNhay4gIA0KDQogKipDYXJhIEtlcmphOioqICANCiANCi0gVGV0YXBrYW4gbm9tb3IgdW5payB1bnR1ayBzZXRpYXAgYW5nZ290YSBwb3B1bGFzaS4gIA0KDQotIEd1bmFrYW4gKipnZW5lcmF0b3IgYW5na2EgYWNhayoqIGF0YXUgc2lzdGVtIHVuZGlhbiB1bnR1ayBtZW1pbGloIHBlc2VydGEuICANCg0KICoqQ29udG9oOioqICANClNlYnVhaCBwZXJ1c2FoYWFuIGluZ2luIG1lbnN1cnZlaSAqKjUwMCBrYXJ5YXdhbiBkYXJpIHRvdGFsIDUuMDAwIGthcnlhd2FuKiouIFNldGlhcCBrYXJ5YXdhbiBkaWJlcmkgbm9tb3IsIGxhbHUgNTAwIG9yYW5nIGRpcGlsaWggc2VjYXJhIGFjYWsgbWVuZ2d1bmFrYW4gKipzaXN0ZW0gdW5kaWFuKiouICANCg0KLS0tDQoNCiMjIyAqKjIuIFBlbmdhbWJpbGFuIFNhbXBlbCBTaXN0ZW1hdGlzIChTeXN0ZW1hdGljIFNhbXBsaW5nKSoqIA0KTWV0b2RlIGRpIG1hbmEgZWxlbWVuICoqZGlwaWxpaCBzZWNhcmEgYmVya2FsYSoqIGRhcmkgZGFmdGFyIHlhbmcgYmVydXJ1dGFuLiAgDQoNCiAqKkNhcmEgS2VyamE6KiogIA0KIA0KLSBUZW50dWthbiB1a3VyYW4gc2FtcGVsIChtaXNhbG55YSwgbWVtaWxpaCAqKjEwMCBvcmFuZyBkYXJpIGRhZnRhciAxLjAwMCoqKS4gIA0KDQotIEhpdHVuZyAqKmludGVydmFsIHBlbWlsaWhhbioqOiAqKlVrdXJhbiBQb3B1bGFzaSDDtyBVa3VyYW4gU2FtcGVsKiogKG1pc2FsbnlhLCAqKjEuMDAwIMO3IDEwMCA9IDEwKiopLiAgDQoNCi0gUGlsaWggdGl0aWsgYXdhbCBzZWNhcmEgYWNhaywgbGFsdSBwaWxpaCBzZXRpYXAgZWxlbWVuICoqa2UtMTAqKiBkYXJpIGRhZnRhci4gIA0KDQoqKkNvbnRvaDoqKiAgDQpTZW9yYW5nIHBlbmVsaXRpIGluZ2luIG1lbnN1cnZlaSAqKnNldGlhcCBwZWxhbmdnYW4ga2UtNSBkYXJpIGRhZnRhciAxLjAwMCBwZW1iZWxpKiouIEppa2EgdGl0aWsgYXdhbG55YSBhZGFsYWggKiozKiosIG1ha2EgaW5kaXZpZHUgeWFuZyBkaXBpbGloIGFrYW4gYmVyYWRhIGRpIHVydXRhbiAqKmtlLTMsIGtlLTgsIGtlLTEzLCBrZS0xOCoqLCBkYW4gc2V0ZXJ1c255YS4gIA0KDQotLS0NCg0KIyMjICoqMy4gUGVuZ2FtYmlsYW4gU2FtcGVsIEJlcnN0cmF0YSAoU3RyYXRpZmllZCBTYW1wbGluZykqKiAgIA0KTWV0b2RlIHlhbmcgbWVtYmFnaSBwb3B1bGFzaSBrZSBkYWxhbSAqKnN1YmtlbG9tcG9rIChzdHJhdGEpKiogYmVyZGFzYXJrYW4ga2FyYWt0ZXJpc3RpayB5YW5nIHNhbWEsIGxhbHUgbWVtaWxpaCBzYW1wZWwgc2VjYXJhIGFjYWsgZGFyaSBtYXNpbmctbWFzaW5nIHN0cmF0YS4gIA0KDQoqKkNhcmEgS2VyamE6KiogIA0KIA0KLSBJZGVudGlmaWthc2kgKipzdHJhdGEgeWFuZyByZWxldmFuKiogKG1pc2FsbnlhLCB1c2lhLCB0aW5na2F0IHBlbmRhcGF0YW4sIHBlbmRpZGlrYW4pLiAgDQoNCi0gVGVudHVrYW4gKipwcm9wb3JzaSoqIHNldGlhcCBzdHJhdGEgZGFsYW0gcG9wdWxhc2kuICANCg0KLSBMYWt1a2FuICoqcGVuZ2FtYmlsYW4gc2FtcGVsIGFjYWsgZGFsYW0gc2V0aWFwIHN0cmF0YSoqIHVudHVrIG1lbmphZ2Ega2VzZWltYmFuZ2FuLiAgDQoNCiAqKkNvbnRvaDoqKiAgDQpTZWJ1YWggdW5pdmVyc2l0YXMgaW5naW4gbWVuc3VydmVpIG1haGFzaXN3YSBiZXJkYXNhcmthbiAqKnRhaHVuIGFrYWRlbWlrKio6ICANCg0KLSAqKjQwJSoqIG1haGFzaXN3YSBiYXJ1ICANCg0KLSAqKjMwJSoqIG1haGFzaXN3YSB0aW5na2F0IGR1YSAgDQoNCi0gKioyMCUqKiBtYWhhc2lzd2EgdGluZ2thdCB0aWdhICANCg0KLSAqKjEwJSoqIG1haGFzaXN3YSB0aW5na2F0IGVtcGF0ICANCg0KU2FtcGVsIHlhbmcgZGlhbWJpbCBha2FuIHRldGFwIG1lbmNlcm1pbmthbiBwcm9wb3JzaSBpbmksIHNlaGluZ2dhIGhhc2lsIHBlbmVsaXRpYW4gbGViaWggcmVwcmVzZW50YXRpZi4gIA0KDQotLS0NCg0KIyMjICoqS2VzaW1wdWxhbioqIA0KTWVuZ2d1bmFrYW4gbWV0b2RlICoqcGVuZ2FtYmlsYW4gc2FtcGVsIGFjYWsqKiBzZXBlcnRpICoqU1JTLCBzaXN0ZW1hdGlzLCBkYW4gYmVyc3RyYXRhKiogbWVtYmFudHUgbWVtYXN0aWthbiBiYWh3YSBzYW1wZWwgeWFuZyBkaXBpbGloICoqYWRpbCwgdGlkYWsgYmlhcywgZGFuIHJlcHJlc2VudGF0aWYqKi4gSW5pIG1lbmluZ2thdGthbiAqKmtlYW5kYWxhbiBkYW4gdmFsaWRpdGFzIHBlbmVsaXRpYW4qKiwgc2VoaW5nZ2EgaGFzaWxueWEgbGViaWggZGFwYXQgZGlnZW5lcmFsaXNhc2lrYW4ga2Ugc2VsdXJ1aCBwb3B1bGFzaS4gDQoNCg0KIyMgMS42IFRhbnRhbmdhbiBkYWxhbSBQZW5nYW1iaWxhbiBTYW1wZWwNCg0KUGVuZ2FtYmlsYW4gc2FtcGVsIGFkYWxhaCBsYW5na2FoIHBlbnRpbmcgZGFsYW0gcGVuZWxpdGlhbiwgdGFwaSB0aWRhayBzZWxhbHUgbXVkYWguIEFkYSBiZWJlcmFwYSAqKnRhbnRhbmdhbioqIHlhbmcgYmlzYSBtZW1lbmdhcnVoaSAqKmFrdXJhc2kgZGFuIGtlYW5kYWxhbioqIGhhc2lsIHBlbmVsaXRpYW4uIEJlcmlrdXQgaW5pIGFkYWxhaCBiZWJlcmFwYSB0YW50YW5nYW4gdXRhbWEsIHBlbnllYmFibnlhLCBkYW4gKipzb2x1c2kgcHJha3RpcyoqIHlhbmcgYmlzYSBkaXRlcmFwa2FuOiAgDQoNCg0KIyMjICoqMS4gQmlhcyBSZXNwb24gTm9uLVJlc3BvbnNpZioqIA0KKipUYW50YW5nYW46KiogIA0KUGVzZXJ0YSAqKnRpZGFrIG1hdSoqIGF0YXUgKip0aWRhayBiaXNhIG1lbmFuZ2dhcGkqKiBzdXJ2ZWksIHlhbmcgYmlzYSBtZW55ZWJhYmthbiBoYXNpbCB0aWRhayBha3VyYXQuICANCg0KKipQZW55ZWJhYjoqKiAgDQoNCi0gKipTdXJ2ZWkgdGVybGFsdSBwYW5qYW5nIGF0YXUgcnVtaXQqKi4gIA0KDQotIEtlbG9tcG9rIHRlcnRlbnR1ICoqa3VyYW5nIHRlcnRhcmlrKiogYXRhdSAqKnN1bGl0IGRpamFuZ2thdSoqLiAgDQoNCioqU29sdXNpOioqICANCg0KLSAqKlNlZGVyaGFuYWthbioqIGZvcm1hdCBzdXJ2ZWkgYWdhciBsZWJpaCBtdWRhaCBkaXBhaGFtaS4gIA0KDQotICoqS2lyaW0gcGVuZ2luZ2F0KiogdW50dWsgdGluZGFrIGxhbmp1dC4gIA0KDQotICoqVGF3YXJrYW4gaW5zZW50aWYqKiBrZWNpbCwgc2VwZXJ0aSB2b3VjaGVyIGF0YXUgaGFkaWFoLCB1bnR1ayBtZW5kb3JvbmcgcGFydGlzaXBhc2kuICANCg0KLS0tDQoNCiMjIyAqKjIuIEtlc2FsYWhhbiBLZXJhbmdrYSBTYW1wbGluZyoqIA0KKipUYW50YW5nYW46KiogIA0KRGFmdGFyIHlhbmcgZGlndW5ha2FuIHVudHVrIG1lbWlsaWggc2FtcGVsICoqdGlkYWsgYWt1cmF0KiogYXRhdSAqKnRpZGFrIGxlbmdrYXAqKiwgc2VoaW5nZ2EgYmViZXJhcGEga2Vsb21wb2sgdGlkYWsgdGVyd2FraWxpIGRlbmdhbiBiYWlrLiAgDQoNCioqUGVueWViYWI6KiogIA0KDQotICoqRGFmdGFyIHlhbmcgZGlndW5ha2FuIHN1ZGFoIGtlZGFsdXdhcnNhKiouICANCg0KLSAqKktsYXNpZmlrYXNpIHlhbmcgc2FsYWgqKiBhdGF1IGFkYW55YSAqKmR1cGxpa2FzaSoqIHBlc2VydGEuICANCg0KKipTb2x1c2k6KiogIA0KDQotICoqU2VsYWx1IHBlcmJhcnVpKioga2VyYW5na2Egc2FtcGVsIHNlY2FyYSBiZXJrYWxhLiAgDQoNCi0gKipQZXJpa3NhIGtlbWJhbGkqKiBzdW1iZXIgZGF0YSB1bnR1ayBtZW1hc3Rpa2FuIGtlYWt1cmF0YW5ueWEuICANCg0KLSAqKkd1bmFrYW4gcGVuZ2FtYmlsYW4gc2FtcGVsIGJlcnN0cmF0YSoqIHVudHVrIG1lbWFzdGlrYW4gc2V0aWFwIGtlbG9tcG9rIHRlcndha2lsaS4gIA0KDQotLS0NCg0KIyMjICoqMy4gVWt1cmFuIFNhbXBlbCBUaWRhayBNZW1hZGFpKiogDQoqKlRhbnRhbmdhbjoqKiAgDQpKdW1sYWggc2FtcGVsIHlhbmcgZGlwaWxpaCAqKnRlcmxhbHUga2VjaWwqKiBhdGF1ICoqdGlkYWsgY3VrdXAgbWV3YWtpbGkgcG9wdWxhc2kqKiwgc2VoaW5nZ2EgaGFzaWwgcGVuZWxpdGlhbiBrdXJhbmcgYWt1cmF0LiAgDQoNCioqUGVueWViYWI6KiogIA0KDQotICoqS2V0ZXJiYXRhc2FuIGJpYXlhKiogZGFuIHdha3R1IHVudHVrIG1lbmdhbWJpbCBzYW1wZWwgeWFuZyBiZXNhci4gIA0KDQotICoqU2FsYWggcGVyaGl0dW5nYW4qKiBkYWxhbSBtZW5lbnR1a2FuIHVrdXJhbiBzYW1wZWwuICANCg0KLSAqKlRpbmdrYXQgcHV0dXMgc2Vrb2xhaCoqIHlhbmcgdGluZ2dpIGRhbGFtIHN0dWRpIGphbmdrYSBwYW5qYW5nIChsb25naXR1ZGluYWwpLiAgDQoNCioqU29sdXNpOioqICANCg0KLSAqKkd1bmFrYW4gbWV0b2RlIHN0YXRpc3RpayoqIHlhbmcgdGVwYXQgdW50dWsgbWVuZ2hpdHVuZyAqKnVrdXJhbiBzYW1wZWwqKiB5YW5nIGRpYnV0dWhrYW4uICANCg0KLSAqKlBlcmhpdHVuZ2thbiBrZW11bmdraW5hbiBkcm9wb3V0KiogZGFsYW0gc3R1ZGkgamFuZ2thIHBhbmphbmcuICANCg0KLS0tDQoNCiMjIyAqKjQuIEtlbmRhbGEgQmlheWEgZGFuIFdha3R1KioNCioqVGFudGFuZ2FuOioqICANClBlbmdhbWJpbGFuIHNhbXBlbCBzZXJpbmcga2FsaSBtZW1idXR1aGthbiAqKmJpYXlhIHRpbmdnaSoqIGRhbiAqKndha3R1IHlhbmcgbGFtYSoqLiAgDQoNCioqUGVueWViYWI6KiogIA0KDQotICoqQmlheWEgdGluZ2dpIHVudHVrIHBlbmd1bXB1bGFuIGRhdGEgbGFwYW5nYW4qKi4gIA0KDQotICoqS2V0ZXJsYW1iYXRhbiBkYWxhbSBtZW5qYW5na2F1IHJlc3BvbmRlbioqLiAgDQoNCi0gKipNZW1idXR1aGthbiBwZXJhbGF0YW4gYXRhdSB0ZW5hZ2EgYWhsaSBraHVzdXMqKi4gIA0KDQoqKlNvbHVzaToqKiAgDQoNCi0gKipHdW5ha2FuIHN1cnZlaSBvbmxpbmUgeWFuZyBsZWJpaCBoZW1hdCBiaWF5YSoqLiAgDQoNCi0gKipPdG9tYXRpc2FzaSBwZW5ndW1wdWxhbiBkYXRhIHVudHVrIG1lbXBlcmNlcGF0IHByb3NlcyoqLiAgDQoNCi0gKipPcHRpbWFsa2FuIHN1bWJlciBkYXlhIHlhbmcgYWRhIHVudHVrIG1lbmd1cmFuZ2kgYmlheWEqKi4gIA0KDQotLS0NCg0KRGVuZ2FuICoqbWVuZ2F0YXNpIHRhbnRhbmdhbi10YW50YW5nYW4qKiBpbmksIHBlbmVsaXRpIGRhcGF0ICoqbWVuaW5na2F0a2FuIGtlYW5kYWxhbiBkYW4gZWZpc2llbnNpKiogcHJvc2VzIHBlbmdhbWJpbGFuIHNhbXBlbC4gSGFzaWxueWEsICoqZGF0YSB5YW5nIGRpcGVyb2xlaCBsZWJpaCByZXByZXNlbnRhdGlmKiogZGFuICoqdmFsaWQqKiwgc2VoaW5nZ2EgdGVtdWFuIHBlbmVsaXRpYW4gbGViaWggYWt1cmF0IGRhbiBkYXBhdCBkaWdlbmVyYWxpc2FzaWthbiBrZSBzZWx1cnVoIHBvcHVsYXNpLg0KDQojIyAxLjcgQXBsaWthc2kgUGVuZ2FtYmlsYW4gU2FtcGVsIGRpIEJlcmJhZ2FpIEluZHVzdHJpDQoNClBlbmdhbWJpbGFuIHNhbXBlbCB0dWggKipwZW50aW5nIGJhbmdldCoqIGJ1YXQgYmVyYmFnYWkgaW5kdXN0cmkuIERlbmdhbiBuZ3VtcHVsaW4gZGF0YSBkYXJpIHNlYmFnaWFuIGtlY2lsIHBvcHVsYXNpLCBwZXJ1c2FoYWFuIGJpc2EgKipkYXBldCB3YXdhc2FuIHlhbmcgYmVyZ3VuYSoqLCAqKmJpa2luIGtlcHV0dXNhbiB5YW5nIHRlcGF0KiosIGRhbiAqKm5pbmdrYXRpbiBlZmlzaWVuc2kqKi4gTmFoLCBpbmkgZGlhIGJlYmVyYXBhIGNvbnRvaCAqKmdpbWFuYSBwZW5nYW1iaWxhbiBzYW1wZWwgZGlwYWtlIGRpIGJlcmJhZ2FpIGJpZGFuZyoqOiAgDQoNCi0tLQ0KDQojIyMgKioxLiBSaXNldCBQYXNhcioqIA0KKipQZW5lcmFwYW5ueWE6KiogIA0KDQotICoqU3VydmVpKiogZGFuICoqa2Vsb21wb2sgZGlza3VzaSoqIGJ1YXQgbmd1bXB1bGluIHBlbmRhcGF0IGtvbnN1bWVuLiAgDQoNCioqVHVqdWFubnlhOioqICANCg0KLSBNZW5nZXJ0aSAqKnNlbGVyYSBrb25zdW1lbioqLCAqKnRyZW4gcGFzYXIqKiwgZGFuICoqcGVyaWxha3UgcGVsYW5nZ2FuKiogYmlhciBiaXNhIGJpa2luIHN0cmF0ZWdpIHBlbWFzYXJhbiB5YW5nIHRlcGF0LiAgDQoNCi0tLQ0KDQojIyMgKioyLiBQZWxheWFuYW4gS2VzZWhhdGFuKiogDQoqKlBlbmVyYXBhbm55YToqKiAgDQoNCi0gKipOZ3VtcHVsaW4gZGF0YSBwYXNpZW4qKiBkYW4gKip1amkga2xpbmlzKiogYnVhdCBhbmFsaXNpcyBrZXNlaGF0YW4uICANCg0KKipUdWp1YW5ueWE6KiogIA0KDQotICoqTmdpdHVuZyBwcmV2YWxlbnNpIHBlbnlha2l0KiosICoqbmdldGVzIGVmZWt0aXZpdGFzIG9iYXQqKiwgZGFuICoqbWVuZ2FuYWxpc2lzIHRyZW4ga2VzZWhhdGFuIG1hc3lhcmFrYXQqKiBiaWFyIGJpc2EgYmlraW4ga2ViaWpha2FuIGtlc2VoYXRhbiB5YW5nIGxlYmloIGJhaWsuICANCg0KLS0tDQoNCiMjIyAqKjMuIEtvbnRyb2wgS3VhbGl0YXMqKiANCioqUGVuZXJhcGFubnlhOioqICANCg0KLSAqKk5nYW1iaWwgc2FtcGVsIHByb2R1ayoqIGRpIHRpYXAgdGFoYXAgcHJvZHVrc2kgYnVhdCBkaWNlayBrdWFsaXRhc255YS4gIA0KDQoqKlR1anVhbm55YToqKiAgDQoNCi0gKipNYXN0aWluIGt1YWxpdGFzIHByb2R1ayoqIHNlc3VhaSBzdGFuZGFyIGRhbiAqKm5ndXJhbmdpbiBjYWNhdCBwcm9kdWtzaSoqLiAgDQoNCi0tLQ0KDQojIyMgKio0LiBLZXVhbmdhbioqIA0KKipQZW5lcmFwYW5ueWE6KiogIA0KDQotICoqTWVuZ2FuYWxpc2lzIHRyYW5zYWtzaSBrZXVhbmdhbioqIGRhbiAqKnRyZW4gcGFzYXIqKiBidWF0IGFtYmlsIGtlcHV0dXNhbi4gIA0KDQoqKlR1anVhbm55YToqKiAgDQoNCi0gKipNZW5pbGFpIHJpc2lrbyoqLCAqKm5nZWRldGVrc2kgcGVuaXB1YW4qKiwgZGFuICoqYmlraW4ga2VwdXR1c2FuIGludmVzdGFzaSoqIHlhbmcgbGViaWggdGVwYXQuICANCg0KLS0tDQoNCg0KRGVuZ2FuIHRla25payBwZW5nYW1iaWxhbiBzYW1wZWwgeWFuZyB0ZXBhdCwgcGVydXNhaGFhbiBiaXNhIGRhcGV0IGluZm9ybWFzaSBha3VyYXQgdGFucGEgaGFydXMgc3VydmVpIHNlbXVhIG9yYW5nLiBIYXNpbG55YSwgYmlheWEgbGViaWggaGVtYXQsIGtlcHV0dXNhbiBsZWJpaCBjZXJkYXMsIGRhbiBvcGVyYXNpb25hbCBqYWRpIGxlYmloIGVmaXNpZW4uIA0KDQoNCg0KDQoNCg==