UTS TEKNIK SAMPLING DAN SURVEY

Profile

Soal 1: Simulasi Kesalahan Sampling di Lapangan

a. Dua Jenis Kesalahan Sampling yang Terjadi

1. Kesalahan Sampling Acak (Random Sampling Error)

Ini terjadi karena jumlah responden yang diperoleh dari setiap kota berbeda dari target awal. Targetnya adalah 200 per kota (sampel proporsional), tetapi hasil aktual:

  • Kota A: 250 (kelebihan)
  • Kota B: 120 (kekurangan)
  • Kota C: 180 (kekurangan)

Ketidakseimbangan ini menciptakan penyimpangan dari populasi target.

2. Kesalahan Non-sampling (Non-sampling Error)

Kesalahan ini timbul karena masalah operasional survei di lapangan, seperti:

  • Kesulitan akses di Kota B (hanya 120 responden)
  • Potensi bias karena keterbatasan waktu/tim yang menyebabkan beberapa responden tidak bisa diwawancarai.

b. Penyesuaian Bobot (Weighting) untuk Representasi Proporsional

Total target = 600 responden Proporsi target per kota = 200 / 600 = ⅓ atau 0.333

Total aktual = 250 (A) + 120 (B) + 180 (C) = 550 responden

Bobot dihitung dengan: \[ \text{Bobot kota} = \frac{\text{Proporsi aktual}}{\text{Proporsi target}} \]

Perhitungan:

  • Kota A: \[ \text{Proporsi aktual A} = \frac{250}{550} = 0.4545 \Rightarrow \text{Bobot A} = \frac{0.333}{0.4545} \approx 0.732 \]

  • Kota B: \[ \text{Proporsi aktual B} = \frac{120}{550} = 0.2182 \Rightarrow \text{Bobot B} = \frac{0.333}{0.2182} \approx 1.527 \]

  • Kota C: \[ \text{Proporsi aktual C} = \frac{180}{550} = 0.3273 \Rightarrow \text{Bobot C} = \frac{0.333}{0.3273} \approx 1.017 \]

c. Visualisasi: Distribusi dan Pembobotan

Berikut adalah grafik batang (bar chart) yang menggambarkan distribusi aktual & target serta bobot koreksi:

## Warning: package 'plotly' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.3

Soal 2: Mendesain Survei dengan Pembobotan Waktu Puncak

a. Desain Pendekatan Sampling di Jam Sibuk

Tujuan:

Mengukur persepsi kenyamanan pengguna ojek online saat jam sibuk, yaitu:

  • Pagi:07.00–09.00
  • Sore:17.00–19.00

Desain Sampling:

Gunakan Stratified Time Sampling berdasarkan waktu:

  • Strata 1: Pagi (07.00–09.00)
  • Strata 2: Sore (17.00–19.00)

Daripada melakukan survei seharian penuh, fokus hanya pada dua jendela waktu tersebut. Lakukan sampling acak dalam setiap strata waktu.

b. Rancangan Waktu, Metode Pemilihan Responden, dan Justifikasi

Rancangan Waktu:

  • Hari kerja (Senin-Jumat)
  • Survei dilakukan selama 5 hari, masing-masing:
    • 07.00–09.00 (Pagi)
    • 17.00–19.00 (Sore)

Metode Pemilihan Responden:

  • Intercept Sampling di titik ramai (stasiun, halte, mall, kampus, dsb)
  • Responden dipilih secara systematic random tiap 3-5 menit, atau setiap pengguna yang turun dari ojek online.

Justifikasi Pemilihan Unit Sampling:

  • Unit sampling = pengguna aktif ojek online pada jam tersebut.
  • Metode ini menjamin keterwakilan waktu tanpa harus survei seharian penuh.
  • Fokus pada waktu sibuk yang relevan dengan pengalaman kenyamanan pengguna.

c. Penyesuaian Hasil Survei jika Proporsi Responden Tidak Sesuai

Diketahui:

  • Responden aktual:
    • Pagi: 60%
    • Sore: 40%
  • Data historis: Pengguna ojek dua kali lebih banyak dari pagi -> ideal distribusi:
    • Pagi: 33,3%
    • Sore: 66,7%

Penyesuaian Bobot:

Gunakan rumus bobot sama seperti soal 1: \[ \text{Bobot kota} = \frac{\text{Proporsi ideal}}{\text{Proporsi aktual}} \]

  • Pagi: \[ \text{Bobot pagi} = \frac{0.6}{0.333} \approx 0.555 \]

  • Sore: \[ \text{Bobot sore} = \frac{0.4}{0.667} \approx 1.667 \]

d. Visualisasi Distribusi Waktu dan Pembobotan

Soal 3: Desain Survei Evaluasi Kepuasan Mahasiswa terhadap Layanan Akademik

Permintaan:

  • Rancang 25 pertanyaan utama (variasi skala & bentuk)
  • Rancang sistem validasi instrumen
  • Tentukan metode distribusi dan uji statistik kuesioner
  • Simulasikan strategi sampling & pengolahan data awal

a. Desain Pertanyaan (25 Butir)

