UTS TEKNIK SAMPLING DAN SURVEY

UTS TEKNIK SAMPLING DAN SURVEY

Fikakampus.jpg


1. Simulasi Kesalahan Sampling di Lapangan

Andikan Anda adalah bagian dari tim riset lapangan yang diminta untuk melakukan survei tingkat penggunaan aplikasi transportasi online di 3 kota menengah di Sumatera. Target sampel total adalah 600 responden, masing-masing 200 per kota. Tetapi, setelah 2 minggu melakukan survei anda menemukan:

  • Di Kota A, tim berhasil mendapatkan 250 responden.

  • Di Kota B, hanya 120 responden yang dapat diwawancarai.

  • Di Kota C, 180 responden.

Intruksi:

a. Jelaskan dua jenis kesalahan sampling yang terjadi berdasarkan situasi ini.

Dalam situasi survei ini, ada dua jenis kesalahan sampling yang muncul karena jumlah responden tiap kota gak sesuai target awal.

Pertama, terjadi kesalahan alokasi sampel. Target awalnya kan 200 responden per kota, tapi hasilnya malah beda-beda. Kota A kelebihan jadi 250 responden, Kota B cuma dapet 120 (jauh kurang), dan Kota C agak kurang dikit (180). Nah, karena jumlahnya gak merata gini, data yang terkumpul jadi gak seimbang. Akibatnya bisa bikin hasil survei jadi berat sebelah. Misalnya aja, karena data dari Kota A lebih banyak dari yang seharusnya, pendapat orang-orang dari Kota A bakal lebih dominan dalam hasil akhir. Jadinya kesimpulan survei kurang mencerminkan kondisi ketiga kota secara adil.

Kedua, kemungkinan terjadi kesalahan representasi sampel. Maksudnya, data yang dikumpulkan belum tentu bener-bener mewakili semua kelompok masyarakat di tiap kota. Contohnya di Kota B yang cuma dapet 120 responden, bisa jadi ada kelompok-kelompok penting yang gak kewakili dalam survei, kayak driver ojol aktif, ibu-ibu yang sering pake transportasi online, atau mahasiswa yang jadi pengguna rutin. Karena mereka gak masuk sebagai responden, hasil dari Kota B jadi kurang akurat dan gak mencerminkan keadaan yang sebenernya soal pengguna aplikasi transportasi online di sana. Jadi intinya, dua kesalahan yang terjadi adalah distribusi sampel yang gak seimbang antar kota, sama data yang kurang representatif, terutama di Kota B yang respondennya paling sedikit.RetryClaude can make mistakes. Please double-check responses.

b. Jika Anda harus menyesuaikan bobot untuk mengembalikan representasi proporsional,bagaimana Anda akan menghitungnya?

Kalau jumlah responden dari tiap kota tidak sesuai dengan target awal, maka kita perlu menyesuaikan bobot agar hasil survei tetap mewakili proporsi yang benar. Target awalnya adalah 200 responden per kota (total 600 responden), tapi jumlah aktualnya malah beda-beda: Kota A kelebihan, Kota B dan C malah kurang.

hitung bobot dengan rumus:

\[ \text{Bobot Kota X} = \frac{\text{Target Responden Kota X}}{\text{Jumlah Responden Aktual Kota X}} \]


Data yang kita punya:

Kota Target Responden Responden Aktual Bobot
Kota A 200 250 200 / 250 = 0,8
Kota B 200 120 200 / 120 = 1,67
Kota C 200 180 200 / 180 = 1,11

Perhitungannya:

  • Kota A: 200 / 250 = 0,8 → artinya responden dari Kota A akan “diperkecil” pengaruhnya karena jumlahnya terlalu banyak.

  • Kota B: 200 / 120 = 1,67 → responden dari Kota B akan dikali bobot lebih besar biar pengaruhnya naik sesuai target.

  • Kota C: 200 / 180 = 1,11 → pengaruh data dari Kota C juga sedikit ditambah.

Dengan membagi target dengan jumlah aktual, kita bisa menyeimbangkan kontribusi data dari tiap kota. Jadi meskipun jumlah responden tidak pas 200 per kota, hasil akhirnya tetap mencerminkan pembagian yang adil sesuai rencana awal.


2. Mendesain survey dengan pembobotan waktu puncak

Buatlah desain rancangan survei tentang persepsi kenyamanan pengguna ojek online saat jam sibuk (07.00–09.00 dan 17.00–19.00).

a. Desain pendekatan sampling yang memungkinkan Anda menangkap persepsi pengguna secara representatif pada jam sibuk, tanpa melakukan survei sepanjang hari.

menggunakan stratified sampling berbasis waktu puncak untuk menangkap persepsi pengguna ojek online secara representatif tanpa perlu melakukan survei sepanjang hari. Pendekatan ini membagi waktu pengambilan sampel menjadi dua strata utama:

  • Periode Pagi: 06.30 - 09.30

  • Periode Sore: 16.30 - 19.30

Dengan pendekatan ini, kita dapat:

  • Fokus hanya pada waktu-waktu dengan kepadatan pengguna tertinggi

  • Mempertahankan representativitas sampel

  • Menghemat sumber daya penelitian

  • Memperoleh data dari pengguna aktual saat mereka mengalami layanan

Stratifikasi waktu ini memungkinkan penyesuaian bobot sampel sesuai dengan volume pengguna aktual pada masing-masing periode.

b. Sertakan rancangan waktu, metode pemilihan responden, dan justifikasi pemilihan unit sampling.

Rencana pelaksanaan suevei penggunaan ojek online

Jadwal Pengambilan Data

  • Hari Pelaksanaan: Senin - Jumat (5 hari kerja)

  • Waktu Pengambilan Sampel:

    • Periode Pagi: 06.30 - 09.30 WIB (jam sibuk pagi)

    • Periode Sore: 16.30 - 19.30 WIB (jam sibuk sore)

Teknik Pengambilan Sampel Penelitian ini menggunakan metode systematic intercept sampling dengan pendekatan terstruktur untuk memastikan representasi yang baik dari populasi pengguna ojek online.

Lokasi Strategis Pengambilan Data

  1. Terminal Transportasi Umum:

    • Stasiun kereta api utama

    • Terminal bus dengan arus penumpang tinggi

    • Halte transportasi umum di jalur utama

  2. Kawasan Perkantoran:

    • Area bisnis dengan kepadatan tinggi

    • Gedung perkantoran di pusat kota

  3. Lingkungan Pendidikan:

    • Gerbang utama kampus

    • Area sekitar fakultas dengan kepadatan mahasiswa tinggi

  4. Area Komersial:

    • Pusat perbelanjaan (mall)

    • Kawasan kuliner populer

  5. Titik Drop-Off Populer:

    • Lokasi dengan frekuensi tinggi penggunaan ojek online

    • Area dengan tingkat perpindahan moda transportasi yang tinggi

Prosedur Pemilihan Responden

1. Mekanisme Seleksi Sistematis:

  • Surveyor akan memposisikan diri di titik observasi strategis

  • Pengguna ojek online ke-n akan diajak berpartisipasi (n ditentukan berdasarkan kepadatan lokasi)

  • Pada lokasi padat: setiap pengguna ke-5

  • Pada lokasi sedang: setiap pengguna ke-3

  • Pada lokasi sepi: setiap pengguna ke-2

2.Syarat Kualifikasi Responden:

  • Minimal berusia 18 tahun (dewasa)

  • Baru menyelesaikan perjalanan menggunakan aplikasi ojek online (maksimal 5 menit setelah turun)

  • Bersedia meluangkan waktu 4-5 menit untuk wawancara singkat

3. Protokol Pendekatan:

  • Perkenalan singkat dan penjelasan tujuan survei

  • Konfirmasi ketersediaan waktu responden

  • Penyampaian jaminan kerahasiaan data

Justifikasi Pemilihan Unit Sampling

1. Unit analisis: Pengguna ojek online pada jam sibuk

2. Alasan pemilihan intercept sampling:

  • Ketepatan waktu: Memperoleh respons saat pengalaman masih segar dalam ingatan

  • Relevansi: Menjamin responden adalah pengguna aktual, bukan potensial

  • Efisiensi: Memaksimalkan jumlah responden yang valid dalam waktu terbatas

  • Kontekstual: Tanggapan yang didapatkan lebih otentik karena disampaikan segera setelah pengalaman

3. Keunggulan pendekatan ini:

  • Mengurangi bias ingatan dengan mewawancarai pengguna segera setelah pengalaman

  • Fokus pada pengguna saat jam sibuk memungkinkan evaluasi layanan dalam kondisi beban maksimal

  • Menghemat sumber daya dengan tidak perlu melakukan survei sepanjang hari

c. Jelaskan bagaimana Anda akan menyesuaikan hasil survei jika 60% responden berasal dari pagi hari, sementara 40% dari sore hari, sedangkan data historis menunjukkan pengguna ojek online saat sore hari dua kali lebih banyak dibanding pagi

Permasalahan

  • Distribusi responden aktual: 60% responden dari periode pagi, 40% dari periode sore

  • Distribusi pengguna sebenarnya (berdasarkan data historis): pengguna sore hari dua kali lebih banyak dibanding pagi

Metode Penyesuaian Bobot

1. Menghitung proporsi ideal berdasarkan data historis:

  • Jika pengguna sore = 2 × pengguna pagi, maka:

  • Pengguna pagi = 1/3 dari total (33.33%)

  • Pengguna sore = 2/3 dari total (66.67%)

2. Perhitungan faktor pembobotan:

  • Faktor bobot = Proporsi ideal ÷ Proporsi aktual

  • Bobot responden pagi = 33.33% ÷ 60% = 0.56

  • Bobot responden sore = 66.67% ÷ 40% = 1.67


Tabel Penyesuaian Bobot Responden Berdasarkan Waktu

Waktu Penggunaan Proporsi Responden (Survei) Proporsi Pengguna Sebenarnya Perhitungan Bobot Bobot Akhir
Pagi (06.00–09.00) 60% 33% 33 ÷ 60 = 0,55 0,55
Sore (16.00–19.00) 40% 67% 67 ÷ 40 = 1,675 1,675

3. Penerapan bobot dalam analisis:

  • Jika ada 100 responden dari pagi, maka yang dihitung dalam analisis hanya: \[ 100 \times 0{,}55 = 55 \text{ responden setara} \]

  • Jika ada 100 responden dari sore, maka dihitung sebagai: \[ 100 \times 1{,}675 = 167{,}5 \text{ responden setara} \]


Interpretasi Hasil

  • Dengan pembobotan ini, kontribusi responden sore akan ditingkatkan dan kontribusi responden pagi akan dikurangi

  • Hasil akhir akan mencerminkan distribusi pengguna sebenarnya di lapangan

  • Metode ini memastikan bahwa meskipun sampling tidak proporsional dengan populasi sebenarnya, hasil analisis tetap merepresentasikan populasi dengan tepat

Pendekatan pembobotan ini memungkinkan kita untuk mempertahankan validitas dan reliabilitas hasil meskipun terdapat ketidakseimbangan dalam pengambilan sampel.

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 peneliti 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.

Link Gform: https://docs.google.com/forms/d/e/1FAIpQLSeAhRI2FQxn40fzK9mx5Ja07-HXOYeo5hxWoeVvOFUM0kmpeg/viewform?usp=header

Laporan Evaluasi Kepuasan Mahasiswa terhadap Layanan Akademik


1. Perancangan Instrumen Kuesioner (25 Pertanyaan Utama)

Instrumen survei yang digunakan terdiri dari 25 pertanyaan utama yang dirancang untuk mengevaluasi berbagai aspek layanan akademik kampus. Pertanyaan disusun dengan beragam bentuk skala dan tipe, guna memperoleh data yang komprehensif dan variatif.

Variasi Skala dan Bentuk Pertanyaan:

Jenis Pertanyaan Jumlah Item Contoh
Skala Likert 1–5 15 butir Seberapa puas Anda terhadap layanan dosen wali?
Pilihan ganda 5 butir Apa jurusan Anda saat ini?
Pertanyaan isian singkat 2 butir Saran Anda untuk perbaikan layanan akademik?
Kotak centang (multiple answer allowed) 2 butir Layanan mana yang sering Anda gunakan?
Pertanyaan linier/skala grid 1 butir Penilaian Anda terhadap fasilitas kampus secara umum.

Pertanyaan difokuskan pada aspek-aspek penting seperti:

  • Pelayanan administrasi akademik

  • Respons dosen dan staf

  • Akses sistem informasi (KRS/KHS online)

  • Fasilitas penunjang (kelas, wifi, dll.)

  • Kejelasan aturan akademik

  • Kemudahan prosedur akademik


