はじめに
この記事は、Qiita Advent Calendar 10日目の記事です。
以下の記事より、すべての記事をご覧になれます。
筆者について
- 現在高校2年生
- 水泳部マネージャー
- 生徒会長
- とある団体の代表
本編
本記事で利用するコードは全て下のリポジトリに保存されていますので、ぜひご利用ください。
きっかけ
僕は中高一貫校で中学1年生から生徒会に所属しているのですが、その中でずっと問題だったのが、「文化祭時期に物品を管理しているほどの余裕がない」ということでした。そもそもこんな状況になりうるのが組織運営としておかしいのですが、のぞいてますといくつかの理由が見えました。
- そもそもリソースが少なすぎてカツカツになる
- 執行部員が備品管理をそこまで重要なことだと考えていない
- もし仮に管理の当番に当たっていたとしても、他の緊急事態のことが入ってきて備品管理をそっちのけにしてしまう
このようなことになった結果、本部の備品を生徒が「勝手に持ち出していいだろう」と判断して持ち出してしまうということにつながるのです。1
環境
さて、僕の通っている学校での現状で利用できる環境は次のとおりです。
- 備品をとして提供されているMac
- Google Workspace (Education)
- その他各Macにインストールされているアプリケーション
- 各生徒が個人で持っているMacbookやiPad
このとおり、本校では基本的にApple製品を利用しており、かつオフィス系はGoogle Workspaceでした。ただ、ここでの大きな問題は僕自身がM1系を利用している一方で学校はIntel系のMacであることやセキュリティ的な問題からネイティブアプリを利用するのはコストがかかりすぎる上に、このためだけに学内でサーバーをたててもらうわけにもいかないので、手っ取り早くGoogle SpreadsheetとGoogle Apps Scriptを利用することにしました。
開発
開発に許されている期間は3日。他にもやらなければいけないこともあるので、開発期間の延長は許されません。仕組みとしては、貸出品についているQRコードを読み込み、続いて利用者ようのQRコードを読み込むことでスプレッドシートに自動的に記入されるという仕組みです。
スプレッドシートには以下のようなテーブルを作成します。
PASS | ID | TimeStamp | STATUS |
---|---|---|---|
また、各物品用と利用者用にIDとそのIDを埋め込んだQRコードを発行します。
つづいて、Google Spreadsheetのコンテナバインド型でGoogle Apps Scriptを起動し、以下のコードを入力します。
function doGet() {
const html = HtmlService.createTemplateFromFile('index').evaluate();
html.addMetaTag('viewport', 'width=device-width, initial-scale=1');
return html;
}
function registerData(a) {
const SHEETS = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Log');
SHEETS.appendRow(a);
return;
}
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous">
</script>
</head>
<body>
<h1 style="text-align:center;margin:25px;">自動貸出返却システム</h1>
<div style="display:flex;">
<div style="border:solid 5px #ffd6d6; margin:25px;">
<h2 style="text-align:center">QRコードリーダー</h2>
<div id="reader" style="width:340px;"></div>
<div id="result"></div>
<script src="https://unpkg.com/html5-qrcode"></script>
<script>
let status = "0";
let data = [];
function onScanSuccess(decodedText, decodedResult) {
beep1();
html5QrcodeScanner.pause();
if (status == "0") {
if (decodedText.slice(0, 4) == "PASS") {
data = [];
document.getElementById('p01').innerHTML = decodedText;
setTimeout(() => { html5QrcodeScanner.resume() }, 2000);
data.push(decodedText);
status = 1;
} else {
alert("faild");
html5QrcodeScanner.resume();
};
} else if (status == "1") {
if (decodedText.slice(0, 4) == "MGBS") {
document.getElementById('msg').style.visibility = "visible";
document.getElementById('p02').innerHTML = decodedText;
setTimeout(() => { html5QrcodeScanner.resume(); document.getElementById('p01').innerHTML = "NO DATA"; document.getElementById('p02').innerHTML = "NO DATA"; beep2(); document.getElementById('msg').style.visibility = "hidden"; }, 2000);
let date = new Date()
data.push(decodedText);
data.push(date.toString());
let typeOf = document.getElementById('p03').value;
data.push(typeOf);
google.script.run.registerData(data);
status = 0;
} else {
alert("faild");
html5QrcodeScanner.resume();
};
};
};
const html5QrcodeScanner = new Html5QrcodeScanner("reader", { fps: 10, qrbox: 240 });
html5QrcodeScanner.render(onScanSuccess);
const DATA_URL_1 = "data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=";
const DATA_URL_2 = "data:audio/mpeg;base64,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qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uybAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//uwbAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+7JsAA/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAARMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+7JsAA/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAARMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+7JsAA/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAARMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+7JsAA/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAARMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+7JsAA/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAARMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+7JsAA/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAARMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqr/+7JsAA/wAABpAAAACAAADSAAAAEAAAGkAAAAIAAANIAAAARMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqo="
const beep1 = () => {
AUDIO.src = DATA_URL_1;
};
const beep2 = () => {
AUDIO.src = DATA_URL_2;
}
const AUDIO = new Audio();
AUDIO.autoplay = true;
</script>
</div>
<div style="flex-grow:1;border:solid 5px #e0ffc1;margin:25px;">
<h2 style="text-align:center;">登録データ</h2>
<div>
<p style="height:32px;font-size:24px;text-decoration:underline;text-decoration-color: red;">会員No.</p>
<p id="p01">NO DATA</p>
</div>
<div>
<p style="height:32px;font-size:24px;text-decoration:underline;text-decoration-color: red;">貸出物No.</p>
<p id="p02">NO DATA</p>
</div>
<select id="p03" class="form-select" aria-label="Default select example">
<option value="borrow">貸出</option>
<option value="return">返却</option>
</select>
<script>
const selectorAll = document.querySelectorAll("button");
selectorAll.forEach(element => {
element.classList.add("btn");
element.classList.add("btn-primary");
});
</script>
</div>
</div>
<div style="border:solid 5px #8ec6ff;margin:25px;">
<h2 style="text-align:center;">システムメッセージ</h2>
<p style="visibility:hidden;text-align:center;font-size:32px;text-decoration:underline wavy #ffbf7f;" id="msg">
登録完了</p>
</div>
</body>
</html>
とっても単純ですね!ここでは、ちょっとした注意ポイントというか独特なところだけ押さえておきます。
音はBase64エンコードで変数に入れておく
Google Apps Scriptは、Google Drive上にあるファイルなどを利用することができません。なので、ファイルサーバー上にファイルを置かないのであれば、Base64に変換したファイルを変数に代入して保持する必要があります。こうするとコードが見づらくなったりするので、もし嫌な人は環境変数などに入れておくことをお勧めします。
QRコードの読み込みは秒数をちゃんと調整する
今回利用したQRコードリーダーライブラリは以下のものです。
さて、このQRコードリーダーはとても素晴らしいのですが、欠点として、きちんと制御しないと連続で何個もQRコードを読み込んでしまうことです。(逆に、これは一種類のQRコードをひたすら読み込むという場合にとても役に立つと思いますが、今回に限ってはアダとなっていまいました。)したがって、タイムアウトで読み込みを数秒間だけ停止するように設定しました。
使ってみた感想
感想は、全く意味がなかったというのが感想です。というのも、以下の問題点がありました。
- 備品のMacbookのバッテリーが1日持たないあ
- QRコードをうまく読み込めない
- 説明した人以外にもわかるようにしたはずがきちんと使い方を理解していない
はい、これらの問題があり、もちろんこちら側で対処できる問題(上二つ)はかなり実施期間中に改善したのですが、一番下だけは僕では解決できませんでした。その結果、またもや無断での持ち出しやその他の問題が発生しました。2 ここで学んだことは、「もっと機械類の利用方法をレクチャーする」でしたね、おかげさまで会長期のタスクが増えました。
最後に
今回は軽く、学校現場でのDX(もどき)に触れてみました。こんな感じでチャレンジするものの解決できない問題がまあまあ多いので、今回のアドカレのどっかで触れてみたいと思います。それでは、引き続き今後のアドカレ 23 の記事をお楽しみにしてください。