Software:Hauptseite: Unterschied zwischen den Versionen

Aus KIF
 
(3 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<div style="float:right;margin-left:40px;">__TOC__</div>
<div style="float:right;margin-left:40px;">__TOC__</div>


pintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopintopinto
= KIF-Software =
 
Zur Unterstützung der KIF wurde im Laufe der Jahre eine ganze Menge an nützlichen Tools programmiert. Damit nicht jede KIF-Orga das Rad neu erfinden muss, wollen wir auf dieser Seite eine Sammlung dieser Software erstellen.
 
== Kontakt ==
 
Eine Gruppe von Personen kümmert sich um den technischen Betrieb. Bei Fragen oder Unklarheiten zu den folgenden Diensten wendet euch bitte an die [mailto:admin@kif.rocks KIF Admins]. Bitte beachtet, die Gruppe von den Personen macht das in der Freizeit und manchmal haben Studium, Arbeit, Privatleben und andere Dinge Vorrang. Wenn Interesse daran besteht, was technisch so gemacht wird oder wenn Interesse an einer Mitwirkung besteht, dann einfach zur KIF auf den regelmäßigen Admin AK vorbeikommen oder die gerade genannte Email Adresse anschreiben.
 
== Allgemein im Rahmen der KIF angebotene Dienste ==
 
Dinge, die für die KIF und ihre KIFfel gehostet werden. Die Nutzung dieser Dienste (außer vielleicht dem Wiki) ist nicht auf die KIF begrenzt bzw. nicht KIFfeln vorenthalten. Heißt konkret: Bis auf das Wiki könnt ihr alles angebotene auch für eure Fachschaftsarbeit, Studium oder privat nutzen. Mehr Details zur Nutzung durch die Fachschaft oder privat sind auch auf einer [https://md.fachschaften.org/s/r1y2fc0H8 Informationsseite der Fachschaft Informatik der TU Dortmund] verfügbar.
 
; [//{{SERVERNAME}} KIF Wiki] (dieses Wiki) : Hier wird die "ewige Dokumentation" festgehalten. Alle in anderen Plattformen generierten Inhalten sollten in ultimo hier gespeichert werden, oder wenigstens von hier verlinkt werden. Zwischen den KIFs ist ein Account nötig, kurz vor, während und kurz nach der KIF ist auch eine anonyme Nutzung möglich.
; [https://md.kif.rocks KIF HedgeDoc] : Pads zum gemeinsamen Editieren eines Dokumentes, in Echtzeit. Die Syntax ist Markdown, es gibt aber viel mehr zusätzliche [https://md.kif.rocks/features Features] (Inline LaTeX, Code Highlighting, UML, Slides mit Präsentationsbildschirm, …). Hier ist jederzeit eine anonyme Nutzung möglich, man kann sich aber auch einen Account erstellen oder sich mit fachschaften.org-Credentials anmelden.
; [https://element.kif.rocks KIF Element] bzw. [https://matrix.kif.rocks KIF Matrix] : [https://matrix.org/docs/guides/faq.html#what-is-matrix Matrix] ist ein Protokoll zur dezentralen/föderierten Echtzeitkommunikation, insbesondere für Chat; Element (für Web, mobil und Desktop verfügbar) ist einer der aktuell Feature-komplettesten [https://matrix.org/docs/projects/try-matrix-now.html Matrix-Clients]. Hierüber können Chat-Räume und 1-on-1 Chats mit anderen Nutzern auf einem Matrix-Server geführt werden, besonders für Chat-Räume geeignet. Matrix kann auch [https://pr.blonde20.com/matrix-e2e/ E2E-Verschlüsselung], aktuell allerdings noch in (gut funktionierender) Beta. Im [https://element.kif.rocks KIF Element] kann man sich direkt einen Account klicken, Nutzer mit einem fachschaften.org-Account können auch das [https://element.fachschaften.org fachschaften.org Element] bzw. dessen [https://matrix.fachschaften.org Matrix Server] nutzen.
<div style="border:1px solid #ffa4a4; background-color:#ffa4a4; margin-left:2em; width:7em; text-align:center;"><strong>Achtung</strong></div>
<div style="border:1px solid #ffa4a4; background-color:#fff3f3; margin-left:2em; margin-right: 2em; padding-left:1ex;">
Aufgrund von Spam mussten wir die Registrierung für Matrix auf kif.rocks schließen. Bitte meldet euch bei [mailto:admin@kif.rocks admin@kif.rocks], wenn ihr einen Account haben wollt.
</div>
; [https://toot.kif.rocks KIF Mastodon] : Mastodon ist eine föderierte Micro-Blogging Plattform, siehe diese [https://gist.github.com/joyeusenoelle/74f6e6c0f349651349a0df9ae4582969 Kurz-Einführung] bzw. den [[KIF455:Mastodon_statt_Twitter?|AK]] dazu. Registrierung ist offen.
; [https://lists.kif.rocks KIF Mailinglisten] : Mailinglisten von und um die KIF, unter anderen eine Liste für Ankündigungen von kommenden KIFs und weiteren KIF-relevanten Terminen, eine Liste für Diskussionen zur KIF, und üblicherweise Listen für Teilnehmer der jeweiligen KIFs. Genauere Informationen auch unter [[Software:Mailinglisten]].
 
== Software und Dienste zur KIF-Organisation ==
 
; [https://github.com/engelsystem/engelsystem Engelsystem] : Das Engelsystem ist ein sehr praktischer Service, um die Helfer für die verschiedenen Schichten während einer KIF zu organisieren. Helfer können sich selbst im System anmelden und für die dort eingetragenen Schichten anmelden. Das Engelsystem wurde zwar ursprünglich für den C3 (Jahrestagung des CCC) entwickelt, funktioniert aber für eine KIF ebenso gut.
; [https://github.com/kif-ev/schildergenerator Schildergenerator] : Während einer KIF müssen gewöhnlicherweise eine Menge Schilder gedruckt werden. Der Schildergenerator ist ein kleines, aber sehr praktisches Tool, womit man das sehr schnell und einfach machen kann.
; [https://pretix.eu Pretix] : Ein System für Konferenz-Tickets, Merch, Zahlungen, usw. Es gibt eine Instanz, die von KIF-Orgas genutzt werden kann.
; [https://gitlab.fachschaften.org/kif/akplanning AKPlanning] : Ein Online-Tool zur Eintragung und Planung von Arbeitskreisen. Wird seit der [[KIF475:Hauptseite|KIF 47,5]] anstelle des Wikis für die Eintragung der Arbeitskreise verwendet und dient auch zur Anzeige des fertigen Plans (also als AK-Wall). Bislang wird dafür eine Instanz verwendet, die unter [https://ak.kif.rocks] gehostet wird und von den [mailto:admin@kif.rocks KIF Admins] verwaltet wird.
; [https://gitlab.fachschaften.org/kif/tebege TeBeGe] : Ein Tool zur automatisierten Erstellung von Teilnahmebescheinigungen. Lädt Daten aus Pretix und setzt diese in ein Latex-Template ein. Optional automatisierter Versand via E-Mail.
Viele dieser Dinge kann der [[Verein:Hauptseite|KIF e.V.]] für KIF-Orgas hosten, hierzu bitte die [mailto:admin@kif.rocks KIF Admins] kontaktieren.
 
== Kasse des Vertrauens ==
 
Zur komfortablen Abrechnung des Getränke- und Snachverkaufs während der KIF (Strichlisten wären ja viel zu einfach) wurde ein Kassensystem implementiert. Es besteht aus folgenden Komponenten:
 
; [https://github.com/kif-ev/oskiosk-server oskiosk-server] : Serverkomponente mit REST API. Hier werden die Benutzer und Produkte eingepflegt und die Käufe und Transaktionen erfasst.
; [https://github.com/kif-ev/oskiosk-client oskiosk-client] : Clientkomponente, die über die REST API mit dem Server kommuniziert. Bietet sowohl eine Selfservice-Ansicht für die Kaufstationen als auch eine Admin-Ansicht für die Verwaltung und Einzahlung
 
Auf der KIF wird die KdV-Software meist vom [[Verein:Hauptseite|KIF e.V.]] gehostet, hierzu bitte die [mailto:admin@kif.rocks KIF Admins] kontaktieren.
 
== Software zur Unterstützung der KIF-Plena ==
 
; [https://git.fsmpi.rwth-aachen.de/redl/redeleitsystem Redeleitsystem] : System zur Verwaltung der Redeliste
; [https://github.com/orithena/timer-impress timer-impress] : Darstellung eines Redezeit-Countdowns auf einem Beamer im Plenum
; [https://orga.fachschaften.org/projects/kif-utils/repository/show/Anfangsplenumsfachschaftsinformationsfoliengeneratorskript APFIFoGeS] : Standardisierte Darstellung von interessanten Daten einer Fachschaft im Anfangsplenum
 
== Sonstiges ==
 
; [http://moerderspiel.org/ Mörderspiel] : Online-Tool zur Unterstützung des [[Mörderspiel|Mörderspiels]]
; [https://github.com/kif-ev/kif-letter KIF-Resolutions-Brief-Generator] : Tool zur automatisierten Erstellung von Serienbriefen aus Resolutinstexten (u.A. an die Abgeordneten des Deutschen Bundestags)
; [https://github.com/auxua/ZIS ZIS] : Online-Tool für News, Plan- und Raumverwaltung. Twitter-, App- und Wiki-anbindung (import) inklusive (Aus ZKK)
; [https://github.com/auxua/ZKK-App ZKK-App] : App (WP, iOS, Android) für Ak-Pläne, Stundenplan, news, etc. mit offline-Fähigkeiten (Arbeitet mit dem ZIS zusammen - auch von der ZKK - auch noch in den App Stores zu finden)
 


= Software die es noch nicht gibt, die aber sinnvoll wären =
= Software die es noch nicht gibt, die aber sinnvoll wären =
Zeile 8: Zeile 60:


== Organisation, Selbstorganisation ==
== Organisation, Selbstorganisation ==
[[Bild:Kifplan_screenshot1.png|thumb|right|240px]]
* AK-Wall
** MVP: Die Orga kann AKs bearbeiten, für den Rest der KIF Read-only. Anzeige der Räume und Zeiten von AKs, Strich für die "aktuelle Zeit"
** Nice-to-Haves: ical Exports für einzelne AKs, ical Export für mehrere AKs (entweder mit einer anonymen Session, für 5 Tage über Cookie möglich, oder mit anmelden), falls mit Nutzerverwaltung mit der Möglichkeit für AK-Leiter AKs zu verschieben, Möglichkeit Interesse Online zu Verkünden (siehe z.B. [https://github.com/eurucamp/eurucamp-activities die eurucamp Activities App]), …
** Software der KIF 44,0 und KIF 46,5: https://github.com/d120/kifplan
* Fundsachen
* Fundsachen
** Verwaltung wann wo usw. es gefunden wurde, gegebenenfalls auch mit Notifications
** Verwaltung wann wo usw. es gefunden wurde, gegebenenfalls auch mit Notifications


''Kursiver Text''== Kommunikation ==
== Kommunikation ==


* HinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHinternHintern
* Push Notifications für Orgas an Teilnehmer, über Web Push Notifications halbwegs Browser- und Geräte-übergreifend lösbar
** Falls eine Push Notification Infrastruktur vorliegt können auch andere Sachen gepusht werden: Änderungen an den von mir ausgewählten AKs, Erinnerung an baldige AKs, Notifs bei niedrigem Bestand von

Aktuelle Version vom 8. November 2021, 17:06 Uhr

KIF-Software[Bearbeiten]

Zur Unterstützung der KIF wurde im Laufe der Jahre eine ganze Menge an nützlichen Tools programmiert. Damit nicht jede KIF-Orga das Rad neu erfinden muss, wollen wir auf dieser Seite eine Sammlung dieser Software erstellen.

Kontakt[Bearbeiten]

Eine Gruppe von Personen kümmert sich um den technischen Betrieb. Bei Fragen oder Unklarheiten zu den folgenden Diensten wendet euch bitte an die KIF Admins. Bitte beachtet, die Gruppe von den Personen macht das in der Freizeit und manchmal haben Studium, Arbeit, Privatleben und andere Dinge Vorrang. Wenn Interesse daran besteht, was technisch so gemacht wird oder wenn Interesse an einer Mitwirkung besteht, dann einfach zur KIF auf den regelmäßigen Admin AK vorbeikommen oder die gerade genannte Email Adresse anschreiben.

Allgemein im Rahmen der KIF angebotene Dienste[Bearbeiten]

Dinge, die für die KIF und ihre KIFfel gehostet werden. Die Nutzung dieser Dienste (außer vielleicht dem Wiki) ist nicht auf die KIF begrenzt bzw. nicht KIFfeln vorenthalten. Heißt konkret: Bis auf das Wiki könnt ihr alles angebotene auch für eure Fachschaftsarbeit, Studium oder privat nutzen. Mehr Details zur Nutzung durch die Fachschaft oder privat sind auch auf einer Informationsseite der Fachschaft Informatik der TU Dortmund verfügbar.

KIF Wiki (dieses Wiki)
Hier wird die "ewige Dokumentation" festgehalten. Alle in anderen Plattformen generierten Inhalten sollten in ultimo hier gespeichert werden, oder wenigstens von hier verlinkt werden. Zwischen den KIFs ist ein Account nötig, kurz vor, während und kurz nach der KIF ist auch eine anonyme Nutzung möglich.
KIF HedgeDoc
Pads zum gemeinsamen Editieren eines Dokumentes, in Echtzeit. Die Syntax ist Markdown, es gibt aber viel mehr zusätzliche Features (Inline LaTeX, Code Highlighting, UML, Slides mit Präsentationsbildschirm, …). Hier ist jederzeit eine anonyme Nutzung möglich, man kann sich aber auch einen Account erstellen oder sich mit fachschaften.org-Credentials anmelden.
KIF Element bzw. KIF Matrix
Matrix ist ein Protokoll zur dezentralen/föderierten Echtzeitkommunikation, insbesondere für Chat; Element (für Web, mobil und Desktop verfügbar) ist einer der aktuell Feature-komplettesten Matrix-Clients. Hierüber können Chat-Räume und 1-on-1 Chats mit anderen Nutzern auf einem Matrix-Server geführt werden, besonders für Chat-Räume geeignet. Matrix kann auch E2E-Verschlüsselung, aktuell allerdings noch in (gut funktionierender) Beta. Im KIF Element kann man sich direkt einen Account klicken, Nutzer mit einem fachschaften.org-Account können auch das fachschaften.org Element bzw. dessen Matrix Server nutzen.
Achtung

Aufgrund von Spam mussten wir die Registrierung für Matrix auf kif.rocks schließen. Bitte meldet euch bei admin@kif.rocks, wenn ihr einen Account haben wollt.

KIF Mastodon
Mastodon ist eine föderierte Micro-Blogging Plattform, siehe diese Kurz-Einführung bzw. den AK dazu. Registrierung ist offen.
KIF Mailinglisten
Mailinglisten von und um die KIF, unter anderen eine Liste für Ankündigungen von kommenden KIFs und weiteren KIF-relevanten Terminen, eine Liste für Diskussionen zur KIF, und üblicherweise Listen für Teilnehmer der jeweiligen KIFs. Genauere Informationen auch unter Software:Mailinglisten.

Software und Dienste zur KIF-Organisation[Bearbeiten]

Engelsystem
Das Engelsystem ist ein sehr praktischer Service, um die Helfer für die verschiedenen Schichten während einer KIF zu organisieren. Helfer können sich selbst im System anmelden und für die dort eingetragenen Schichten anmelden. Das Engelsystem wurde zwar ursprünglich für den C3 (Jahrestagung des CCC) entwickelt, funktioniert aber für eine KIF ebenso gut.
Schildergenerator
Während einer KIF müssen gewöhnlicherweise eine Menge Schilder gedruckt werden. Der Schildergenerator ist ein kleines, aber sehr praktisches Tool, womit man das sehr schnell und einfach machen kann.
Pretix
Ein System für Konferenz-Tickets, Merch, Zahlungen, usw. Es gibt eine Instanz, die von KIF-Orgas genutzt werden kann.
AKPlanning
Ein Online-Tool zur Eintragung und Planung von Arbeitskreisen. Wird seit der KIF 47,5 anstelle des Wikis für die Eintragung der Arbeitskreise verwendet und dient auch zur Anzeige des fertigen Plans (also als AK-Wall). Bislang wird dafür eine Instanz verwendet, die unter [1] gehostet wird und von den KIF Admins verwaltet wird.
TeBeGe
Ein Tool zur automatisierten Erstellung von Teilnahmebescheinigungen. Lädt Daten aus Pretix und setzt diese in ein Latex-Template ein. Optional automatisierter Versand via E-Mail.

Viele dieser Dinge kann der KIF e.V. für KIF-Orgas hosten, hierzu bitte die KIF Admins kontaktieren.

Kasse des Vertrauens[Bearbeiten]

Zur komfortablen Abrechnung des Getränke- und Snachverkaufs während der KIF (Strichlisten wären ja viel zu einfach) wurde ein Kassensystem implementiert. Es besteht aus folgenden Komponenten:

oskiosk-server
Serverkomponente mit REST API. Hier werden die Benutzer und Produkte eingepflegt und die Käufe und Transaktionen erfasst.
oskiosk-client
Clientkomponente, die über die REST API mit dem Server kommuniziert. Bietet sowohl eine Selfservice-Ansicht für die Kaufstationen als auch eine Admin-Ansicht für die Verwaltung und Einzahlung

Auf der KIF wird die KdV-Software meist vom KIF e.V. gehostet, hierzu bitte die KIF Admins kontaktieren.

Software zur Unterstützung der KIF-Plena[Bearbeiten]

Redeleitsystem
System zur Verwaltung der Redeliste
timer-impress
Darstellung eines Redezeit-Countdowns auf einem Beamer im Plenum
APFIFoGeS
Standardisierte Darstellung von interessanten Daten einer Fachschaft im Anfangsplenum

Sonstiges[Bearbeiten]

Mörderspiel
Online-Tool zur Unterstützung des Mörderspiels
KIF-Resolutions-Brief-Generator
Tool zur automatisierten Erstellung von Serienbriefen aus Resolutinstexten (u.A. an die Abgeordneten des Deutschen Bundestags)
ZIS
Online-Tool für News, Plan- und Raumverwaltung. Twitter-, App- und Wiki-anbindung (import) inklusive (Aus ZKK)
ZKK-App
App (WP, iOS, Android) für Ak-Pläne, Stundenplan, news, etc. mit offline-Fähigkeiten (Arbeitet mit dem ZIS zusammen - auch von der ZKK - auch noch in den App Stores zu finden)


Software die es noch nicht gibt, die aber sinnvoll wären[Bearbeiten]

Dinge, die man mit Software lösen könnte, die es aber noch nicht sind

Organisation, Selbstorganisation[Bearbeiten]

  • Fundsachen
    • Verwaltung wann wo usw. es gefunden wurde, gegebenenfalls auch mit Notifications

Kommunikation[Bearbeiten]

  • Push Notifications für Orgas an Teilnehmer, über Web Push Notifications halbwegs Browser- und Geräte-übergreifend lösbar
    • Falls eine Push Notification Infrastruktur vorliegt können auch andere Sachen gepusht werden: Änderungen an den von mir ausgewählten AKs, Erinnerung an baldige AKs, Notifs bei niedrigem Bestand von