2. Sistem Validasi Instrumen

Agar instrumen kuesioner valid dan layak digunakan, dilakukan beberapa langkah validasi:

a. Validasi Isi (Content Validity)

Instrumen dirancang berdasarkan indikator layanan akademik standar yang sering digunakan di pendidikan tinggi. Tiap item diuji apakah benar-benar mencerminkan aspek yang ingin diukur, misalnya kepuasan terhadap dosen wali, akses informasi, dan sebagainya.

b. Uji Reliabilitas

Reliabilitas dapat diuji menggunakan Cronbach’s Alpha. Berdasarkan simulasi data 100 responden:

  • Nilai Cronbach’s Alpha keseluruhan untuk skala Likert adalah 0.83, yang berarti instrumen termasuk sangat reliabel (standar ≥ 0.7).

  • Tidak ada item yang secara signifikan menurunkan reliabilitas saat dihapus.

c. Validasi Respon

Sistem Google Form sudah diatur untuk:

  • Wajib diisi seluruh item utama

  • Tidak boleh dikirim dua kali dari alamat email yang sama

  • Format respon (misalnya angka untuk angkatan) sudah ditentukan untuk meminimalkan kesalahan input


3. Metode Distribusi dan Pengujian Kuesioner Secara Statistik

a. Metode Distribusi

Kuesioner didistribusikan melalui:

  • Grup WhatsApp angkatan dan jurusan

  • Email resmi kampus

  • Media sosial (Instagram story akun organisasi mahasiswa)

Distribusi dilakukan secara online dan anonim, agar responden dapat mengisi dengan bebas tanpa tekanan dan cepat terkumpul.

b. Uji Statistik Deskriptif

Aspek yang Dinilai Rata-rata Simpangan Baku Kategori
Pelayanan Administrasi Akademik 3.9 0.8 Cukup Puas
Kecepatan Respons Staf Akademik 3.7 1.0 Variatif
Ketersediaan Informasi Akademik 4.1 0.6 Puas dan Konsisten
Akses KRS/KHS Online 4.3 0.5 Sangat Puas
Layanan Dosen Wali/Pembimbing 3.6 0.9 Cukup, Perlu Peningkatan
Fasilitas Akademik 3.4 1.1 Masih Perlu Diperbaiki
Sosialisasi Aturan Akademik 3.7 0.9 Cukup Jelas, tapi Variatif

c. Korelasi Antar Variabel (Opsional)

Variabel X Variabel Y r Interpretasi
Informasi Akademik Layanan Dosen Wali 0.52 Positif Sedang
Fasilitas Kampus Pelayanan Administrasi Akademik 0.43 Positif Sedang
Kejelasan Sosialisasi Kecepatan Respons Staf Akademik 0.61 Korelasi Kuat

4. Simulasi Strategi Pengambilan Sampel dan Pengolahan Data Awal

a. Strategi Pengambilan Sampel

Metode sampling yang digunakan adalah stratified random sampling, berdasarkan variabel:

  • Angkatan (2020–2023)

  • Fakultas/Jurusan

Distribusi responden:

Angkatan Jumlah Responden
2020 15
2021 25
2022 30
2023 30
Fakultas Persentase
Ilmu Komputer 30%
Ekonomi 25%
Hukum 20%
Teknik 15%
FISIP 10%

Stratifikasi ini dipilih agar mewakili seluruh kelompok mahasiswa secara proporsional.

b. Pengolahan Data Awal

Pengolahan Data Awal

Setelah data dari 100 responden terkumpul melalui Google Form, langkah pertama yang saya lakukan adalah mengekspor seluruh hasil ke dalam format Google Spreadsheet dan kemudian saya simpan dalam bentuk Excel (.xlsx) untuk memudahkan pengolahan lebih lanjut.

1. Pembersihan Data

Semua data dinyatakan valid karena:

  • Setiap pertanyaan pada form saya atur sebagai “wajib diisi”, sehingga tidak ada respon kosong.

  • Google Form juga membatasi satu respon per akun, jadi tidak ditemukan duplikasi data.

2. Konversi Data ke Format Numerik

Untuk pertanyaan berskala (Likert 1–5), saya ubah jawaban teks menjadi angka untuk keperluan analisis statistik, dengan ketentuan:

  • 1 = Sangat Tidak Puas

  • 2 = Tidak Puas

  • 3 = Netral

  • 4 = Puas

  • 5 = Sangat Puas

Hal ini dilakukan agar dapat dihitung nilai rata-rata dan simpangan baku pada masing-masing aspek layanan akademik.

3. Perhitungan Statistik Deskriptif

Berikut hasil perhitungan rata-rata dan simpangan baku berdasarkan data 100 responden:

Aspek yang Dinilai Rata-rata Skor Simpangan Baku Interpretasi
Pelayanan Administrasi Akademik 3.9 0.8 Cukup Puas
Kecepatan Respons Staf Akademik 3.7 1.0 Cenderung Variatif
Ketersediaan dan Akses Informasi Akademik 4.1 0.6 Puas dan Konsisten
Kemudahan Mengakses KRS/KHS Online 4.3 0.5 Sangat Puas
Layanan Dosen Wali dan Dosen Pembimbing 3.6 0.9 Cukup, tapi masih bervariasi
Pengelolaan Jadwal Perkuliahan 3.8 0.7 Cukup Puas
Fasilitas Pendukung Akademik (ruang kelas, wifi, dsb.) 3.4 1.1 Masih Perlu Ditingkatkan
Prosedur Administrasi Akademik (cuti, pindah dsb.) 3.5 0.8 Sedang
Sosialisasi Aturan Akademik 3.7 0.9 Cukup Jelas, namun variatif

4. Analisis Korelasi

Saya juga melakukan analisis korelasi antar beberapa aspek layanan untuk mengetahui apakah ada hubungan yang signifikan antar variabel.

Variabel X Variabel Y Koefisien Korelasi (r) Interpretasi
Kepuasan terhadap Informasi Akademik Kepuasan terhadap Dosen Wali 0.52 Korelasi positif sedang
Kepuasan terhadap Fasilitas Kampus Kepuasan terhadap Administrasi Akademik 0.43 Korelasi positif sedang
Kejelasan Sosialisasi Aturan Akademik Kecepatan Respons Staf Akademik 0.61 Korelasi positif kuat

Interpretasinya adalah, mahasiswa yang merasa informasi akademik jelas dan mudah diakses cenderung juga merasa puas dengan layanan dosen wali. Begitu pula, mereka yang merasa sosialisasi aturan dilakukan dengan baik, juga menilai staf akademik lebih responsif. Artinya, transparansi dan komunikasi sangat memengaruhi kepuasan secara umum.

Kesimpulan Awal

Berdasarkan hasil pengolahan awal dari 100 responden, saya menyimpulkan bahwa:

  • Secara umum mahasiswa merasa cukup puas terhadap layanan akademik kampus, terutama dalam hal akses informasi akademik dan sistem online seperti KRS/KHS.

  • Namun, fasilitas pendukung seperti ruang kelas dan wifi masih perlu ditingkatkan, karena memiliki skor dan simpangan baku yang rendah, menunjukkan ketidakkonsistenan pengalaman mahasiswa.

  • Korelasi positif antar variabel menunjukkan bahwa aspek komunikasi dan informasi sangat berperan dalam membentuk persepsi mahasiswa terhadap layanan kampus secara keseluruhan.


1. Diagram Pie – Distribusi Jenis Kelamin & Fakultas

# Pie Chart Jenis Kelamin
gender <- c("Perempuan", "Laki-laki")
percentage <- c(65, 35)
colors <- c("#f9a1bc", "#a1c4f9")

pie(percentage, labels = paste(gender, percentage, "%"), col = colors,
    main = "Distribusi Jenis Kelamin Responden")

# Pie Chart Fakultas/Jurusan
fakultas <- c("Ekonomi", "Hukum", "Ilmu Komputer", "Teknik", "FISIP")
fakultas_persen <- c(25, 20, 30, 15, 10)
colors2 <- c("#f9c74f", "#90be6d", "#577590", "#f94144", "#43aa8b")

pie(fakultas_persen, labels = paste(fakultas, fakultas_persen, "%"), col = colors2,
    main = "Distribusi Fakultas/Jurusan")

Interpretasi:

Dari diagram pie, terlihat bahwa mayoritas responden adalah mahasiswa perempuan (65%), sedangkan laki-laki hanya 35%.

Ini menunjukkan bahwa partisipasi survei lebih banyak berasal dari mahasiswi, yang bisa memengaruhi pola kepuasan—misalnya, preferensi terhadap layanan atau komunikasi kampus.

Responden terbanyak berasal dari Ilmu Komputer (30%), diikuti oleh Ekonomi (25%), Hukum (20%), Teknik (15%), dan FISIP (10%).

Ini menunjukkan bahwa fakultas berbasis teknologi dan sosial-ekonomi lebih aktif dalam pengisian survei.

Distribusi ini penting dalam interpretasi hasil, karena bisa jadi kebutuhan dan ekspektasi tiap fakultas berbeda (misal: Ilmu Komputer lebih sensitif terhadap akses sistem digital).

2. Grafik Batang – Rata-rata Skor Kepuasan Tiap Aspek

library(ggplot2)

aspek <- c("Administrasi Akademik", "Respons Staf Akademik", "Informasi Akademik",
           "KRS/KHS Online", "Dosen Wali", "Jadwal Kuliah", 
           "Fasilitas Kampus", "Prosedur Administrasi", "Sosialisasi Aturan")

skor <- c(3.9, 3.7, 4.1, 4.3, 3.6, 3.8, 3.4, 3.5, 3.7)

df_kepuasan <- data.frame(Aspek = factor(aspek, levels = rev(aspek)), Skor = skor)

ggplot(df_kepuasan, aes(x = Skor, y = Aspek)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "Rata-rata Skor Kepuasan Tiap Aspek",
       x = "Skor (1–5)", y = "Aspek") +
  xlim(0, 5) +
  theme_minimal()

Interpretasi:

  • Tertinggi: Kemudahan Akses KRS/KHS Online (4.3), menunjukkan sistem digital akademik dianggap sangat memudahkan.

  • Disusul oleh Informasi Akademik (4.1) dan Administrasi Akademik (3.9), yang artinya aspek pelayanan berbasis sistem cukup memuaskan.

  • Terendah: Fasilitas Kampus (3.4), diikuti Dosen Wali (3.6), menunjukkan masih banyak mahasiswa yang merasa kualitas ruang kelas, WiFi, dan interaksi dengan dosen wali belum optimal.

  • Simpangan baku yang bervariasi (terlihat di data sebelumnya) menunjukkan perbedaan pengalaman antar mahasiswa bisa cukup besar di beberapa aspek.

3. Diagram Garis – Tren Kepuasan Antar Angkatan

angkatan <- c("2020", "2021", "2022", "2023")
skor_angkatan <- c(3.8, 3.7, 4.0, 4.1)

df_tren <- data.frame(Angkatan = angkatan, Skor = skor_angkatan)

ggplot(df_tren, aes(x = Angkatan, y = Skor, group = 1)) +
  geom_line(color = "#0077b6", size = 1.2) +
  geom_point(size = 3, color = "#0077b6") +
  labs(title = "Tren Kepuasan Akademik Berdasarkan Angkatan",
       y = "Rata-rata Skor") +
  ylim(3.5, 4.5) +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Interpretasi:

  • Angkatan 2023 mencatat tingkat kepuasan tertinggi (4.1), disusul angkatan 2022 (4.0).

  • Sementara angkatan 2021 dan 2020 cenderung lebih rendah (masing-masing 3.7 dan 3.8).

  • Kemungkinan karena sistem dan fasilitas kampus mulai membaik di tahun-tahun terbaru, atau karena mahasiswa baru cenderung belum mengalami masalah administratif yang lebih kompleks.

  • Bisa juga karena ekspektasi mahasiswa senior lebih tinggi, atau pernah mengalami masa transisi (misalnya: pandemi → pasca-pandemi).

Kesimpulan

  • Mahasiswa merasa cukup puas terhadap layanan akademik, terutama dalam hal akses sistem digital.

  • Namun, ada catatan penting di aspek interaksi personal (dosen wali) dan fasilitas fisik kampus yang butuh perhatian lebih lanjut.

  • Kepuasan juga bervariasi antar angkatan dan fakultas, sehingga perbaikan layanan sebaiknya mempertimbangkan segmentasi kebutuhan mahasiswa.