Pertanyaan dibagi ke dalam 5 aspek layanan:

  • KRS Online
  • Bimbingan Akademik
  • Pelayanan Administrasi
  • Akses Informasi Akademik
  • Bantuan Penyelesaian Studi
    No Aspek Pertanyaan Skala_Bentuk
    1 KRS Apakah Anda mengalami kendala saat menggunakan sistem KRS online? Ya/Tidak
    2 KRS Seberapa mudah Anda memahami tampilan antarmuka KRS? Likert 1–5
    3 KRS Berapa kali sistem KRS mengalami error saat Anda gunakan? Isian angka
    4 KRS Apa fitur yang paling membantu Anda di sistem KRS? Pilihan Ganda
    5 KRS Komentar Anda terkait sistem KRS online Esai singkat
    6 Bimbingan Seberapa sering Anda bertemu dosen wali? Pilihan Ganda
    7 Bimbingan Dosen wali saya memberikan solusi yang tepat atas permasalahan akademik saya Likert 1–5
    8 Bimbingan Apakah Anda merasa didengarkan oleh dosen wali Anda? Ya/Tidak
    9 Bimbingan Seberapa puas Anda dengan kualitas bimbingan akademik? Likert 1–5
    10 Bimbingan Saran Anda untuk meningkatkan bimbingan akademik Esai
    11 Administrasi Bagaimana kemudahan proses administrasi akademik? Likert 1–5
    12 Administrasi Pernahkah Anda mengajukan surat akademik (cuti, aktif kuliah, dll)? Ya/Tidak
    13 Administrasi Seberapa cepat layanan administrasi merespon permintaan Anda? Likert 1–5
    14 Administrasi Apakah staf admin ramah dan membantu? Ya/Tidak
    15 Administrasi Komentar Anda mengenai layanan administrasi Esai
    16 Info Akademik Seberapa mudah Anda mendapatkan informasi terkait akademik (jadwal, nilai)? Likert 1–5
    17 Info Akademik Apa sumber utama Anda mendapatkan info akademik? Pilihan Ganda
    18 Info Akademik Apakah informasi yang diberikan sering berubah tanpa pemberitahuan? Ya/Tidak
    19 Info Akademik Apakah kampus punya saluran informasi yang efektif? Likert 1–5
    20 Info Akademik Saran Anda untuk perbaikan akses info akademik Esai
    21 Bantuan Studi Apakah Anda tahu cara mendapatkan bantuan penyelesaian studi? Ya/Tidak
    22 Bantuan Studi Layanan bantuan studi yang pernah Anda gunakan Pilihan Ganda
    23 Bantuan Studi Apakah layanan tersebut membantu menyelesaikan masalah Anda? Ya/Tidak
    24 Bantuan Studi Seberapa puas Anda dengan layanan bantuan studi? Likert 1–5
    25 Bantuan Studi Harapan Anda terkait layanan penyelesaian studi Esai

b. Skema Validasi Instrumen

1. Validasi Isi (Content Validity):

  • Melibatkan pakar akademik/penelitian untuk menilai relevansi setiap item.

2. Validasi Konstruk (Construct Validity):

  • Melalui Analisis Faktor (Exploratory Factor Analysis / EFA) untuk mengelompokkan item sesuai dimensi layanan.

3. Reliabilitas:

  • Uji konsistensi internal menggunakan Cronbach’s Alpha, target ≥ 0.7.

c. Strategi Distribusi dan Sampling

Distribusi Kuesioner:

  • Google Form atau Microsoft Form
  • Dibagikan via email kampus, grup WA, media sosial resmi kampus

Strategi Sampling:

  • Stratified Random Sampling berdasarkan:
    • Fakultas
    • Tingkat semester (awal, tengah, akhir)
  • Target jumlah responden: minimal 150 mahasiswa

d. Simulasi Pengolahan Data & Visualisasi Awal

Simulasi Responden (Dummy Data 50 Orang):

  • Menggunakan Python & Pandas
  • Analisis Awal: Distribusi nilai kepuasan (Likert) tiap aspek

Visualisasi:

LS0tDQp0aXRsZTogIlVUUyBURUtOSUsgU0FNUExJTkcgREFOIFNVUlZFWSINCg0KYXV0aG9yOiANCiAgICAtICJOYWJpbGEgQW5nZ2l0YSBQdXRyaSINCiAgICANCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDoNCiAgcm1kZm9ybWF0czo6cmVhZHRoZWRvd246DQogICAgc2VsZl9jb250YWluZWQ6IHRydWUNCiAgICB0aHVtYm5haWxzOiB0cnVlDQogICAgbGlnaHRib3g6IHRydWUNCiAgICBnYWxsZXJ5OiB0cnVlDQogICAgbGliX2RpcjogbGlicw0KICAgIGRmX3ByaW50OiAicGFnZWQiDQogICAgY29kZV9mb2xkaW5nOiAic2hvdyINCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBjc3M6ICJzdHlsZS9zdHlsZS5jc3MiDQotLS0NCjxpbWcgc3JjPSJpbWcvcHJvZmlsZS5qcGciIGFsdD0iUHJvZmlsZSIgaWQ9ImxvZ28tdXRhbWEiIHN0eWxlPSJ3aWR0aDozMDBweDsgZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiLz4NCg0KIyAqKlNvYWwgMTogU2ltdWxhc2kgS2VzYWxhaGFuIFNhbXBsaW5nIGRpIExhcGFuZ2FuKioNCg0KIyMgKiphLiBEdWEgSmVuaXMgS2VzYWxhaGFuIFNhbXBsaW5nIHlhbmcgVGVyamFkaSoqDQoNCioqMS4gS2VzYWxhaGFuIFNhbXBsaW5nIEFjYWsgKFJhbmRvbSBTYW1wbGluZyBFcnJvcikqKg0KDQpJbmkgdGVyamFkaSBrYXJlbmEganVtbGFoIHJlc3BvbmRlbiB5YW5nIGRpcGVyb2xlaCBkYXJpIHNldGlhcCBrb3RhIGJlcmJlZGEgZGFyaSB0YXJnZXQgYXdhbC4gVGFyZ2V0bnlhIGFkYWxhaCAyMDAgcGVyIGtvdGEgKHNhbXBlbCBwcm9wb3JzaW9uYWwpLCB0ZXRhcGkgaGFzaWwgYWt0dWFsOg0KDQotIEtvdGEgQTogMjUwIChrZWxlYmloYW4pDQotIEtvdGEgQjogMTIwIChrZWt1cmFuZ2FuKQ0KLSBLb3RhIEM6IDE4MCAoa2VrdXJhbmdhbikNCg0KS2V0aWRha3NlaW1iYW5nYW4gaW5pIG1lbmNpcHRha2FuIHBlbnlpbXBhbmdhbiBkYXJpIHBvcHVsYXNpIHRhcmdldC4NCg0KKioyLiBLZXNhbGFoYW4gTm9uLXNhbXBsaW5nIChOb24tc2FtcGxpbmcgRXJyb3IpKioNCg0KS2VzYWxhaGFuIGluaSB0aW1idWwga2FyZW5hIG1hc2FsYWggb3BlcmFzaW9uYWwgc3VydmVpIGRpIGxhcGFuZ2FuLCBzZXBlcnRpOg0KDQotIEtlc3VsaXRhbiBha3NlcyBkaSBLb3RhIEIgKGhhbnlhIDEyMCByZXNwb25kZW4pDQotIFBvdGVuc2kgYmlhcyBrYXJlbmEga2V0ZXJiYXRhc2FuIHdha3R1L3RpbSB5YW5nIG1lbnllYmFia2FuIGJlYmVyYXBhIHJlc3BvbmRlbiB0aWRhayBiaXNhIGRpd2F3YW5jYXJhaS4NCg0KDQojIyAqKmIuICBQZW55ZXN1YWlhbiBCb2JvdCAoV2VpZ2h0aW5nKSB1bnR1ayBSZXByZXNlbnRhc2kgUHJvcG9yc2lvbmFsKioNCg0KVG90YWwgdGFyZ2V0ID0gNjAwIHJlc3BvbmRlbg0KUHJvcG9yc2kgdGFyZ2V0IHBlciBrb3RhID0gMjAwIC8gNjAwID0gKirihZMgYXRhdSAwLjMzMyoqDQoNClRvdGFsIGFrdHVhbCA9IDI1MCAoQSkgKyAxMjAgKEIpICsgMTgwIChDKSA9IDU1MCByZXNwb25kZW4NCg0KQm9ib3QgZGloaXR1bmcgZGVuZ2FuOg0KXFsNClx0ZXh0e0JvYm90IGtvdGF9ID0gXGZyYWN7XHRleHR7UHJvcG9yc2kgYWt0dWFsfX17XHRleHR7UHJvcG9yc2kgdGFyZ2V0fX0NClxdDQoNCioqUGVyaGl0dW5nYW4qKjoNCg0KLSBLb3RhICoqQSoqOg0KXFsNClx0ZXh0e1Byb3BvcnNpIGFrdHVhbCBBfSA9IFxmcmFjezI1MH17NTUwfSA9IDAuNDU0NSBcUmlnaHRhcnJvdyBcdGV4dHtCb2JvdCBBfSA9IFxmcmFjezAuMzMzfXswLjQ1NDV9IFxhcHByb3ggMC43MzINClxdDQoNCi0gS290YSAqKkIqKjoNClxbDQpcdGV4dHtQcm9wb3JzaSBha3R1YWwgQn0gPSBcZnJhY3sxMjB9ezU1MH0gPSAwLjIxODIgXFJpZ2h0YXJyb3cgXHRleHR7Qm9ib3QgQn0gPSBcZnJhY3swLjMzM317MC4yMTgyfSBcYXBwcm94IDEuNTI3DQpcXQ0KDQotIEtvdGEgKipDKio6DQpcWw0KXHRleHR7UHJvcG9yc2kgYWt0dWFsIEN9ID0gXGZyYWN7MTgwfXs1NTB9ID0gMC4zMjczIFxSaWdodGFycm93IFx0ZXh0e0JvYm90IEN9ID0gXGZyYWN7MC4zMzN9ezAuMzI3M30gXGFwcHJveCAxLjAxNw0KXF0NCg0KIyMgKipjLiBWaXN1YWxpc2FzaTogRGlzdHJpYnVzaSBkYW4gUGVtYm9ib3RhbioqDQoNCkJlcmlrdXQgYWRhbGFoIGdyYWZpayBiYXRhbmcgKGJhciBjaGFydCkgeWFuZyBtZW5nZ2FtYmFya2FuIGRpc3RyaWJ1c2kgYWt0dWFsICYgdGFyZ2V0IHNlcnRhIGJvYm90IGtvcmVrc2k6DQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSx9DQojIFNlbWJ1bnlpa2FuIHBlc2FuIHNhYXQgbG9hZCBwYWNrYWdlDQpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMoew0KICBsaWJyYXJ5KHBsb3RseSkNCn0pDQoNCiMgRGF0YQ0Ka290YSA8LSBjKCJLb3RhIEEiLCAiS290YSBCIiwgIktvdGEgQyIpDQp0YXJnZXQgPC0gYygyMDAsIDIwMCwgMjAwKQ0KYWt0dWFsIDwtIGMoMjUwLCAxMjAsIDE4MCkNCnRvdGFsX2FrdHVhbCA8LSBzdW0oYWt0dWFsKQ0KDQojIEhpdHVuZyBwcm9wb3JzaSBkYW4gYm9ib3QNCnByb3BfdGFyZ2V0IDwtIDIwMCAvIDYwMA0KcHJvcF9ha3R1YWwgPC0gYWt0dWFsIC8gdG90YWxfYWt0dWFsDQpib2JvdCA8LSBwcm9wX3RhcmdldCAvIHByb3BfYWt0dWFsDQoNCiMgQmFyIGNoYXJ0DQpmaWcgPC0gcGxvdF9seSgNCiAgeCA9IGtvdGEsDQogIHkgPSB0YXJnZXQsDQogIHR5cGUgPSAnYmFyJywNCiAgbmFtZSA9ICdUYXJnZXQnLA0KICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ3NreWJsdWUnKQ0KKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBha3R1YWwsDQogICAgbmFtZSA9ICdBa3R1YWwnLA0KICAgIHR5cGUgPSAnYmFyJywNCiAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ29yYW5nZScpDQogICkgJT4lDQogIGxheW91dCgNCiAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiSnVtbGFoIFJlc3BvbmRlbiIpLA0KICAgIHRpdGxlID0gIkRpc3RyaWJ1c2kgUmVzcG9uZGVuIGRhbiBCb2JvdCBQZW55ZXN1YWlhbiBwZXIgS290YSIsDQogICAgYmFybW9kZSA9ICdncm91cCcNCiAgKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHggPSBrb3RhLA0KICAgIHkgPSBib2JvdCwNCiAgICB0eXBlID0gJ3NjYXR0ZXInLA0KICAgIG1vZGUgPSAnbGluZXMrbWFya2VycycsDQogICAgeWF4aXMgPSAieTIiLA0KICAgIG5hbWUgPSAiQm9ib3QgUGVueWVzdWFpYW4iLA0KICAgIGxpbmUgPSBsaXN0KGNvbG9yID0gJ2dyZWVuJyksDQogICAgbWFya2VyID0gbGlzdChjb2xvciA9ICdncmVlbicpDQogICkgJT4lDQogIGxheW91dCgNCiAgICB5YXhpczIgPSBsaXN0KA0KICAgICAgb3ZlcmxheWluZyA9ICJ5IiwNCiAgICAgIHNpZGUgPSAicmlnaHQiLA0KICAgICAgdGl0bGUgPSAiQm9ib3QgUGVueWVzdWFpYW4iLA0KICAgICAgc2hvd2dyaWQgPSBGQUxTRQ0KICAgICkNCiAgKQ0KDQpmaWcNCmBgYA0KDQojICoqU29hbCAyOiBNZW5kZXNhaW4gU3VydmVpIGRlbmdhbiBQZW1ib2JvdGFuIFdha3R1IFB1bmNhayoqDQoNCiMjICoqYS4gRGVzYWluIFBlbmRla2F0YW4gU2FtcGxpbmcgZGkgSmFtIFNpYnVrKioNCg0KKipUdWp1YW4qKjoNCg0KTWVuZ3VrdXIgKipwZXJzZXBzaSBrZW55YW1hbmFuIHBlbmdndW5hIG9qZWsgb25saW5lIHNhYXQgamFtIHNpYnVrKiosIHlhaXR1Og0KDQotICoqUGFnaSoqOjA3LjAw4oCTMDkuMDANCi0gKipTb3JlKio6MTcuMDDigJMxOS4wMA0KDQoqKkRlc2FpbiBTYW1wbGluZyoqOg0KDQpHdW5ha2FuICoqU3RyYXRpZmllZCBUaW1lIFNhbXBsaW5nKiogYmVyZGFzYXJrYW4gd2FrdHU6DQoNCi0gKipTdHJhdGEgMSoqOiBQYWdpICgwNy4wMOKAkzA5LjAwKQ0KLSAqKlN0cmF0YSAyKio6IFNvcmUgKDE3LjAw4oCTMTkuMDApDQoNCkRhcmlwYWRhIG1lbGFrdWthbiBzdXJ2ZWkgc2VoYXJpYW4gcGVudWgsIGZva3VzIGhhbnlhIHBhZGEgZHVhIGplbmRlbGEgd2FrdHUgdGVyc2VidXQuIExha3VrYW4gc2FtcGxpbmcgYWNhayBkYWxhbSBzZXRpYXAgc3RyYXRhIHdha3R1Lg0KDQojIyAqKmIuIFJhbmNhbmdhbiBXYWt0dSwgTWV0b2RlIFBlbWlsaWhhbiBSZXNwb25kZW4sIGRhbiBKdXN0aWZpa2FzaSoqDQoNCioqUmFuY2FuZ2FuIFdha3R1Kio6IA0KDQotIEhhcmkga2VyamEgKFNlbmluLUp1bWF0KQ0KLSBTdXJ2ZWkgZGlsYWt1a2FuIHNlbGFtYSA1IGhhcmksIG1hc2luZy1tYXNpbmc6DQogICAgLSAwNy4wMOKAkzA5LjAwIChQYWdpKQ0KICAgIC0gMTcuMDDigJMxOS4wMCAoU29yZSkNCg0KKipNZXRvZGUgUGVtaWxpaGFuIFJlc3BvbmRlbioqOg0KDQotICoqSW50ZXJjZXB0IFNhbXBsaW5nKiogZGkgdGl0aWsgcmFtYWkgKHN0YXNpdW4sIGhhbHRlLCBtYWxsLCBrYW1wdXMsIGRzYikNCi0gUmVzcG9uZGVuIGRpcGlsaWggc2VjYXJhICoqc3lzdGVtYXRpYyByYW5kb20qKiB0aWFwIDMtNSBtZW5pdCwgYXRhdSBzZXRpYXAgcGVuZ2d1bmEgeWFuZyB0dXJ1biBkYXJpIG9qZWsgb25saW5lLg0KDQoqKkp1c3RpZmlrYXNpIFBlbWlsaWhhbiBVbml0IFNhbXBsaW5nKio6DQoNCi0gVW5pdCBzYW1wbGluZyA9IHBlbmdndW5hIGFrdGlmIG9qZWsgb25saW5lIHBhZGEgamFtIHRlcnNlYnV0Lg0KLSBNZXRvZGUgaW5pIG1lbmphbWluIGtldGVyd2FraWxhbiB3YWt0dSB0YW5wYSBoYXJ1cyBzdXJ2ZWkgc2VoYXJpYW4gcGVudWguDQotIEZva3VzIHBhZGEgd2FrdHUgc2lidWsgeWFuZyByZWxldmFuIGRlbmdhbiBwZW5nYWxhbWFuIGtlbnlhbWFuYW4gcGVuZ2d1bmEuDQoNCg0KIyMgKipjLiBQZW55ZXN1YWlhbiBIYXNpbCBTdXJ2ZWkgamlrYSBQcm9wb3JzaSBSZXNwb25kZW4gVGlkYWsgU2VzdWFpKioNCg0KRGlrZXRhaHVpOg0KDQotIFJlc3BvbmRlbiBha3R1YWw6DQogICAgLSBQYWdpOiA2MCUNCiAgICAtIFNvcmU6IDQwJQ0KDQotIERhdGEgaGlzdG9yaXM6IFBlbmdndW5hIG9qZWsgKipkdWEga2FsaSBsZWJpaCBiYW55YWsqKiBkYXJpIHBhZ2kgLT4gaWRlYWwgZGlzdHJpYnVzaToNCiAgICAtIFBhZ2k6IDMzLDMlDQogICAgLSBTb3JlOiA2Niw3JQ0KICAgIA0KKipQZW55ZXN1YWlhbiBCb2JvdCoqOg0KDQpHdW5ha2FuIHJ1bXVzIGJvYm90IHNhbWEgc2VwZXJ0aSBzb2FsIDE6DQpcWw0KXHRleHR7Qm9ib3Qga290YX0gPSBcZnJhY3tcdGV4dHtQcm9wb3JzaSBpZGVhbH19e1x0ZXh0e1Byb3BvcnNpIGFrdHVhbH19DQpcXQ0KDQotICoqUGFnaSoqOiANClxbDQpcdGV4dHtCb2JvdCBwYWdpfSA9IFxmcmFjezAuNn17MC4zMzN9IFxhcHByb3ggMC41NTUNClxdDQoNCi0gKipTb3JlKio6DQpcWw0KXHRleHR7Qm9ib3Qgc29yZX0gPSBcZnJhY3swLjR9ezAuNjY3fSBcYXBwcm94IDEuNjY3DQpcXQ0KDQojIyAqKmQuIFZpc3VhbGlzYXNpIERpc3RyaWJ1c2kgV2FrdHUgZGFuIFBlbWJvYm90YW4qKg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsfQ0KbGlicmFyeShwbG90bHkpDQoNCiMgRGF0YQ0Kd2FrdHUgPC0gYygiUGFnaSAoMDctMDkpIiwgIlNvcmUgKDE3LTE5KSIpDQpyZXNwb25kZW5fYWt0dWFsIDwtIGMoNjAsIDQwKQ0KcHJvcF9pZGVhbCA8LSBjKDMzLjMsIDY2LjcpDQpib2JvdCA8LSBwcm9wX2lkZWFsIC8gcmVzcG9uZGVuX2FrdHVhbA0KDQojIFBsb3QgYmF0YW5nIGRpc3RyaWJ1c2kgYWt0dWFsIGRhbiBpZGVhbA0KcCA8LSBwbG90X2x5KHggPSB3YWt0dSwgeSA9IHJlc3BvbmRlbl9ha3R1YWwsIHR5cGUgPSAnYmFyJywgbmFtZSA9ICdBa3R1YWwnLA0KICAgICAgICAgICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAnbGlnaHRjb3JhbCcpKSAlPiUNCiAgYWRkX3RyYWNlKHkgPSBwcm9wX2lkZWFsLCBuYW1lID0gJ0lkZWFsJywgdHlwZSA9ICdiYXInLA0KICAgICAgICAgICAgbWFya2VyID0gbGlzdChjb2xvciA9ICdsaWdodGdyZWVuJykpICU+JQ0KICBsYXlvdXQoDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlBlcnNlbnRhc2UgUmVzcG9uZGVuICglKSIpLA0KICAgIHRpdGxlID0gIkRpc3RyaWJ1c2kgQWt0dWFsIHZzIElkZWFsIiwNCiAgICBiYXJtb2RlID0gJ2dyb3VwJw0KICApDQoNCiMgVGFtYmFoa2FuIGdhcmlzIGJvYm90DQpwIDwtIHAgJT4lDQogIGFkZF90cmFjZSh4ID0gd2FrdHUsIHkgPSBib2JvdCAqIDEwMCwgdHlwZSA9ICdzY2F0dGVyJywgbW9kZSA9ICdsaW5lcyttYXJrZXJzJywNCiAgICAgICAgICAgIHlheGlzID0gInkyIiwgbmFtZSA9ICJCb2JvdCBQZW55ZXN1YWlhbiIsIGxpbmUgPSBsaXN0KGNvbG9yID0gJ2JsdWUnKSkgJT4lDQogIGxheW91dCgNCiAgICB5YXhpczIgPSBsaXN0KA0KICAgICAgb3ZlcmxheWluZyA9ICJ5IiwNCiAgICAgIHNpZGUgPSAicmlnaHQiLA0KICAgICAgdGl0bGUgPSAiQm9ib3QgUGVueWVzdWFpYW4iLA0KICAgICAgc2hvd2dyaWQgPSBGQUxTRQ0KICAgICkNCiAgKQ0KDQpwDQpgYGANCg0KIyAqKlNvYWwgMzogRGVzYWluIFN1cnZlaSBFdmFsdWFzaSBLZXB1YXNhbiBNYWhhc2lzd2EgdGVyaGFkYXAgTGF5YW5hbiBBa2FkZW1payoqDQoNCioqUGVybWludGFhbioqOg0KDQotIFJhbmNhbmcgMjUgcGVydGFueWFhbiB1dGFtYSAodmFyaWFzaSBza2FsYSAmIGJlbnR1aykNCi0gUmFuY2FuZyBzaXN0ZW0gdmFsaWRhc2kgaW5zdHJ1bWVuDQotIFRlbnR1a2FuIG1ldG9kZSBkaXN0cmlidXNpIGRhbiB1amkgc3RhdGlzdGlrIGt1ZXNpb25lcg0KLSBTaW11bGFzaWthbiBzdHJhdGVnaSBzYW1wbGluZyAmIHBlbmdvbGFoYW4gZGF0YSBhd2FsDQoNCiMjICoqYS4gRGVzYWluIFBlcnRhbnlhYW4gKDI1IEJ1dGlyKSoqDQoNClBlcnRhbnlhYW4gZGliYWdpIGtlIGRhbGFtIDUgYXNwZWsgbGF5YW5hbjoNCg0KLSBLUlMgT25saW5lDQotIEJpbWJpbmdhbiBBa2FkZW1paw0KLSBQZWxheWFuYW4gQWRtaW5pc3RyYXNpDQotIEFrc2VzIEluZm9ybWFzaSBBa2FkZW1paw0KLSBCYW50dWFuIFBlbnllbGVzYWlhbiBTdHVkaQ0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQojIEluc3RhbGwgZGFuIHBhbmdnaWwgbGlicmFyeSBqaWthIGJlbHVtIGFkYQ0KaWYgKCFyZXF1aXJlKCJrYWJsZUV4dHJhIikpIGluc3RhbGwucGFja2FnZXMoImthYmxlRXh0cmEiLCBkZXBlbmRlbmNpZXMgPSBUUlVFKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KDQojIERhdGEga3Vlc2lvbmVyDQprdWVzaW9uZXIgPC0gZGF0YS5mcmFtZSgNCiAgTm8gPSAxOjI1LA0KICBBc3BlayA9IGMoDQogICAgcmVwKCJLUlMiLCA1KSwNCiAgICByZXAoIkJpbWJpbmdhbiIsIDUpLA0KICAgIHJlcCgiQWRtaW5pc3RyYXNpIiwgNSksDQogICAgcmVwKCJJbmZvIEFrYWRlbWlrIiwgNSksDQogICAgcmVwKCJCYW50dWFuIFN0dWRpIiwgNSkNCiAgKSwNCiAgUGVydGFueWFhbiA9IGMoDQogICAgIkFwYWthaCBBbmRhIG1lbmdhbGFtaSBrZW5kYWxhIHNhYXQgbWVuZ2d1bmFrYW4gc2lzdGVtIEtSUyBvbmxpbmU/IiwNCiAgICAiU2ViZXJhcGEgbXVkYWggQW5kYSBtZW1haGFtaSB0YW1waWxhbiBhbnRhcm11a2EgS1JTPyIsDQogICAgIkJlcmFwYSBrYWxpIHNpc3RlbSBLUlMgbWVuZ2FsYW1pIGVycm9yIHNhYXQgQW5kYSBndW5ha2FuPyIsDQogICAgIkFwYSBmaXR1ciB5YW5nIHBhbGluZyBtZW1iYW50dSBBbmRhIGRpIHNpc3RlbSBLUlM/IiwNCiAgICAiS29tZW50YXIgQW5kYSB0ZXJrYWl0IHNpc3RlbSBLUlMgb25saW5lIiwNCiAgICANCiAgICAiU2ViZXJhcGEgc2VyaW5nIEFuZGEgYmVydGVtdSBkb3NlbiB3YWxpPyIsDQogICAgIkRvc2VuIHdhbGkgc2F5YSBtZW1iZXJpa2FuIHNvbHVzaSB5YW5nIHRlcGF0IGF0YXMgcGVybWFzYWxhaGFuIGFrYWRlbWlrIHNheWEiLA0KICAgICJBcGFrYWggQW5kYSBtZXJhc2EgZGlkZW5nYXJrYW4gb2xlaCBkb3NlbiB3YWxpIEFuZGE/IiwNCiAgICAiU2ViZXJhcGEgcHVhcyBBbmRhIGRlbmdhbiBrdWFsaXRhcyBiaW1iaW5nYW4gYWthZGVtaWs/IiwNCiAgICAiU2FyYW4gQW5kYSB1bnR1ayBtZW5pbmdrYXRrYW4gYmltYmluZ2FuIGFrYWRlbWlrIiwNCiAgICANCiAgICAiQmFnYWltYW5hIGtlbXVkYWhhbiBwcm9zZXMgYWRtaW5pc3RyYXNpIGFrYWRlbWlrPyIsDQogICAgIlBlcm5haGthaCBBbmRhIG1lbmdhanVrYW4gc3VyYXQgYWthZGVtaWsgKGN1dGksIGFrdGlmIGt1bGlhaCwgZGxsKT8iLA0KICAgICJTZWJlcmFwYSBjZXBhdCBsYXlhbmFuIGFkbWluaXN0cmFzaSBtZXJlc3BvbiBwZXJtaW50YWFuIEFuZGE/IiwNCiAgICAiQXBha2FoIHN0YWYgYWRtaW4gcmFtYWggZGFuIG1lbWJhbnR1PyIsDQogICAgIktvbWVudGFyIEFuZGEgbWVuZ2VuYWkgbGF5YW5hbiBhZG1pbmlzdHJhc2kiLA0KICAgIA0KICAgICJTZWJlcmFwYSBtdWRhaCBBbmRhIG1lbmRhcGF0a2FuIGluZm9ybWFzaSB0ZXJrYWl0IGFrYWRlbWlrIChqYWR3YWwsIG5pbGFpKT8iLA0KICAgICJBcGEgc3VtYmVyIHV0YW1hIEFuZGEgbWVuZGFwYXRrYW4gaW5mbyBha2FkZW1paz8iLA0KICAgICJBcGFrYWggaW5mb3JtYXNpIHlhbmcgZGliZXJpa2FuIHNlcmluZyBiZXJ1YmFoIHRhbnBhIHBlbWJlcml0YWh1YW4/IiwNCiAgICAiQXBha2FoIGthbXB1cyBwdW55YSBzYWx1cmFuIGluZm9ybWFzaSB5YW5nIGVmZWt0aWY/IiwNCiAgICAiU2FyYW4gQW5kYSB1bnR1ayBwZXJiYWlrYW4gYWtzZXMgaW5mbyBha2FkZW1payIsDQogICAgDQogICAgIkFwYWthaCBBbmRhIHRhaHUgY2FyYSBtZW5kYXBhdGthbiBiYW50dWFuIHBlbnllbGVzYWlhbiBzdHVkaT8iLA0KICAgICJMYXlhbmFuIGJhbnR1YW4gc3R1ZGkgeWFuZyBwZXJuYWggQW5kYSBndW5ha2FuIiwNCiAgICAiQXBha2FoIGxheWFuYW4gdGVyc2VidXQgbWVtYmFudHUgbWVueWVsZXNhaWthbiBtYXNhbGFoIEFuZGE/IiwNCiAgICAiU2ViZXJhcGEgcHVhcyBBbmRhIGRlbmdhbiBsYXlhbmFuIGJhbnR1YW4gc3R1ZGk/IiwNCiAgICAiSGFyYXBhbiBBbmRhIHRlcmthaXQgbGF5YW5hbiBwZW55ZWxlc2FpYW4gc3R1ZGkiDQogICksDQogIFNrYWxhX0JlbnR1ayA9IGMoDQogICAgIllhL1RpZGFrIiwgIkxpa2VydCAx4oCTNSIsICJJc2lhbiBhbmdrYSIsICJQaWxpaGFuIEdhbmRhIiwgIkVzYWkgc2luZ2thdCIsDQogICAgIlBpbGloYW4gR2FuZGEiLCAiTGlrZXJ0IDHigJM1IiwgIllhL1RpZGFrIiwgIkxpa2VydCAx4oCTNSIsICJFc2FpIiwNCiAgICAiTGlrZXJ0IDHigJM1IiwgIllhL1RpZGFrIiwgIkxpa2VydCAx4oCTNSIsICJZYS9UaWRhayIsICJFc2FpIiwNCiAgICAiTGlrZXJ0IDHigJM1IiwgIlBpbGloYW4gR2FuZGEiLCAiWWEvVGlkYWsiLCAiTGlrZXJ0IDHigJM1IiwgIkVzYWkiLA0KICAgICJZYS9UaWRhayIsICJQaWxpaGFuIEdhbmRhIiwgIllhL1RpZGFrIiwgIkxpa2VydCAx4oCTNSIsICJFc2FpIg0KICApLA0KICBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UNCikNCg0KIyBNZW5hbXBpbGthbiB0YWJlbCBkZW5nYW4gc3R5bGluZw0Ka3Vlc2lvbmVyICU+JQ0KICBrYmwoYWxpZ24gPSAiYyIpICU+JQ0KICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLCBmdWxsX3dpZHRoID0gRikgJT4lDQogIHJvd19zcGVjKDAsIGJvbGQgPSBUUlVFLCBiYWNrZ3JvdW5kID0gIiM0Q0FGNTAiLCBjb2xvciA9ICJ3aGl0ZSIpICU+JQ0KICBjb2x1bW5fc3BlYygyLCBiYWNrZ3JvdW5kID0gIiNFOEY1RTkiKSAlPiUgICMgS29sb20gQXNwZWsgd2FybmEgaGlqYXUgbXVkYQ0KICBjb2x1bW5fc3BlYyg0LCBiYWNrZ3JvdW5kID0gIiNGRkY5QzQiKSAgICAgICMgS29sb20gU2thbGEvQmVudHVrIHdhcm5hIGt1bmluZyBtdWRhDQpgYGANCg0KIyMgKipiLiBTa2VtYSBWYWxpZGFzaSBJbnN0cnVtZW4qKg0KDQoqKjEuIFZhbGlkYXNpIElzaSAoQ29udGVudCBWYWxpZGl0eSkqKjoNCiAgICAgIA0KICAgLSBNZWxpYmF0a2FuIHBha2FyIGFrYWRlbWlrL3BlbmVsaXRpYW4gdW50dWsgbWVuaWxhaSByZWxldmFuc2kgc2V0aWFwIGl0ZW0uDQogICANCioqMi4gVmFsaWRhc2kgS29uc3RydWsgKENvbnN0cnVjdCBWYWxpZGl0eSkqKjoNCg0KICAtIE1lbGFsdWkgKipBbmFsaXNpcyBGYWt0b3IgKEV4cGxvcmF0b3J5IEZhY3RvciBBbmFseXNpcyAvIEVGQSkqKiB1bnR1ayBtZW5nZWxvbXBva2thbiBpdGVtIHNlc3VhaSBkaW1lbnNpIGxheWFuYW4uDQogIA0KKiozLiBSZWxpYWJpbGl0YXMqKjoNCg0KICAtIFVqaSBrb25zaXN0ZW5zaSBpbnRlcm5hbCBtZW5nZ3VuYWthbiAqKkNyb25iYWNo4oCZcyBBbHBoYSoqLCB0YXJnZXQg4omlIDAuNy4NCg0KIyMgKipjLiBTdHJhdGVnaSBEaXN0cmlidXNpIGRhbiBTYW1wbGluZyoqDQoNCioqRGlzdHJpYnVzaSBLdWVzaW9uZXIqKjoNCg0KICAtIEdvb2dsZSBGb3JtIGF0YXUgTWljcm9zb2Z0IEZvcm0NCiAgLSBEaWJhZ2lrYW4gdmlhIGVtYWlsIGthbXB1cywgZ3J1cCBXQSwgbWVkaWEgc29zaWFsIHJlc21pIGthbXB1cw0KDQoqKlN0cmF0ZWdpIFNhbXBsaW5nKio6DQoNCiAgLSAqKlN0cmF0aWZpZWQgUmFuZG9tIFNhbXBsaW5nKiogYmVyZGFzYXJrYW46DQogICAgLSBGYWt1bHRhcw0KICAgIC0gVGluZ2thdCBzZW1lc3RlciAoYXdhbCwgdGVuZ2FoLCBha2hpcikNCi0gVGFyZ2V0IGp1bWxhaCByZXNwb25kZW46ICoqbWluaW1hbCAxNTAgbWFoYXNpc3dhKioNCg0KDQojIyAqKmQuIFNpbXVsYXNpIFBlbmdvbGFoYW4gRGF0YSAmIFZpc3VhbGlzYXNpIEF3YWwqKg0KDQoqKlNpbXVsYXNpIFJlc3BvbmRlbiAoRHVtbXkgRGF0YSA1MCBPcmFuZykqKjoNCg0KICAtIE1lbmdndW5ha2FuIFB5dGhvbiAmIFBhbmRhcw0KICAtIEFuYWxpc2lzIEF3YWw6IERpc3RyaWJ1c2kgbmlsYWkga2VwdWFzYW4gKExpa2VydCkgdGlhcCBhc3Blaw0KICANCioqVmlzdWFsaXNhc2kqKjoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLH0NCmxpYnJhcnkocGxvdGx5KQ0KDQojIFNpbXVsYXNpIGRhdGENCnNldC5zZWVkKDEyMykNCnJlc3BvbmRlbiA8LSAxOjUwDQphc3BlayA8LSBjKCJLUlMgT25saW5lIiwgIkJpbWJpbmdhbiIsICJBZG1pbmlzdHJhc2kiLCAiSW5mbyBBa2FkZW1payIsICJCYW50dWFuIFN0dWRpIikNCg0KIyBCdWF0IGRhdGEgZnJhbWUNCmRhdGEgPC0gZXhwYW5kLmdyaWQoUmVzcG9uZGVuID0gcmVzcG9uZGVuLCBBc3BlayA9IGFzcGVrKQ0KZGF0YSRTa29yIDwtIHNhbXBsZSgxOjUsIHNpemUgPSBucm93KGRhdGEpLCByZXBsYWNlID0gVFJVRSkNCg0KIyBQbG90IDNEDQpmaWcgPC0gcGxvdF9seSgNCiAgZGF0YSwNCiAgeCA9IH5SZXNwb25kZW4sDQogIHkgPSB+QXNwZWssDQogIHogPSB+U2tvciwNCiAgdHlwZSA9ICdzY2F0dGVyM2QnLA0KICBtb2RlID0gJ21hcmtlcnMnLA0KICBtYXJrZXIgPSBsaXN0KHNpemUgPSA0LCBjb2xvciA9IH5Ta29yLCBjb2xvcnNjYWxlID0gJ1ZpcmlkaXMnLCBzaG93c2NhbGUgPSBUUlVFKQ0KKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIlZpc3VhbGlzYXNpIDNEIEtlcHVhc2FuIE1haGFzaXN3YSB0ZXJoYWRhcCBMYXlhbmFuIEFrYWRlbWlrIiwNCiAgICBzY2VuZSA9IGxpc3QoDQogICAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiUmVzcG9uZGVuIiksDQogICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiQXNwZWsgTGF5YW5hbiIpLA0KICAgICAgemF4aXMgPSBsaXN0KHRpdGxlID0gIlNrb3IgS2VwdWFzYW4iKQ0KICAgICkNCiAgKQ0KDQpmaWcNCmBgYA0K