LS0tDQp0aXRsZTogIlVUUyBURUtOSUsgU0FNUExJTkcgREFOIFNVUlZFWSINCg0Kc3VidGl0bGU6ICJVVFMgVEVLTklLIFNBTVBMSU5HIERBTiBTVVJWRVkgIg0KDQphdXRob3I6IA0KICAtICIgRmlrYSBJcnNhbmRpIERlc3Z5YW50aSAoNTIyNDAwMDEzKSINCiAgDQpkYXRlOiAgImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjoNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogIlN0eWxlLmNzcyINCiAgICANCi0tLQ0KDQogPGltZyBpZD0ibG9nby11dGFtYSIgc3JjPSJGaWtha2FtcHVzLmpwZyIgYWx0PSJGaWtha2FtcHVzLmpwZyIgc3R5bGU9IndpZHRoOjIwMHB4OyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiBhdXRvOyI+DQoNCi0tLQ0KDQoNCiMgKioxLiBTaW11bGFzaSBLZXNhbGFoYW4gU2FtcGxpbmcgZGkgTGFwYW5nYW4qKg0KDQpBbmRpa2FuIEFuZGEgYWRhbGFoIGJhZ2lhbiBkYXJpIHRpbSByaXNldCBsYXBhbmdhbiB5YW5nIGRpbWludGEgdW50dWsgbWVsYWt1a2FuIHN1cnZlaSB0aW5na2F0IHBlbmdndW5hYW4gYXBsaWthc2kgdHJhbnNwb3J0YXNpIG9ubGluZSBkaSAzIGtvdGEgbWVuZW5nYWggZGkgU3VtYXRlcmEuIFRhcmdldCBzYW1wZWwgdG90YWwgYWRhbGFoIDYwMCByZXNwb25kZW4sIG1hc2luZy1tYXNpbmcgMjAwIHBlciBrb3RhLiBUZXRhcGksIHNldGVsYWggMiBtaW5nZ3UgbWVsYWt1a2FuIHN1cnZlaSBhbmRhIG1lbmVtdWthbjogDQoNCi0JRGkgS290YSBBLCB0aW0gYmVyaGFzaWwgbWVuZGFwYXRrYW4gMjUwIHJlc3BvbmRlbi4gDQoNCi0JRGkgS290YSBCLCBoYW55YSAxMjAgcmVzcG9uZGVuIHlhbmcgZGFwYXQgZGl3YXdhbmNhcmFpLiANCg0KLSBEaSBLb3RhIEMsIDE4MCByZXNwb25kZW4uIA0KDQoqKkludHJ1a3NpOioqDQoNCiMjICoqYS4gSmVsYXNrYW4gZHVhIGplbmlzIGtlc2FsYWhhbiBzYW1wbGluZyB5YW5nIHRlcmphZGkgYmVyZGFzYXJrYW4gc2l0dWFzaSBpbmkuKioNCg0KRGFsYW0gc2l0dWFzaSBzdXJ2ZWkgaW5pLCBhZGEgZHVhIGplbmlzIGtlc2FsYWhhbiBzYW1wbGluZyB5YW5nIG11bmN1bCBrYXJlbmEganVtbGFoIHJlc3BvbmRlbiB0aWFwIGtvdGEgZ2FrIHNlc3VhaSB0YXJnZXQgYXdhbC4NCg0KKipQZXJ0YW1hKiosIHRlcmphZGkgKiprZXNhbGFoYW4gYWxva2FzaSBzYW1wZWwuKiogVGFyZ2V0IGF3YWxueWEga2FuIDIwMCByZXNwb25kZW4gcGVyIGtvdGEsIHRhcGkgaGFzaWxueWEgbWFsYWggYmVkYS1iZWRhLiBLb3RhIEEga2VsZWJpaGFuIGphZGkgMjUwIHJlc3BvbmRlbiwgS290YSBCIGN1bWEgZGFwZXQgMTIwIChqYXVoIGt1cmFuZyksIGRhbiBLb3RhIEMgYWdhayBrdXJhbmcgZGlraXQgKDE4MCkuIE5haCwga2FyZW5hIGp1bWxhaG55YSBnYWsgbWVyYXRhIGdpbmksIGRhdGEgeWFuZyB0ZXJrdW1wdWwgamFkaSBnYWsgc2VpbWJhbmcuIEFraWJhdG55YSBiaXNhIGJpa2luIGhhc2lsIHN1cnZlaSBqYWRpIGJlcmF0IHNlYmVsYWguIE1pc2FsbnlhIGFqYSwga2FyZW5hIGRhdGEgZGFyaSBLb3RhIEEgbGViaWggYmFueWFrIGRhcmkgeWFuZyBzZWhhcnVzbnlhLCBwZW5kYXBhdCBvcmFuZy1vcmFuZyBkYXJpIEtvdGEgQSBiYWthbCBsZWJpaCBkb21pbmFuIGRhbGFtIGhhc2lsIGFraGlyLiBKYWRpbnlhIGtlc2ltcHVsYW4gc3VydmVpIGt1cmFuZyBtZW5jZXJtaW5rYW4ga29uZGlzaSBrZXRpZ2Ega290YSBzZWNhcmEgYWRpbC4NCg0KKipLZWR1YSoqLCBrZW11bmdraW5hbiB0ZXJqYWRpICoqa2VzYWxhaGFuIHJlcHJlc2VudGFzaSBzYW1wZWwuKiogTWFrc3VkbnlhLCBkYXRhIHlhbmcgZGlrdW1wdWxrYW4gYmVsdW0gdGVudHUgYmVuZXItYmVuZXIgbWV3YWtpbGkgc2VtdWEga2Vsb21wb2sgbWFzeWFyYWthdCBkaSB0aWFwIGtvdGEuIENvbnRvaG55YSBkaSBLb3RhIEIgeWFuZyBjdW1hIGRhcGV0IDEyMCByZXNwb25kZW4sIGJpc2EgamFkaSBhZGEga2Vsb21wb2sta2Vsb21wb2sgcGVudGluZyB5YW5nIGdhayBrZXdha2lsaSBkYWxhbSBzdXJ2ZWksIGtheWFrIGRyaXZlciBvam9sIGFrdGlmLCBpYnUtaWJ1IHlhbmcgc2VyaW5nIHBha2UgdHJhbnNwb3J0YXNpIG9ubGluZSwgYXRhdSBtYWhhc2lzd2EgeWFuZyBqYWRpIHBlbmdndW5hIHJ1dGluLiBLYXJlbmEgbWVyZWthIGdhayBtYXN1ayBzZWJhZ2FpIHJlc3BvbmRlbiwgaGFzaWwgZGFyaSBLb3RhIEIgamFkaSBrdXJhbmcgYWt1cmF0IGRhbiBnYWsgbWVuY2VybWlua2FuIGtlYWRhYW4geWFuZyBzZWJlbmVybnlhIHNvYWwgcGVuZ2d1bmEgYXBsaWthc2kgdHJhbnNwb3J0YXNpIG9ubGluZSBkaSBzYW5hLg0KSmFkaSBpbnRpbnlhLCBkdWEga2VzYWxhaGFuIHlhbmcgdGVyamFkaSBhZGFsYWggZGlzdHJpYnVzaSBzYW1wZWwgeWFuZyBnYWsgc2VpbWJhbmcgYW50YXIga290YSwgc2FtYSBkYXRhIHlhbmcga3VyYW5nIHJlcHJlc2VudGF0aWYsIHRlcnV0YW1hIGRpIEtvdGEgQiB5YW5nIHJlc3BvbmRlbm55YSBwYWxpbmcgc2VkaWtpdC5SZXRyeUNsYXVkZSBjYW4gbWFrZSBtaXN0YWtlcy4gUGxlYXNlIGRvdWJsZS1jaGVjayByZXNwb25zZXMuDQoNCg0KDQojIyAqKmIuIEppa2EgQW5kYSBoYXJ1cyBtZW55ZXN1YWlrYW4gYm9ib3QgdW50dWsgbWVuZ2VtYmFsaWthbiByZXByZXNlbnRhc2kgcHJvcG9yc2lvbmFsLGJhZ2FpbWFuYSBBbmRhIGFrYW4gbWVuZ2hpdHVuZ255YT8qKg0KDQoNCkthbGF1IGp1bWxhaCByZXNwb25kZW4gZGFyaSB0aWFwIGtvdGEgdGlkYWsgc2VzdWFpIGRlbmdhbiB0YXJnZXQgYXdhbCwgbWFrYSBraXRhIHBlcmx1IG1lbnllc3VhaWthbiBib2JvdCBhZ2FyIGhhc2lsIHN1cnZlaSB0ZXRhcCBtZXdha2lsaSBwcm9wb3JzaSB5YW5nIGJlbmFyLiBUYXJnZXQgYXdhbG55YSBhZGFsYWggMjAwIHJlc3BvbmRlbiBwZXIga290YSAodG90YWwgNjAwIHJlc3BvbmRlbiksIHRhcGkganVtbGFoIGFrdHVhbG55YSBtYWxhaCBiZWRhLWJlZGE6IEtvdGEgQSBrZWxlYmloYW4sIEtvdGEgQiBkYW4gQyBtYWxhaCBrdXJhbmcuDQoNCmhpdHVuZyBib2JvdCBkZW5nYW4gcnVtdXM6DQoNCg0KXFsNClx0ZXh0e0JvYm90IEtvdGEgWH0gPSBcZnJhY3tcdGV4dHtUYXJnZXQgUmVzcG9uZGVuIEtvdGEgWH19e1x0ZXh0e0p1bWxhaCBSZXNwb25kZW4gQWt0dWFsIEtvdGEgWH19DQpcXQ0KDQotLS0NCg0KIyMjIERhdGEgeWFuZyBraXRhIHB1bnlhOg0KDQp8IEtvdGEgICAgIHwgVGFyZ2V0IFJlc3BvbmRlbiB8IFJlc3BvbmRlbiBBa3R1YWwgfCBCb2JvdCB8DQp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tfA0KfCBLb3RhIEEgICB8IDIwMCAgICAgICAgICAgICAgfCAyNTAgICAgICAgICAgICAgIHwgMjAwIC8gMjUwID0gKiowLDgqKiB8DQp8IEtvdGEgQiAgIHwgMjAwICAgICAgICAgICAgICB8IDEyMCAgICAgICAgICAgICAgfCAyMDAgLyAxMjAgPSAqKjEsNjcqKiB8DQp8IEtvdGEgQyAgIHwgMjAwICAgICAgICAgICAgICB8IDE4MCAgICAgICAgICAgICAgfCAyMDAgLyAxODAgPSAqKjEsMTEqKiB8DQoNCi0tLQ0KDQoNClBlcmhpdHVuZ2FubnlhOg0KDQotICoqS290YSBBKio6IDIwMCAvIDI1MCA9ICoqMCw4Kiog4oaSIGFydGlueWEgcmVzcG9uZGVuIGRhcmkgS290YSBBIGFrYW4gImRpcGVya2VjaWwiIHBlbmdhcnVobnlhIGthcmVuYSBqdW1sYWhueWEgdGVybGFsdSBiYW55YWsuDQoNCi0gKipLb3RhIEIqKjogMjAwIC8gMTIwID0gKioxLDY3Kiog4oaSIHJlc3BvbmRlbiBkYXJpIEtvdGEgQiBha2FuIGRpa2FsaSBib2JvdCBsZWJpaCBiZXNhciBiaWFyIHBlbmdhcnVobnlhIG5haWsgc2VzdWFpIHRhcmdldC4NCg0KLSAqKktvdGEgQyoqOiAyMDAgLyAxODAgPSAqKjEsMTEqKiDihpIgcGVuZ2FydWggZGF0YSBkYXJpIEtvdGEgQyBqdWdhIHNlZGlraXQgZGl0YW1iYWguDQoNCkRlbmdhbiBtZW1iYWdpIHRhcmdldCBkZW5nYW4ganVtbGFoIGFrdHVhbCwga2l0YSBiaXNhIG1lbnllaW1iYW5na2FuIGtvbnRyaWJ1c2kgZGF0YSBkYXJpIHRpYXAga290YS4gSmFkaSBtZXNraXB1biBqdW1sYWggcmVzcG9uZGVuIHRpZGFrIHBhcyAyMDAgcGVyIGtvdGEsIGhhc2lsIGFraGlybnlhIHRldGFwIG1lbmNlcm1pbmthbiBwZW1iYWdpYW4geWFuZyBhZGlsIHNlc3VhaSByZW5jYW5hIGF3YWwuDQoNCi0tLQ0KDQojICoqMi4gTWVuZGVzYWluIHN1cnZleSBkZW5nYW4gcGVtYm9ib3RhbiB3YWt0dSBwdW5jYWsqKg0KDQpCdWF0bGFoIGRlc2FpbiByYW5jYW5nYW4gc3VydmVpIHRlbnRhbmcgcGVyc2Vwc2kga2VueWFtYW5hbiBwZW5nZ3VuYSBvamVrIG9ubGluZSBzYWF0IGphbSBzaWJ1ayAoMDcuMDDigJMwOS4wMCBkYW4gMTcuMDDigJMxOS4wMCkuIA0KDQoNCiMjIGEuCSoqRGVzYWluIHBlbmRla2F0YW4gc2FtcGxpbmcgeWFuZyBtZW11bmdraW5rYW4gQW5kYSBtZW5hbmdrYXAgcGVyc2Vwc2kgcGVuZ2d1bmEgc2VjYXJhIHJlcHJlc2VudGF0aWYgcGFkYSBqYW0gc2lidWssIHRhbnBhIG1lbGFrdWthbiBzdXJ2ZWkgc2VwYW5qYW5nIGhhcmkuKioNCg0KbWVuZ2d1bmFrYW4gc3RyYXRpZmllZCBzYW1wbGluZyBiZXJiYXNpcyB3YWt0dSBwdW5jYWsgdW50dWsgbWVuYW5na2FwIHBlcnNlcHNpIHBlbmdndW5hIG9qZWsgb25saW5lIHNlY2FyYSByZXByZXNlbnRhdGlmIHRhbnBhIHBlcmx1IG1lbGFrdWthbiBzdXJ2ZWkgc2VwYW5qYW5nIGhhcmkuIFBlbmRla2F0YW4gaW5pIG1lbWJhZ2kgd2FrdHUgcGVuZ2FtYmlsYW4gc2FtcGVsIG1lbmphZGkgZHVhIHN0cmF0YSB1dGFtYToNCg0KLSBQZXJpb2RlIFBhZ2k6IDA2LjMwIC0gMDkuMzANCg0KLSBQZXJpb2RlIFNvcmU6IDE2LjMwIC0gMTkuMzANCg0KRGVuZ2FuIHBlbmRla2F0YW4gaW5pLCBraXRhIGRhcGF0Og0KDQotIEZva3VzIGhhbnlhIHBhZGEgd2FrdHUtd2FrdHUgZGVuZ2FuIGtlcGFkYXRhbiBwZW5nZ3VuYSB0ZXJ0aW5nZ2kNCg0KLSBNZW1wZXJ0YWhhbmthbiByZXByZXNlbnRhdGl2aXRhcyBzYW1wZWwNCg0KLSBNZW5naGVtYXQgc3VtYmVyIGRheWEgcGVuZWxpdGlhbg0KDQotIE1lbXBlcm9sZWggZGF0YSBkYXJpIHBlbmdndW5hIGFrdHVhbCBzYWF0IG1lcmVrYSBtZW5nYWxhbWkgbGF5YW5hbg0KDQpTdHJhdGlmaWthc2kgd2FrdHUgaW5pIG1lbXVuZ2tpbmthbiBwZW55ZXN1YWlhbiBib2JvdCBzYW1wZWwgc2VzdWFpIGRlbmdhbiB2b2x1bWUgcGVuZ2d1bmEgYWt0dWFsIHBhZGEgbWFzaW5nLW1hc2luZyBwZXJpb2RlLg0KDQoNCiMjICoqYi4JU2VydGFrYW4gcmFuY2FuZ2FuIHdha3R1LCBtZXRvZGUgcGVtaWxpaGFuIHJlc3BvbmRlbiwgZGFuIGp1c3RpZmlrYXNpIHBlbWlsaWhhbiB1bml0IHNhbXBsaW5nLiAqKg0KDQoNCioqUmVuY2FuYSBwZWxha3NhbmFhbiBzdWV2ZWkgcGVuZ2d1bmFhbiBvamVrIG9ubGluZSoqDQoNCiMjIyBKYWR3YWwgUGVuZ2FtYmlsYW4gRGF0YQ0KDQotICoqSGFyaSBQZWxha3NhbmFhbjoqKiBTZW5pbiAtIEp1bWF0ICg1IGhhcmkga2VyamEpDQoNCi0gKipXYWt0dSBQZW5nYW1iaWxhbiBTYW1wZWw6KioNCg0KICAqIFBlcmlvZGUgUGFnaTogMDYuMzAgLSAwOS4zMCBXSUIgKGphbSBzaWJ1ayBwYWdpKQ0KDQogICogUGVyaW9kZSBTb3JlOiAxNi4zMCAtIDE5LjMwIFdJQiAoamFtIHNpYnVrIHNvcmUpDQoNCiAqKlRla25payBQZW5nYW1iaWxhbiBTYW1wZWwqKg0KUGVuZWxpdGlhbiBpbmkgbWVuZ2d1bmFrYW4gKiptZXRvZGUgc3lzdGVtYXRpYyBpbnRlcmNlcHQgc2FtcGxpbmcqKiBkZW5nYW4gcGVuZGVrYXRhbiB0ZXJzdHJ1a3R1ciB1bnR1ayBtZW1hc3Rpa2FuIHJlcHJlc2VudGFzaSB5YW5nIGJhaWsgZGFyaSBwb3B1bGFzaSBwZW5nZ3VuYSBvamVrIG9ubGluZS4NCg0KICoqTG9rYXNpIFN0cmF0ZWdpcyBQZW5nYW1iaWxhbiBEYXRhKioNCg0KMS4gKipUZXJtaW5hbCBUcmFuc3BvcnRhc2kgVW11bToqKg0KDQogICAqIFN0YXNpdW4ga2VyZXRhIGFwaSB1dGFtYQ0KDQogICAqIFRlcm1pbmFsIGJ1cyBkZW5nYW4gYXJ1cyBwZW51bXBhbmcgdGluZ2dpDQoNCiAgICogSGFsdGUgdHJhbnNwb3J0YXNpIHVtdW0gZGkgamFsdXIgdXRhbWENCg0KMi4gKipLYXdhc2FuIFBlcmthbnRvcmFuOioqDQoNCiAgICogQXJlYSBiaXNuaXMgZGVuZ2FuIGtlcGFkYXRhbiB0aW5nZ2kNCg0KICAgKiBHZWR1bmcgcGVya2FudG9yYW4gZGkgcHVzYXQga290YQ0KDQozLiAqKkxpbmdrdW5nYW4gUGVuZGlkaWthbjoqKg0KDQogICAqIEdlcmJhbmcgdXRhbWEga2FtcHVzDQoNCiAgICogQXJlYSBzZWtpdGFyIGZha3VsdGFzIGRlbmdhbiBrZXBhZGF0YW4gbWFoYXNpc3dhIHRpbmdnaQ0KDQo0LiAqKkFyZWEgS29tZXJzaWFsOioqDQogIA0KICAgKiBQdXNhdCBwZXJiZWxhbmphYW4gKG1hbGwpDQogIA0KICAgKiBLYXdhc2FuIGt1bGluZXIgcG9wdWxlcg0KDQo1LiAqKlRpdGlrIERyb3AtT2ZmIFBvcHVsZXI6KioNCiAgDQogICAqIExva2FzaSBkZW5nYW4gZnJla3VlbnNpIHRpbmdnaSBwZW5nZ3VuYWFuIG9qZWsgb25saW5lDQogIA0KICAgKiBBcmVhIGRlbmdhbiB0aW5na2F0IHBlcnBpbmRhaGFuIG1vZGEgdHJhbnNwb3J0YXNpIHlhbmcgdGluZ2dpDQoNCiAqKlByb3NlZHVyIFBlbWlsaWhhbiBSZXNwb25kZW4qKg0KDQoqKjEuIE1la2FuaXNtZSBTZWxla3NpIFNpc3RlbWF0aXM6KioNCiAgDQogICAqIFN1cnZleW9yIGFrYW4gbWVtcG9zaXNpa2FuIGRpcmkgZGkgdGl0aWsgb2JzZXJ2YXNpIHN0cmF0ZWdpcw0KICANCiAgICogUGVuZ2d1bmEgb2playBvbmxpbmUga2UtbiBha2FuIGRpYWphayBiZXJwYXJ0aXNpcGFzaSAobiBkaXRlbnR1a2FuIGJlcmRhc2Fya2FuIGtlcGFkYXRhbiBsb2thc2kpDQogIA0KICAgKiBQYWRhIGxva2FzaSBwYWRhdDogc2V0aWFwIHBlbmdndW5hIGtlLTUNCiAgDQogICAqIFBhZGEgbG9rYXNpIHNlZGFuZzogc2V0aWFwIHBlbmdndW5hIGtlLTMNCiAgDQogICAqIFBhZGEgbG9rYXNpIHNlcGk6IHNldGlhcCBwZW5nZ3VuYSBrZS0yDQoNCioqMi5TeWFyYXQgS3VhbGlmaWthc2kgUmVzcG9uZGVuOioqDQogIA0KICAgKiBNaW5pbWFsIGJlcnVzaWEgMTggdGFodW4gKGRld2FzYSkNCiAgDQogICAqIEJhcnUgbWVueWVsZXNhaWthbiBwZXJqYWxhbmFuIG1lbmdndW5ha2FuIGFwbGlrYXNpIG9qZWsgb25saW5lIChtYWtzaW1hbCA1IG1lbml0IHNldGVsYWggdHVydW4pDQogIA0KICAgKiBCZXJzZWRpYSBtZWx1YW5na2FuIHdha3R1IDQtNSBtZW5pdCB1bnR1ayB3YXdhbmNhcmEgc2luZ2thdA0KDQoqKjMuIFByb3Rva29sIFBlbmRla2F0YW46KioNCiANCiAgICogUGVya2VuYWxhbiBzaW5na2F0IGRhbiBwZW5qZWxhc2FuIHR1anVhbiBzdXJ2ZWkNCiAgIA0KICAgKiBLb25maXJtYXNpIGtldGVyc2VkaWFhbiB3YWt0dSByZXNwb25kZW4NCiAgIA0KICAgKiBQZW55YW1wYWlhbiBqYW1pbmFuIGtlcmFoYXNpYWFuIGRhdGENCg0KDQoqKkp1c3RpZmlrYXNpIFBlbWlsaWhhbiBVbml0IFNhbXBsaW5nKioNCg0KKioxLiBVbml0IGFuYWxpc2lzOiBQZW5nZ3VuYSBvamVrIG9ubGluZSBwYWRhIGphbSBzaWJ1ayoqDQoNCioqMi4gQWxhc2FuIHBlbWlsaWhhbiBpbnRlcmNlcHQgc2FtcGxpbmc6KioNCg0KLSBLZXRlcGF0YW4gd2FrdHU6IE1lbXBlcm9sZWggcmVzcG9ucyBzYWF0IHBlbmdhbGFtYW4gbWFzaWggc2VnYXIgZGFsYW0gaW5nYXRhbg0KDQotIFJlbGV2YW5zaTogTWVuamFtaW4gcmVzcG9uZGVuIGFkYWxhaCBwZW5nZ3VuYSBha3R1YWwsIGJ1a2FuIHBvdGVuc2lhbA0KDQotIEVmaXNpZW5zaTogTWVtYWtzaW1hbGthbiBqdW1sYWggcmVzcG9uZGVuIHlhbmcgdmFsaWQgZGFsYW0gd2FrdHUgdGVyYmF0YXMNCg0KLSBLb250ZWtzdHVhbDogVGFuZ2dhcGFuIHlhbmcgZGlkYXBhdGthbiBsZWJpaCBvdGVudGlrIGthcmVuYSBkaXNhbXBhaWthbiBzZWdlcmEgc2V0ZWxhaCBwZW5nYWxhbWFuDQoNCg0KKiozLiBLZXVuZ2d1bGFuIHBlbmRla2F0YW4gaW5pOioqDQoNCi0gTWVuZ3VyYW5naSBiaWFzIGluZ2F0YW4gZGVuZ2FuIG1ld2F3YW5jYXJhaSBwZW5nZ3VuYSBzZWdlcmEgc2V0ZWxhaCBwZW5nYWxhbWFuDQoNCi0gRm9rdXMgcGFkYSBwZW5nZ3VuYSBzYWF0IGphbSBzaWJ1ayBtZW11bmdraW5rYW4gZXZhbHVhc2kgbGF5YW5hbiBkYWxhbSBrb25kaXNpIGJlYmFuIG1ha3NpbWFsDQoNCi0gTWVuZ2hlbWF0IHN1bWJlciBkYXlhIGRlbmdhbiB0aWRhayBwZXJsdSBtZWxha3VrYW4gc3VydmVpIHNlcGFuamFuZyBoYXJpDQoNCg0KIyMgKipjLglKZWxhc2thbiBiYWdhaW1hbmEgQW5kYSBha2FuIG1lbnllc3VhaWthbiBoYXNpbCBzdXJ2ZWkgamlrYSA2MCUgcmVzcG9uZGVuIGJlcmFzYWwgZGFyaSBwYWdpIGhhcmksIHNlbWVudGFyYSA0MCUgZGFyaSBzb3JlIGhhcmksIHNlZGFuZ2thbiBkYXRhIGhpc3RvcmlzIG1lbnVuanVra2FuIHBlbmdndW5hIG9qZWsgb25saW5lIHNhYXQgc29yZSBoYXJpIGR1YSBrYWxpIGxlYmloIGJhbnlhayBkaWJhbmRpbmcgcGFnaSoqDQoNCiMjIyAqKlBlcm1hc2FsYWhhbioqDQoNCi0gKipEaXN0cmlidXNpIHJlc3BvbmRlbiBha3R1YWwqKjogNjAlIHJlc3BvbmRlbiBkYXJpIHBlcmlvZGUgcGFnaSwgNDAlIGRhcmkgcGVyaW9kZSBzb3JlDQoNCg0KLSAqKkRpc3RyaWJ1c2kgcGVuZ2d1bmEgc2ViZW5hcm55YSoqIChiZXJkYXNhcmthbiBkYXRhIGhpc3RvcmlzKTogcGVuZ2d1bmEgc29yZSBoYXJpIGR1YSBrYWxpIGxlYmloIGJhbnlhayBkaWJhbmRpbmcgcGFnaQ0KDQoNCiMjIyAqKk1ldG9kZSBQZW55ZXN1YWlhbiBCb2JvdCoqDQoNCioqMS4gTWVuZ2hpdHVuZyBwcm9wb3JzaSBpZGVhbCBiZXJkYXNhcmthbiBkYXRhIGhpc3RvcmlzKio6DQogICANCiAgIC0gSmlrYSBwZW5nZ3VuYSBzb3JlID0gMiDDlyBwZW5nZ3VuYSBwYWdpLCBtYWthOg0KICAgDQogICAtIFBlbmdndW5hIHBhZ2kgPSAxLzMgZGFyaSB0b3RhbCAoMzMuMzMlKQ0KICAgDQogICAtIFBlbmdndW5hIHNvcmUgPSAyLzMgZGFyaSB0b3RhbCAoNjYuNjclKQ0KDQoqKjIuIFBlcmhpdHVuZ2FuIGZha3RvciBwZW1ib2JvdGFuKio6DQogICANCiAgIC0gRmFrdG9yIGJvYm90ID0gUHJvcG9yc2kgaWRlYWwgw7cgUHJvcG9yc2kgYWt0dWFsDQogICANCiAgIC0gQm9ib3QgcmVzcG9uZGVuIHBhZ2kgPSAzMy4zMyUgw7cgNjAlID0gMC41Ng0KICAgDQogICAtIEJvYm90IHJlc3BvbmRlbiBzb3JlID0gNjYuNjclIMO3IDQwJSA9IDEuNjcNCiAgIA0KICANCg0KLS0tDQoNCiMjIyAgKipUYWJlbCBQZW55ZXN1YWlhbiBCb2JvdCBSZXNwb25kZW4gQmVyZGFzYXJrYW4gV2FrdHUqKg0KDQp8IFdha3R1IFBlbmdndW5hYW4gfCBQcm9wb3JzaSBSZXNwb25kZW4gKFN1cnZlaSkgfCBQcm9wb3JzaSBQZW5nZ3VuYSBTZWJlbmFybnlhIHwgUGVyaGl0dW5nYW4gQm9ib3QgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb2JvdCBBa2hpciB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwNCnwgKipQYWdpICgwNi4wMOKAkzA5LjAwKSoqICB8IDYwJSAgICAgICAgICAgICAgICAgICAgICAgICB8IDMzJSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMyDDtyA2MCA9IDAsNTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqKjAsNTUqKiAgICB8DQp8ICoqU29yZSAoMTYuMDDigJMxOS4wMCkqKiAgfCA0MCUgICAgICAgICAgICAgICAgICAgICAgICAgfCA2NyUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjcgw7cgNDAgPSAxLDY3NSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKioxLDY3NSoqICAgfA0KDQotLS0NCg0KDQogICANCioqMy4gUGVuZXJhcGFuIGJvYm90IGRhbGFtIGFuYWxpc2lzKio6DQogIA0KLSBKaWthIGFkYSAqKjEwMCByZXNwb25kZW4gZGFyaSBwYWdpKiosIG1ha2EgeWFuZyBkaWhpdHVuZyBkYWxhbSBhbmFsaXNpcyBoYW55YToNCiAgXFsNCiAgMTAwIFx0aW1lcyAweyx9NTUgPSA1NSBcdGV4dHsgcmVzcG9uZGVuIHNldGFyYX0NCiAgXF0NCg0KLSBKaWthIGFkYSAqKjEwMCByZXNwb25kZW4gZGFyaSBzb3JlKiosIG1ha2EgZGloaXR1bmcgc2ViYWdhaToNCiAgXFsNCiAgMTAwIFx0aW1lcyAxeyx9Njc1ID0gMTY3eyx9NSBcdGV4dHsgcmVzcG9uZGVuIHNldGFyYX0NCiAgXF0NCg0KLS0tDQoNCg0KIyMjICoqSW50ZXJwcmV0YXNpIEhhc2lsKioNCg0KLSBEZW5nYW4gcGVtYm9ib3RhbiBpbmksIGtvbnRyaWJ1c2kgcmVzcG9uZGVuIHNvcmUgYWthbiBkaXRpbmdrYXRrYW4gZGFuIGtvbnRyaWJ1c2kgcmVzcG9uZGVuIHBhZ2kgYWthbiBkaWt1cmFuZ2kNCg0KLSBIYXNpbCBha2hpciBha2FuIG1lbmNlcm1pbmthbiBkaXN0cmlidXNpIHBlbmdndW5hIHNlYmVuYXJueWEgZGkgbGFwYW5nYW4NCg0KLSBNZXRvZGUgaW5pIG1lbWFzdGlrYW4gYmFod2EgbWVza2lwdW4gc2FtcGxpbmcgdGlkYWsgcHJvcG9yc2lvbmFsIGRlbmdhbiBwb3B1bGFzaSBzZWJlbmFybnlhLCBoYXNpbCBhbmFsaXNpcyB0ZXRhcCBtZXJlcHJlc2VudGFzaWthbiBwb3B1bGFzaSBkZW5nYW4gdGVwYXQNCg0KUGVuZGVrYXRhbiBwZW1ib2JvdGFuIGluaSBtZW11bmdraW5rYW4ga2l0YSB1bnR1ayBtZW1wZXJ0YWhhbmthbiB2YWxpZGl0YXMgZGFuIHJlbGlhYmlsaXRhcyBoYXNpbCBtZXNraXB1biB0ZXJkYXBhdCBrZXRpZGFrc2VpbWJhbmdhbiBkYWxhbSBwZW5nYW1iaWxhbiBzYW1wZWwuDQoNCg0KIyAqKkFuZGEgZGl0dWdhc2thbiBvbGVoIGJpcm8gYWthZGVtaWsga2FtcHVzIHVudHVrIG1lcmFuY2FuZyBpbnN0cnVtZW4gc3VydmVpIHlhbmcgYmVydHVqdWFuIG1lbmdldmFsdWFzaSBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGF5YW5hbiBha2FkZW1paywgeWFuZyBtZW5jYWt1cCBsYXlhbmFuIHNlcGVydGk6IEtSUyBvbmxpbmUsIGJpbWJpbmdhbiBha2FkZW1paywgcGVsYXlhbmFuIGFkbWluaXN0cmFzaSwgYWtzZXMgaW5mb3JtYXNpIGFrYWRlbWlrLCBkYW4gYmFudHVhbiBwZW55ZWxlc2FpYW4gc3R1ZGkuKioNCg0KKipUaW0gcGVuZWxpdGkgbWVtaW50YSBBbmRhIHVudHVrOioqIA0KDQotCU1lcmFuY2FuZyAyNSBwZXJ0YW55YWFuIHV0YW1hIGRlbmdhbiB2YXJpYXNpIHNrYWxhIGRhbiBiZW50dWsgcGVydGFueWFhbi4gDQoNCi0JTWVyYW5jYW5nIHNpc3RlbSB2YWxpZGFzaSBpbnN0cnVtZW4uIA0KDQotCU1lbmVudHVrYW4gbWV0b2RlIGRpc3RyaWJ1c2kgZGFuIHBlbmd1amlhbiBrdWVzaW9uZXIgc2VjYXJhIHN0YXRpc3Rpay4gDQoNCi0JTWVueWlhcGthbiBzaW11bGFzaSBzdHJhdGVnaSBwZW5nYW1iaWxhbiBzYW1wZWwgZGFuIHBlbmdvbGFoYW4gZGF0YSBhd2FsLiANCg0KDQpMaW5rIEdmb3JtOg0KaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZm9ybXMvZC9lLzFGQUlwUUxTZUFoUkkyRlF4bjQwZnpLOW14NUphMDctSFhPWWVvNWh4V29lVnZPRlVNMGttcGVnL3ZpZXdmb3JtP3VzcD1oZWFkZXINCg0KDQojIyMgKipMYXBvcmFuIEV2YWx1YXNpIEtlcHVhc2FuIE1haGFzaXN3YSB0ZXJoYWRhcCBMYXlhbmFuIEFrYWRlbWlrKioNCg0KLS0tDQoNCiMjIyAqKjEuIFBlcmFuY2FuZ2FuIEluc3RydW1lbiBLdWVzaW9uZXIgKDI1IFBlcnRhbnlhYW4gVXRhbWEpKioNCg0KSW5zdHJ1bWVuIHN1cnZlaSB5YW5nIGRpZ3VuYWthbiB0ZXJkaXJpIGRhcmkgKioyNSBwZXJ0YW55YWFuIHV0YW1hKiogeWFuZyBkaXJhbmNhbmcgdW50dWsgbWVuZ2V2YWx1YXNpIGJlcmJhZ2FpIGFzcGVrIGxheWFuYW4gYWthZGVtaWsga2FtcHVzLiBQZXJ0YW55YWFuIGRpc3VzdW4gZGVuZ2FuICoqYmVyYWdhbSBiZW50dWsgc2thbGEgZGFuIHRpcGUqKiwgZ3VuYSBtZW1wZXJvbGVoIGRhdGEgeWFuZyBrb21wcmVoZW5zaWYgZGFuIHZhcmlhdGlmLg0KDQojIyMjICoqVmFyaWFzaSBTa2FsYSBkYW4gQmVudHVrIFBlcnRhbnlhYW46KioNCg0KfCAqKkplbmlzIFBlcnRhbnlhYW4qKiAgICAgICAgICAgICAgICAgICAgICAgfCAqKkp1bWxhaCBJdGVtKiogfCAqKkNvbnRvaCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IFNrYWxhIExpa2VydCAx4oCTNSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNSBidXRpciAgICAgICAgfCBTZWJlcmFwYSBwdWFzIEFuZGEgdGVyaGFkYXAgbGF5YW5hbiBkb3NlbiB3YWxpPyAgICAgICB8DQp8IFBpbGloYW4gZ2FuZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSBidXRpciAgICAgICAgIHwgQXBhIGp1cnVzYW4gQW5kYSBzYWF0IGluaT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwgUGVydGFueWFhbiBpc2lhbiBzaW5na2F0ICAgICAgICAgICAgICAgICAgfCAyIGJ1dGlyICAgICAgICAgfCBTYXJhbiBBbmRhIHVudHVrIHBlcmJhaWthbiBsYXlhbmFuIGFrYWRlbWlrPyAgICAgICAgICB8DQp8IEtvdGFrIGNlbnRhbmcgKG11bHRpcGxlIGFuc3dlciBhbGxvd2VkKSAgIHwgMiBidXRpciAgICAgICAgIHwgTGF5YW5hbiBtYW5hIHlhbmcgc2VyaW5nIEFuZGEgZ3VuYWthbj8gICAgICAgICAgICAgICAgfA0KfCBQZXJ0YW55YWFuIGxpbmllci9za2FsYSBncmlkICAgICAgICAgICAgICB8IDEgYnV0aXIgICAgICAgICB8IFBlbmlsYWlhbiBBbmRhIHRlcmhhZGFwIGZhc2lsaXRhcyBrYW1wdXMgc2VjYXJhIHVtdW0uIHwNCg0KUGVydGFueWFhbiBkaWZva3Vza2FuIHBhZGEgYXNwZWstYXNwZWsgcGVudGluZyBzZXBlcnRpOg0KDQotIFBlbGF5YW5hbiBhZG1pbmlzdHJhc2kgYWthZGVtaWsNCg0KLSBSZXNwb25zIGRvc2VuIGRhbiBzdGFmDQoNCi0gQWtzZXMgc2lzdGVtIGluZm9ybWFzaSAoS1JTL0tIUyBvbmxpbmUpDQoNCi0gRmFzaWxpdGFzIHBlbnVuamFuZyAoa2VsYXMsIHdpZmksIGRsbC4pDQoNCi0gS2VqZWxhc2FuIGF0dXJhbiBha2FkZW1paw0KDQotIEtlbXVkYWhhbiBwcm9zZWR1ciBha2FkZW1paw0KDQotLS0NCg0KIyMjICoqMi4gU2lzdGVtIFZhbGlkYXNpIEluc3RydW1lbioqDQoNCkFnYXIgaW5zdHJ1bWVuIGt1ZXNpb25lciB2YWxpZCBkYW4gbGF5YWsgZGlndW5ha2FuLCBkaWxha3VrYW4gYmViZXJhcGEgbGFuZ2thaCB2YWxpZGFzaToNCg0KIyMjIyAqKmEuIFZhbGlkYXNpIElzaSAoQ29udGVudCBWYWxpZGl0eSkqKg0KSW5zdHJ1bWVuIGRpcmFuY2FuZyBiZXJkYXNhcmthbiBpbmRpa2F0b3IgbGF5YW5hbiBha2FkZW1payBzdGFuZGFyIHlhbmcgc2VyaW5nIGRpZ3VuYWthbiBkaSBwZW5kaWRpa2FuIHRpbmdnaS4gVGlhcCBpdGVtIGRpdWppIGFwYWthaCBiZW5hci1iZW5hciBtZW5jZXJtaW5rYW4gYXNwZWsgeWFuZyBpbmdpbiBkaXVrdXIsIG1pc2FsbnlhIGtlcHVhc2FuIHRlcmhhZGFwIGRvc2VuIHdhbGksIGFrc2VzIGluZm9ybWFzaSwgZGFuIHNlYmFnYWlueWEuDQoNCiMjIyMgKipiLiBVamkgUmVsaWFiaWxpdGFzKioNClJlbGlhYmlsaXRhcyBkYXBhdCBkaXVqaSBtZW5nZ3VuYWthbiAqKkNyb25iYWNoJ3MgQWxwaGEqKi4gQmVyZGFzYXJrYW4gc2ltdWxhc2kgZGF0YSAxMDAgcmVzcG9uZGVuOg0KDQoNCi0gTmlsYWkgQ3JvbmJhY2gncyBBbHBoYSBrZXNlbHVydWhhbiB1bnR1ayBza2FsYSBMaWtlcnQgYWRhbGFoICoqMC44MyoqLCB5YW5nIGJlcmFydGkgaW5zdHJ1bWVuIHRlcm1hc3VrICoqc2FuZ2F0IHJlbGlhYmVsKiogKHN0YW5kYXIg4omlIDAuNykuDQoNCi0gVGlkYWsgYWRhIGl0ZW0geWFuZyBzZWNhcmEgc2lnbmlmaWthbiBtZW51cnVua2FuIHJlbGlhYmlsaXRhcyBzYWF0IGRpaGFwdXMuDQoNCiMjIyMgKipjLiBWYWxpZGFzaSBSZXNwb24qKg0KU2lzdGVtIEdvb2dsZSBGb3JtIHN1ZGFoIGRpYXR1ciB1bnR1azoNCg0KLSBXYWppYiBkaWlzaSBzZWx1cnVoIGl0ZW0gdXRhbWENCg0KLSBUaWRhayBib2xlaCBkaWtpcmltIGR1YSBrYWxpIGRhcmkgYWxhbWF0IGVtYWlsIHlhbmcgc2FtYQ0KDQotIEZvcm1hdCByZXNwb24gKG1pc2FsbnlhIGFuZ2thIHVudHVrIGFuZ2thdGFuKSBzdWRhaCBkaXRlbnR1a2FuIHVudHVrIG1lbWluaW1hbGthbiBrZXNhbGFoYW4gaW5wdXQNCg0KLS0tDQoNCiMjIyAqKjMuIE1ldG9kZSBEaXN0cmlidXNpIGRhbiBQZW5ndWppYW4gS3Vlc2lvbmVyIFNlY2FyYSBTdGF0aXN0aWsqKg0KDQojIyMjICoqYS4gTWV0b2RlIERpc3RyaWJ1c2kqKg0KS3Vlc2lvbmVyIGRpZGlzdHJpYnVzaWthbiBtZWxhbHVpOg0KDQotIEdydXAgV2hhdHNBcHAgYW5na2F0YW4gZGFuIGp1cnVzYW4NCg0KLSBFbWFpbCByZXNtaSBrYW1wdXMNCg0KLSBNZWRpYSBzb3NpYWwgKEluc3RhZ3JhbSBzdG9yeSBha3VuIG9yZ2FuaXNhc2kgbWFoYXNpc3dhKQ0KDQpEaXN0cmlidXNpIGRpbGFrdWthbiBzZWNhcmEgKipvbmxpbmUgZGFuIGFub25pbSoqLCBhZ2FyIHJlc3BvbmRlbiBkYXBhdCBtZW5naXNpIGRlbmdhbiBiZWJhcyB0YW5wYSB0ZWthbmFuIGRhbiBjZXBhdCB0ZXJrdW1wdWwuDQoNCiMjIyMgKipiLiBVamkgU3RhdGlzdGlrIERlc2tyaXB0aWYqKg0KDQp8ICoqQXNwZWsgeWFuZyBEaW5pbGFpKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKipSYXRhLXJhdGEqKiB8ICoqU2ltcGFuZ2FuIEJha3UqKiB8ICoqS2F0ZWdvcmkqKiAgICAgICAgICAgICAgICAgIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBQZWxheWFuYW4gQWRtaW5pc3RyYXNpIEFrYWRlbWlrICAgICAgICAgICAgICAgICAgICB8IDMuOSAgICAgICAgICAgfCAwLjggICAgICAgICAgICAgICAgfCBDdWt1cCBQdWFzICAgICAgICAgICAgICAgICAgICB8DQp8IEtlY2VwYXRhbiBSZXNwb25zIFN0YWYgQWthZGVtaWsgICAgICAgICAgICAgICAgICAgIHwgMy43ICAgICAgICAgICB8IDEuMCAgICAgICAgICAgICAgICB8IFZhcmlhdGlmICAgICAgICAgICAgICAgICAgICAgIHwNCnwgS2V0ZXJzZWRpYWFuIEluZm9ybWFzaSBBa2FkZW1payAgICAgICAgICAgICAgICAgICAgfCA0LjEgICAgICAgICAgIHwgMC42ICAgICAgICAgICAgICAgIHwgUHVhcyBkYW4gS29uc2lzdGVuICAgICAgICAgICAgfA0KfCBBa3NlcyBLUlMvS0hTIE9ubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQuMyAgICAgICAgICAgfCAwLjUgICAgICAgICAgICAgICAgfCBTYW5nYXQgUHVhcyAgICAgICAgICAgICAgICAgICB8DQp8IExheWFuYW4gRG9zZW4gV2FsaS9QZW1iaW1iaW5nICAgICAgICAgICAgICAgICAgICAgIHwgMy42ICAgICAgICAgICB8IDAuOSAgICAgICAgICAgICAgICB8IEN1a3VwLCBQZXJsdSBQZW5pbmdrYXRhbiAgICAgIHwNCnwgRmFzaWxpdGFzIEFrYWRlbWlrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLjQgICAgICAgICAgIHwgMS4xICAgICAgICAgICAgICAgIHwgTWFzaWggUGVybHUgRGlwZXJiYWlraSAgICAgICAgfA0KfCBTb3NpYWxpc2FzaSBBdHVyYW4gQWthZGVtaWsgICAgICAgICAgICAgICAgICAgICAgICB8IDMuNyAgICAgICAgICAgfCAwLjkgICAgICAgICAgICAgICAgfCBDdWt1cCBKZWxhcywgdGFwaSBWYXJpYXRpZiAgICB8DQoNCiMjIyMgKipjLiBLb3JlbGFzaSBBbnRhciBWYXJpYWJlbCAoT3BzaW9uYWwpKioNCg0KfCAqKlZhcmlhYmVsIFgqKiAgICAgICAgICAgICAgICAgICAgICAgIHwgKipWYXJpYWJlbCBZKiogICAgICAgICAgICAgICAgICAgICAgICAgfCAqKnIqKiAgIHwgKipJbnRlcnByZXRhc2kqKiAgICAgICAgICAgIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBJbmZvcm1hc2kgQWthZGVtaWsgICAgICAgICAgICAgICAgICAgfCBMYXlhbmFuIERvc2VuIFdhbGkgICAgICAgICAgICAgICAgICAgICB8IDAuNTIgICB8IFBvc2l0aWYgU2VkYW5nICAgICAgICAgICAgICB8DQp8IEZhc2lsaXRhcyBLYW1wdXMgICAgICAgICAgICAgICAgICAgICB8IFBlbGF5YW5hbiBBZG1pbmlzdHJhc2kgQWthZGVtaWsgICAgICAgIHwgMC40MyAgIHwgUG9zaXRpZiBTZWRhbmcgICAgICAgICAgICAgIHwNCnwgS2VqZWxhc2FuIFNvc2lhbGlzYXNpICAgICAgICAgICAgICAgIHwgS2VjZXBhdGFuIFJlc3BvbnMgU3RhZiBBa2FkZW1payAgICAgICAgfCAwLjYxICAgfCBLb3JlbGFzaSBLdWF0ICAgICAgICAgICAgICAgfA0KDQotLS0NCg0KIyMjICoqNC4gU2ltdWxhc2kgU3RyYXRlZ2kgUGVuZ2FtYmlsYW4gU2FtcGVsIGRhbiBQZW5nb2xhaGFuIERhdGEgQXdhbCoqDQoNCiMjIyMgKiphLiBTdHJhdGVnaSBQZW5nYW1iaWxhbiBTYW1wZWwqKg0KTWV0b2RlIHNhbXBsaW5nIHlhbmcgZGlndW5ha2FuIGFkYWxhaCAqKnN0cmF0aWZpZWQgcmFuZG9tIHNhbXBsaW5nKiosIGJlcmRhc2Fya2FuIHZhcmlhYmVsOg0KDQotICoqQW5na2F0YW4qKiAoMjAyMOKAkzIwMjMpDQoNCi0gKipGYWt1bHRhcy9KdXJ1c2FuKioNCg0KRGlzdHJpYnVzaSByZXNwb25kZW46DQoNCnwgKipBbmdrYXRhbioqIHwgKipKdW1sYWggUmVzcG9uZGVuKiogfA0KfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQp8IDIwMjAgICAgICAgICB8IDE1ICAgICAgICAgICAgICAgICAgIHwNCnwgMjAyMSAgICAgICAgIHwgMjUgICAgICAgICAgICAgICAgICAgfA0KfCAyMDIyICAgICAgICAgfCAzMCAgICAgICAgICAgICAgICAgICB8DQp8IDIwMjMgICAgICAgICB8IDMwICAgICAgICAgICAgICAgICAgIHwNCg0KfCAqKkZha3VsdGFzKiogICAgICAgICB8ICoqUGVyc2VudGFzZSoqIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18DQp8IElsbXUgS29tcHV0ZXIgICAgICAgIHwgMzAlICAgICAgICAgICAgfA0KfCBFa29ub21pICAgICAgICAgICAgICB8IDI1JSAgICAgICAgICAgIHwNCnwgSHVrdW0gICAgICAgICAgICAgICAgfCAyMCUgICAgICAgICAgICB8DQp8IFRla25payAgICAgICAgICAgICAgIHwgMTUlICAgICAgICAgICAgfA0KfCBGSVNJUCAgICAgICAgICAgICAgICB8IDEwJSAgICAgICAgICAgIHwNCg0KU3RyYXRpZmlrYXNpIGluaSBkaXBpbGloIGFnYXIgbWV3YWtpbGkgc2VsdXJ1aCBrZWxvbXBvayBtYWhhc2lzd2Egc2VjYXJhIHByb3BvcnNpb25hbC4NCg0KIyMjIyAqKmIuIFBlbmdvbGFoYW4gRGF0YSBBd2FsKioNCg0KIyMjICAqKlBlbmdvbGFoYW4gRGF0YSBBd2FsKioNCg0KU2V0ZWxhaCBkYXRhIGRhcmkgMTAwIHJlc3BvbmRlbiB0ZXJrdW1wdWwgbWVsYWx1aSBHb29nbGUgRm9ybSwgbGFuZ2thaCBwZXJ0YW1hIHlhbmcgc2F5YSBsYWt1a2FuIGFkYWxhaCBtZW5nZWtzcG9yIHNlbHVydWggaGFzaWwga2UgZGFsYW0gZm9ybWF0ICoqR29vZ2xlIFNwcmVhZHNoZWV0KiogZGFuIGtlbXVkaWFuIHNheWEgc2ltcGFuIGRhbGFtIGJlbnR1ayAqKkV4Y2VsICgueGxzeCkqKiB1bnR1ayBtZW11ZGFoa2FuIHBlbmdvbGFoYW4gbGViaWggbGFuanV0Lg0KDQojIyMgKioxLiBQZW1iZXJzaWhhbiBEYXRhKioNClNlbXVhIGRhdGEgZGlueWF0YWthbiB2YWxpZCBrYXJlbmE6DQoNCi0gU2V0aWFwIHBlcnRhbnlhYW4gcGFkYSBmb3JtIHNheWEgYXR1ciBzZWJhZ2FpICoqIndhamliIGRpaXNpIioqLCBzZWhpbmdnYSB0aWRhayBhZGEgcmVzcG9uIGtvc29uZy4NCg0KLSBHb29nbGUgRm9ybSBqdWdhIG1lbWJhdGFzaSBzYXR1IHJlc3BvbiBwZXIgYWt1biwgamFkaSAqKnRpZGFrIGRpdGVtdWthbiBkdXBsaWthc2kgZGF0YSoqLg0KDQojIyMgKioyLiBLb252ZXJzaSBEYXRhIGtlIEZvcm1hdCBOdW1lcmlrKioNClVudHVrIHBlcnRhbnlhYW4gYmVyc2thbGEgKExpa2VydCAx4oCTNSksIHNheWEgdWJhaCBqYXdhYmFuIHRla3MgbWVuamFkaSBhbmdrYSB1bnR1ayBrZXBlcmx1YW4gYW5hbGlzaXMgc3RhdGlzdGlrLCBkZW5nYW4ga2V0ZW50dWFuOg0KDQotIDEgPSBTYW5nYXQgVGlkYWsgUHVhcw0KDQotIDIgPSBUaWRhayBQdWFzDQoNCi0gMyA9IE5ldHJhbA0KDQotIDQgPSBQdWFzDQoNCi0gNSA9IFNhbmdhdCBQdWFzDQoNCkhhbCBpbmkgZGlsYWt1a2FuIGFnYXIgZGFwYXQgZGloaXR1bmcgKipuaWxhaSByYXRhLXJhdGEgZGFuIHNpbXBhbmdhbiBiYWt1KiogcGFkYSBtYXNpbmctbWFzaW5nIGFzcGVrIGxheWFuYW4gYWthZGVtaWsuDQoNCiMjIyAqKjMuIFBlcmhpdHVuZ2FuIFN0YXRpc3RpayBEZXNrcmlwdGlmKioNCg0KQmVyaWt1dCBoYXNpbCBwZXJoaXR1bmdhbiByYXRhLXJhdGEgZGFuIHNpbXBhbmdhbiBiYWt1IGJlcmRhc2Fya2FuIGRhdGEgMTAwIHJlc3BvbmRlbjoNCg0KfCAqKkFzcGVrIHlhbmcgRGluaWxhaSoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICoqUmF0YS1yYXRhIFNrb3IqKiB8ICoqU2ltcGFuZ2FuIEJha3UqKiB8ICoqSW50ZXJwcmV0YXNpKiogICAgICAgICAgICAgICAgICAgIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBQZWxheWFuYW4gQWRtaW5pc3RyYXNpIEFrYWRlbWlrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMuOSAgICAgICAgICAgICAgICAgfCAwLjggICAgICAgICAgICAgICAgfCBDdWt1cCBQdWFzICAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IEtlY2VwYXRhbiBSZXNwb25zIFN0YWYgQWthZGVtaWsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMy43ICAgICAgICAgICAgICAgICB8IDEuMCAgICAgICAgICAgICAgICB8IENlbmRlcnVuZyBWYXJpYXRpZiAgICAgICAgICAgICAgICAgIHwNCnwgS2V0ZXJzZWRpYWFuIGRhbiBBa3NlcyBJbmZvcm1hc2kgQWthZGVtaWsgICAgICAgICAgICAgICAgICAgfCA0LjEgICAgICAgICAgICAgICAgIHwgMC42ICAgICAgICAgICAgICAgIHwgUHVhcyBkYW4gS29uc2lzdGVuICAgICAgICAgICAgICAgICAgfA0KfCBLZW11ZGFoYW4gTWVuZ2Frc2VzIEtSUy9LSFMgT25saW5lICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQuMyAgICAgICAgICAgICAgICAgfCAwLjUgICAgICAgICAgICAgICAgfCBTYW5nYXQgUHVhcyAgICAgICAgICAgICAgICAgICAgICAgICB8DQp8IExheWFuYW4gRG9zZW4gV2FsaSBkYW4gRG9zZW4gUGVtYmltYmluZyAgICAgICAgICAgICAgICAgICAgIHwgMy42ICAgICAgICAgICAgICAgICB8IDAuOSAgICAgICAgICAgICAgICB8IEN1a3VwLCB0YXBpIG1hc2loIGJlcnZhcmlhc2kgICAgICAgIHwNCnwgUGVuZ2Vsb2xhYW4gSmFkd2FsIFBlcmt1bGlhaGFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLjggICAgICAgICAgICAgICAgIHwgMC43ICAgICAgICAgICAgICAgIHwgQ3VrdXAgUHVhcyAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KfCBGYXNpbGl0YXMgUGVuZHVrdW5nIEFrYWRlbWlrIChydWFuZyBrZWxhcywgd2lmaSwgZHNiLikgICAgICB8IDMuNCAgICAgICAgICAgICAgICAgfCAxLjEgICAgICAgICAgICAgICAgfCBNYXNpaCBQZXJsdSBEaXRpbmdrYXRrYW4gICAgICAgICAgICB8DQp8IFByb3NlZHVyIEFkbWluaXN0cmFzaSBBa2FkZW1payAoY3V0aSwgcGluZGFoIGRzYi4pICAgICAgICAgIHwgMy41ICAgICAgICAgICAgICAgICB8IDAuOCAgICAgICAgICAgICAgICB8IFNlZGFuZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwgU29zaWFsaXNhc2kgQXR1cmFuIEFrYWRlbWlrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLjcgICAgICAgICAgICAgICAgIHwgMC45ICAgICAgICAgICAgICAgIHwgQ3VrdXAgSmVsYXMsIG5hbXVuIHZhcmlhdGlmICAgICAgICAgfA0KDQojIyMgKio0LiBBbmFsaXNpcyBLb3JlbGFzaSoqDQoNClNheWEganVnYSBtZWxha3VrYW4gYW5hbGlzaXMga29yZWxhc2kgYW50YXIgYmViZXJhcGEgYXNwZWsgbGF5YW5hbiB1bnR1ayBtZW5nZXRhaHVpIGFwYWthaCBhZGEgaHVidW5nYW4geWFuZyBzaWduaWZpa2FuIGFudGFyIHZhcmlhYmVsLg0KDQp8ICoqVmFyaWFiZWwgWCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICoqVmFyaWFiZWwgWSoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqKktvZWZpc2llbiBLb3JlbGFzaSAocikqKiB8ICoqSW50ZXJwcmV0YXNpKiogICAgICAgICAgICAgIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBLZXB1YXNhbiB0ZXJoYWRhcCBJbmZvcm1hc2kgQWthZGVtaWsgICAgICAgICB8IEtlcHVhc2FuIHRlcmhhZGFwIERvc2VuIFdhbGkgICAgICAgICAgICAgICAgfCAwLjUyICAgICAgICAgICAgICAgICAgICAgICAgfCBLb3JlbGFzaSBwb3NpdGlmIHNlZGFuZyAgICAgICB8DQp8IEtlcHVhc2FuIHRlcmhhZGFwIEZhc2lsaXRhcyBLYW1wdXMgICAgICAgICAgIHwgS2VwdWFzYW4gdGVyaGFkYXAgQWRtaW5pc3RyYXNpIEFrYWRlbWlrICAgICB8IDAuNDMgICAgICAgICAgICAgICAgICAgICAgICB8IEtvcmVsYXNpIHBvc2l0aWYgc2VkYW5nICAgICAgIHwNCnwgS2VqZWxhc2FuIFNvc2lhbGlzYXNpIEF0dXJhbiBBa2FkZW1payAgICAgICAgfCBLZWNlcGF0YW4gUmVzcG9ucyBTdGFmIEFrYWRlbWlrICAgICAgICAgICAgIHwgMC42MSAgICAgICAgICAgICAgICAgICAgICAgIHwgS29yZWxhc2kgcG9zaXRpZiBrdWF0ICAgICAgICAgfA0KDQpJbnRlcnByZXRhc2lueWEgYWRhbGFoLCBtYWhhc2lzd2EgeWFuZyBtZXJhc2EgaW5mb3JtYXNpIGFrYWRlbWlrIGplbGFzIGRhbiBtdWRhaCBkaWFrc2VzIGNlbmRlcnVuZyBqdWdhIG1lcmFzYSBwdWFzIGRlbmdhbiBsYXlhbmFuIGRvc2VuIHdhbGkuIEJlZ2l0dSBwdWxhLCBtZXJla2EgeWFuZyBtZXJhc2Egc29zaWFsaXNhc2kgYXR1cmFuIGRpbGFrdWthbiBkZW5nYW4gYmFpaywganVnYSBtZW5pbGFpIHN0YWYgYWthZGVtaWsgbGViaWggcmVzcG9uc2lmLiBBcnRpbnlhLCAqKnRyYW5zcGFyYW5zaSBkYW4ga29tdW5pa2FzaSBzYW5nYXQgbWVtZW5nYXJ1aGkga2VwdWFzYW4gc2VjYXJhIHVtdW0uKioNCg0KDQoNCiMjIyAqKktlc2ltcHVsYW4gQXdhbCoqDQoNCkJlcmRhc2Fya2FuIGhhc2lsIHBlbmdvbGFoYW4gYXdhbCBkYXJpIDEwMCByZXNwb25kZW4sIHNheWEgbWVueWltcHVsa2FuIGJhaHdhOg0KDQotIFNlY2FyYSB1bXVtIG1haGFzaXN3YSBtZXJhc2EgKipjdWt1cCBwdWFzIHRlcmhhZGFwIGxheWFuYW4gYWthZGVtaWsga2FtcHVzKiosIHRlcnV0YW1hIGRhbGFtIGhhbCAqKmFrc2VzIGluZm9ybWFzaSBha2FkZW1payBkYW4gc2lzdGVtIG9ubGluZSBzZXBlcnRpIEtSUy9LSFMqKi4NCg0KLSBOYW11biwgKipmYXNpbGl0YXMgcGVuZHVrdW5nIHNlcGVydGkgcnVhbmcga2VsYXMgZGFuIHdpZmkgbWFzaWggcGVybHUgZGl0aW5na2F0a2FuKiosIGthcmVuYSBtZW1pbGlraSBza29yIGRhbiBzaW1wYW5nYW4gYmFrdSB5YW5nIHJlbmRhaCwgbWVudW5qdWtrYW4gKiprZXRpZGFra29uc2lzdGVuYW4gcGVuZ2FsYW1hbiBtYWhhc2lzd2EqKi4NCg0KLSBLb3JlbGFzaSBwb3NpdGlmIGFudGFyIHZhcmlhYmVsIG1lbnVuanVra2FuIGJhaHdhICoqYXNwZWsga29tdW5pa2FzaSBkYW4gaW5mb3JtYXNpIHNhbmdhdCBiZXJwZXJhbiBkYWxhbSBtZW1iZW50dWsgcGVyc2Vwc2kgbWFoYXNpc3dhIHRlcmhhZGFwIGxheWFuYW4ga2FtcHVzIHNlY2FyYSBrZXNlbHVydWhhbioqLg0KDQotLS0NCg0KDQogKioxLiBEaWFncmFtIFBpZSDigJMgRGlzdHJpYnVzaSBKZW5pcyBLZWxhbWluICYgRmFrdWx0YXMqKg0KDQpgYGB7cn0NCiMgUGllIENoYXJ0IEplbmlzIEtlbGFtaW4NCmdlbmRlciA8LSBjKCJQZXJlbXB1YW4iLCAiTGFraS1sYWtpIikNCnBlcmNlbnRhZ2UgPC0gYyg2NSwgMzUpDQpjb2xvcnMgPC0gYygiI2Y5YTFiYyIsICIjYTFjNGY5IikNCg0KcGllKHBlcmNlbnRhZ2UsIGxhYmVscyA9IHBhc3RlKGdlbmRlciwgcGVyY2VudGFnZSwgIiUiKSwgY29sID0gY29sb3JzLA0KICAgIG1haW4gPSAiRGlzdHJpYnVzaSBKZW5pcyBLZWxhbWluIFJlc3BvbmRlbiIpDQoNCiMgUGllIENoYXJ0IEZha3VsdGFzL0p1cnVzYW4NCmZha3VsdGFzIDwtIGMoIkVrb25vbWkiLCAiSHVrdW0iLCAiSWxtdSBLb21wdXRlciIsICJUZWtuaWsiLCAiRklTSVAiKQ0KZmFrdWx0YXNfcGVyc2VuIDwtIGMoMjUsIDIwLCAzMCwgMTUsIDEwKQ0KY29sb3JzMiA8LSBjKCIjZjljNzRmIiwgIiM5MGJlNmQiLCAiIzU3NzU5MCIsICIjZjk0MTQ0IiwgIiM0M2FhOGIiKQ0KDQpwaWUoZmFrdWx0YXNfcGVyc2VuLCBsYWJlbHMgPSBwYXN0ZShmYWt1bHRhcywgZmFrdWx0YXNfcGVyc2VuLCAiJSIpLCBjb2wgPSBjb2xvcnMyLA0KICAgIG1haW4gPSAiRGlzdHJpYnVzaSBGYWt1bHRhcy9KdXJ1c2FuIikNCg0KYGBgDQoNCiANCiANCiAqKkludGVycHJldGFzaToqKg0KDQpEYXJpIGRpYWdyYW0gcGllLCB0ZXJsaWhhdCBiYWh3YSBtYXlvcml0YXMgcmVzcG9uZGVuIGFkYWxhaCBtYWhhc2lzd2EgcGVyZW1wdWFuICg2NSUpLCBzZWRhbmdrYW4gbGFraS1sYWtpIGhhbnlhIDM1JS4NCg0KSW5pIG1lbnVuanVra2FuIGJhaHdhIHBhcnRpc2lwYXNpIHN1cnZlaSBsZWJpaCBiYW55YWsgYmVyYXNhbCBkYXJpIG1haGFzaXN3aSwgeWFuZyBiaXNhIG1lbWVuZ2FydWhpIHBvbGEga2VwdWFzYW7igJRtaXNhbG55YSwgcHJlZmVyZW5zaSB0ZXJoYWRhcCBsYXlhbmFuIGF0YXUga29tdW5pa2FzaSBrYW1wdXMuDQoNClJlc3BvbmRlbiB0ZXJiYW55YWsgYmVyYXNhbCBkYXJpIElsbXUgS29tcHV0ZXIgKDMwJSksIGRpaWt1dGkgb2xlaCBFa29ub21pICgyNSUpLCBIdWt1bSAoMjAlKSwgVGVrbmlrICgxNSUpLCBkYW4gRklTSVAgKDEwJSkuDQoNCkluaSBtZW51bmp1a2thbiBiYWh3YSBmYWt1bHRhcyBiZXJiYXNpcyB0ZWtub2xvZ2kgZGFuIHNvc2lhbC1la29ub21pIGxlYmloIGFrdGlmIGRhbGFtIHBlbmdpc2lhbiBzdXJ2ZWkuDQoNCkRpc3RyaWJ1c2kgaW5pIHBlbnRpbmcgZGFsYW0gaW50ZXJwcmV0YXNpIGhhc2lsLCBrYXJlbmEgYmlzYSBqYWRpIGtlYnV0dWhhbiBkYW4gZWtzcGVrdGFzaSB0aWFwIGZha3VsdGFzIGJlcmJlZGEgKG1pc2FsOiBJbG11IEtvbXB1dGVyIGxlYmloIHNlbnNpdGlmIHRlcmhhZGFwIGFrc2VzIHNpc3RlbSBkaWdpdGFsKS4NCg0KICoqMi4gR3JhZmlrIEJhdGFuZyDigJMgUmF0YS1yYXRhIFNrb3IgS2VwdWFzYW4gVGlhcCBBc3BlayoqDQogDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCg0KYXNwZWsgPC0gYygiQWRtaW5pc3RyYXNpIEFrYWRlbWlrIiwgIlJlc3BvbnMgU3RhZiBBa2FkZW1payIsICJJbmZvcm1hc2kgQWthZGVtaWsiLA0KICAgICAgICAgICAiS1JTL0tIUyBPbmxpbmUiLCAiRG9zZW4gV2FsaSIsICJKYWR3YWwgS3VsaWFoIiwgDQogICAgICAgICAgICJGYXNpbGl0YXMgS2FtcHVzIiwgIlByb3NlZHVyIEFkbWluaXN0cmFzaSIsICJTb3NpYWxpc2FzaSBBdHVyYW4iKQ0KDQpza29yIDwtIGMoMy45LCAzLjcsIDQuMSwgNC4zLCAzLjYsIDMuOCwgMy40LCAzLjUsIDMuNykNCg0KZGZfa2VwdWFzYW4gPC0gZGF0YS5mcmFtZShBc3BlayA9IGZhY3Rvcihhc3BlaywgbGV2ZWxzID0gcmV2KGFzcGVrKSksIFNrb3IgPSBza29yKQ0KDQpnZ3Bsb3QoZGZfa2VwdWFzYW4sIGFlcyh4ID0gU2tvciwgeSA9IEFzcGVrKSkgKw0KICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IiwgZmlsbCA9ICJzdGVlbGJsdWUiKSArDQogIGxhYnModGl0bGUgPSAiUmF0YS1yYXRhIFNrb3IgS2VwdWFzYW4gVGlhcCBBc3BlayIsDQogICAgICAgeCA9ICJTa29yICgx4oCTNSkiLCB5ID0gIkFzcGVrIikgKw0KICB4bGltKDAsIDUpICsNCiAgdGhlbWVfbWluaW1hbCgpDQoNCmBgYA0KDQoqKkludGVycHJldGFzaToqKg0KDQotIFRlcnRpbmdnaTogS2VtdWRhaGFuIEFrc2VzIEtSUy9LSFMgT25saW5lICg0LjMpLCBtZW51bmp1a2thbiBzaXN0ZW0gZGlnaXRhbCBha2FkZW1payBkaWFuZ2dhcCBzYW5nYXQgbWVtdWRhaGthbi4NCg0KLSBEaXN1c3VsIG9sZWggSW5mb3JtYXNpIEFrYWRlbWlrICg0LjEpIGRhbiBBZG1pbmlzdHJhc2kgQWthZGVtaWsgKDMuOSksIHlhbmcgYXJ0aW55YSBhc3BlayBwZWxheWFuYW4gYmVyYmFzaXMgc2lzdGVtIGN1a3VwIG1lbXVhc2thbi4NCg0KLSBUZXJlbmRhaDogRmFzaWxpdGFzIEthbXB1cyAoMy40KSwgZGlpa3V0aSBEb3NlbiBXYWxpICgzLjYpLCBtZW51bmp1a2thbiBtYXNpaCBiYW55YWsgbWFoYXNpc3dhIHlhbmcgbWVyYXNhIGt1YWxpdGFzIHJ1YW5nIGtlbGFzLCBXaUZpLCBkYW4gaW50ZXJha3NpIGRlbmdhbiBkb3NlbiB3YWxpIGJlbHVtIG9wdGltYWwuDQoNCi0gU2ltcGFuZ2FuIGJha3UgeWFuZyBiZXJ2YXJpYXNpICh0ZXJsaWhhdCBkaSBkYXRhIHNlYmVsdW1ueWEpIG1lbnVuanVra2FuIHBlcmJlZGFhbiBwZW5nYWxhbWFuIGFudGFyIG1haGFzaXN3YSBiaXNhIGN1a3VwIGJlc2FyIGRpIGJlYmVyYXBhIGFzcGVrLg0KDQoqKjMuIERpYWdyYW0gR2FyaXMg4oCTIFRyZW4gS2VwdWFzYW4gQW50YXIgQW5na2F0YW4qKg0KDQpgYGB7cn0NCmFuZ2thdGFuIDwtIGMoIjIwMjAiLCAiMjAyMSIsICIyMDIyIiwgIjIwMjMiKQ0Kc2tvcl9hbmdrYXRhbiA8LSBjKDMuOCwgMy43LCA0LjAsIDQuMSkNCg0KZGZfdHJlbiA8LSBkYXRhLmZyYW1lKEFuZ2thdGFuID0gYW5na2F0YW4sIFNrb3IgPSBza29yX2FuZ2thdGFuKQ0KDQpnZ3Bsb3QoZGZfdHJlbiwgYWVzKHggPSBBbmdrYXRhbiwgeSA9IFNrb3IsIGdyb3VwID0gMSkpICsNCiAgZ2VvbV9saW5lKGNvbG9yID0gIiMwMDc3YjYiLCBzaXplID0gMS4yKSArDQogIGdlb21fcG9pbnQoc2l6ZSA9IDMsIGNvbG9yID0gIiMwMDc3YjYiKSArDQogIGxhYnModGl0bGUgPSAiVHJlbiBLZXB1YXNhbiBBa2FkZW1payBCZXJkYXNhcmthbiBBbmdrYXRhbiIsDQogICAgICAgeSA9ICJSYXRhLXJhdGEgU2tvciIpICsNCiAgeWxpbSgzLjUsIDQuNSkgKw0KICB0aGVtZV9taW5pbWFsKCkNCg0KYGBgDQoNCioqSW50ZXJwcmV0YXNpOioqDQoNCi0gQW5na2F0YW4gMjAyMyBtZW5jYXRhdCB0aW5na2F0IGtlcHVhc2FuIHRlcnRpbmdnaSAoNC4xKSwgZGlzdXN1bCBhbmdrYXRhbiAyMDIyICg0LjApLg0KDQotIFNlbWVudGFyYSBhbmdrYXRhbiAyMDIxIGRhbiAyMDIwIGNlbmRlcnVuZyBsZWJpaCByZW5kYWggKG1hc2luZy1tYXNpbmcgMy43IGRhbiAzLjgpLg0KDQotIEtlbXVuZ2tpbmFuIGthcmVuYSBzaXN0ZW0gZGFuIGZhc2lsaXRhcyBrYW1wdXMgbXVsYWkgbWVtYmFpayBkaSB0YWh1bi10YWh1biB0ZXJiYXJ1LCBhdGF1IGthcmVuYSBtYWhhc2lzd2EgYmFydSBjZW5kZXJ1bmcgYmVsdW0gbWVuZ2FsYW1pIG1hc2FsYWggYWRtaW5pc3RyYXRpZiB5YW5nIGxlYmloIGtvbXBsZWtzLg0KDQotIEJpc2EganVnYSBrYXJlbmEgZWtzcGVrdGFzaSBtYWhhc2lzd2Egc2VuaW9yIGxlYmloIHRpbmdnaSwgYXRhdSBwZXJuYWggbWVuZ2FsYW1pIG1hc2EgdHJhbnNpc2kgKG1pc2FsbnlhOiBwYW5kZW1pIOKGkiBwYXNjYS1wYW5kZW1pKS4NCg0KKipLZXNpbXB1bGFuKioNCg0KDQotIE1haGFzaXN3YSBtZXJhc2EgY3VrdXAgcHVhcyB0ZXJoYWRhcCBsYXlhbmFuIGFrYWRlbWlrLCB0ZXJ1dGFtYSBkYWxhbSBoYWwgYWtzZXMgc2lzdGVtIGRpZ2l0YWwuDQoNCi0gTmFtdW4sIGFkYSBjYXRhdGFuIHBlbnRpbmcgZGkgYXNwZWsgaW50ZXJha3NpIHBlcnNvbmFsIChkb3NlbiB3YWxpKSBkYW4gZmFzaWxpdGFzIGZpc2lrIGthbXB1cyB5YW5nIGJ1dHVoIHBlcmhhdGlhbiBsZWJpaCBsYW5qdXQuDQoNCi0gS2VwdWFzYW4ganVnYSBiZXJ2YXJpYXNpIGFudGFyIGFuZ2thdGFuIGRhbiBmYWt1bHRhcywgc2VoaW5nZ2EgcGVyYmFpa2FuIGxheWFuYW4gc2ViYWlrbnlhIG1lbXBlcnRpbWJhbmdrYW4gc2VnbWVudGFzaSBrZWJ1dHVoYW4gbWFoYXNpc3dhLg0KDQo=